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 {
children: React.ReactNode
}
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 { GameUnityLogo } from '@/components/logo'
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 { cn } from '@/lib/utils'
import Link from 'next/link'
export const metadata = {
......@@ -12,39 +9,32 @@ export const metadata = {
export default function LoginPage() {
return (
<div className="container flex min-h-screen w-screen flex-col items-center justify-center">
<Link
href="/"
className={cn(
buttonVariants({ variant: "ghost" }),
"absolute left-4 top-4 md:left-8 md:top-8"
)}
>
<>
<Icons.chevronLeft />
Back
</>
</Link>
<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">
Welcome back
</h1>
<p className="text-sm text-muted-foreground">
Enter your email to sign in to your account
</p>
</div>
<UserAuthForm type='login' />
<p className="px-8 text-center text-sm text-muted-foreground">
<Link
href="/signup"
className="hover:text-brand underline underline-offset-4"
>
Don&apos;t have an account? Sign Up
</Link>
</p>
</div>
<div className="container grid items-center gap-8 pb-8 pt-6 md:py-8 max-w-lg">
<Card>
<CardHeader className="space-y-1">
<CardTitle className="text-2xl">Sign in</CardTitle>
<CardDescription>
Choose your preferred sign in method
</CardDescription>
</CardHeader>
<CardContent className="grid gap-4">
<UserAuthForm type='login' />
</CardContent>
<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">
Don&apos;t have an account?
</span>
<Link
aria-label="Sign up"
href="/signup"
className="text-primary underline-offset-4 transition-colors hover:underline"
>
Sign up
</Link>
</div>
</CardFooter>
</Card>
</div>
)
}
\ No newline at end of file
import { Icons } from '@/components/icons'
import { GameUnityLogo } from '@/components/logo'
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 { cn } from '@/lib/utils'
import Link from 'next/link'
......@@ -12,61 +12,32 @@ export const metadata = {
export default function SignupPage() {
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">
<Link
href="/"
className={cn(
buttonVariants({ variant: "ghost" }),
"absolute left-4 top-4 md:left-8 md:top-8"
)}
>
<>
<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>
<div className="container grid items-center gap-8 pb-8 pt-6 md:py-8 max-w-lg">
<Card>
<CardHeader className="space-y-1">
<CardTitle className="text-2xl">Sign up</CardTitle>
<CardDescription>
Give yourself a username, enter your email and password below to create an account
</CardDescription>
</CardHeader>
<CardContent className="grid gap-4">
<UserAuthForm type='signup' />
<p className="px-8 text-center text-sm text-muted-foreground">
By clicking continue, you agree to our{" "}
</CardContent>
<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
href="/terms"
className="hover:text-brand underline underline-offset-4"
aria-label="Sign in"
href="/login"
className="text-primary underline-offset-4 transition-colors hover:underline"
>
Terms of Service
</Link>{" "}
and{" "}
<Link
href="/privacy"
className="hover:text-brand underline underline-offset-4"
>
Privacy Policy
Sign in
</Link>
.
</p>
</div>
</div>
</div>
</CardFooter>
</Card>
</div>
)
}
\ No newline at end of file
import { GameUnityLogo } from "@/components/logo"
import { buttonVariants } from "@/components/ui/button"
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/components/ui/card'
import { cn } from "@/lib/utils"
import Link from "next/link"
export default function EmailVerification() {
return (
<div className="container flex max-w-[64rem] flex-col items-center gap-4 text-center">
<div className="flex items-center">
<Link href="/home" className={cn("rounded-full p-3 hover:bg-accent")}>
<GameUnityLogo className="h-10 w-10" />
</Link>
</div>
<p className="max-w-[42rem] leading-normal sm:text-xl sm:leading-8">
Your Email has been Verified and your Account was Activated <br /> You can now login
</p>
<div className="align-middle">
<Link href="/login" className={cn(buttonVariants({ size: "lg" }), "mr-6")}>
Login
</Link>
</div>
<div className="container grid items-center gap-8 pb-8 pt-6 md:py-8 max-w-lg">
<Card>
<CardHeader className="space-y-1">
<CardTitle className="text-2xl">Email Verified</CardTitle>
<CardDescription>
<span>Your Email has been Verified and your Account was Activated.</span>
</CardDescription>
</CardHeader>
<CardContent className="grid gap-4 pt-6">
<span>You can now continue to login.</span>
<Link href="/login" className={cn(buttonVariants())} type="submit">
Login
</Link>
</CardContent>
</Card>
</div>
)
}
\ No newline at end of file
......@@ -20,7 +20,7 @@ export default async function GameDetail({ params }: { params: { gameid: string
if (!data[0]) return <TryAgain />
// 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 fullUser = await db.user.findFirst({
......@@ -50,7 +50,7 @@ export default async function GameDetail({ params }: { params: { gameid: string
<AspectRatio ratio={889 / 500}>
<Image
src={data[0].screenshots[0]?.url ?? ""}
alt={data[0].name}
alt={data[0].name ?? ""}
fill
priority
className="object-center" />
......@@ -60,8 +60,8 @@ export default async function GameDetail({ params }: { params: { gameid: string
<div className="aspect-[264/374]">
<Card className="aspect-[264/374] relative block group -mt-36 w-52 flex-shrink-0">
<Image
src={data[0].cover.url}
alt={data[0].name}
src={data[0].cover.url ?? ""}
alt={data[0].name ?? ""}
fill
priority
className="object-cover rounded-lg" />
......@@ -77,29 +77,35 @@ export default async function GameDetail({ params }: { params: { gameid: string
</div>
<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>
<h1 className="text-2xl font-bold">{data[0].name ?? ""}</h1>
{date && companies &&
<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>
{data[0].genres && data[0].genres.length === 0 &&
<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>
{data[0].platforms && data[0].platforms.length === 0 &&
<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>
......
......@@ -25,7 +25,7 @@ export default function SearchInput({ className, ...props }: DocsSearchProps) {
function onSearch(event: React.FormEvent) {
event.preventDefault()
if (pathname === "/games") {
if (pathname.startsWith("/games")) {
if (!searchQuery) {
router.push(pathname)
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