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

mobile view, missing trends + people + filter

parent 4d286c3d
No related branches found
No related tags found
1 merge request!49mobile view, missing trends + people + filter
Pipeline #40024 passed
Showing
with 70 additions and 19 deletions
...@@ -69,7 +69,7 @@ export default async function GameDetail({ params }: { params: { gameid: string ...@@ -69,7 +69,7 @@ export default async function GameDetail({ params }: { params: { gameid: string
<div className="flex flex-col space-y-6 justify-start p-6"> <div className="flex flex-col space-y-6 justify-start p-6">
{user && {user &&
<> <>
< AddGameDropdown fullUser={fullUser!} gameid={params.gameid} /> <AddGameDropdown fullUser={fullUser!} gameid={params.gameid} />
<AddGameToFavList userGameList={fullUser?.favGameList!} gameId={params.gameid} /> <AddGameToFavList userGameList={fullUser?.favGameList!} gameId={params.gameid} />
</> </>
} }
......
import { Header } from "@/components/nav-header" import { Header } from "@/components/nav-header"
import { MobileNav } from "@/components/nav-mobile"
import { Sidebar } from "@/components/nav-sidebar" import { Sidebar } from "@/components/nav-sidebar"
import { dashboardConfig } from "@/lib/config/dashboard" import { dashboardConfig } from "@/lib/config/dashboard"
import { getCurrentUser } from "@/lib/session" import { getCurrentUser } from "@/lib/session"
...@@ -14,12 +15,16 @@ export default async function ContentLayout({ ...@@ -14,12 +15,16 @@ export default async function ContentLayout({
<main className="flex min-h-screen flex-col md:space-y-6 align-middle"> <main className="flex min-h-screen flex-col md:space-y-6 align-middle">
<Header user={user} /> <Header user={user} />
<div className="md:container grid flex-1 gap-12 grid-cols-5"> <div className="md:container grid flex-1 md:gap-12 grid-cols-5">
<aside className="self-start sticky top-[89px] hidden md:col-span-1 md:block"> <aside className="self-start sticky top-[89px] hidden md:col-span-1 md:block">
<Sidebar items={dashboardConfig.sidebarNav} user={user} /> <Sidebar items={dashboardConfig.sidebarNav} user={user} />
</aside> </aside>
<div className="flex flex-1 flex-col w-full h-full col-span-5 md:col-span-4 md:pb-6"> <div className="flex flex-1 flex-col w-full h-full col-span-5 md:col-span-4 mb-16 md:pb-6">
{children} {children}
<div className="md:hidden fixed bottom-0 left-0 z-50 w-full h-16 bg-background border-t">
<MobileNav items={dashboardConfig.sidebarNav} user={user} />
</div>
</div> </div>
</div> </div>
</main> </main>
......
...@@ -53,6 +53,13 @@ export const metadata = { ...@@ -53,6 +53,13 @@ export const metadata = {
{ media: "(prefers-color-scheme: light)", color: "white" }, { media: "(prefers-color-scheme: light)", color: "white" },
{ media: "(prefers-color-scheme: dark)", color: "black" }, { media: "(prefers-color-scheme: dark)", color: "black" },
], ],
metadataBase: new URL(siteConfig.url),
alternates: {
canonical: '/',
languages: {
'en-US': '/en-US',
},
},
openGraph: { openGraph: {
type: "website", type: "website",
locale: "en_US", locale: "en_US",
......
app/opengraph-image.png

3.8 MiB

app/twitter-image.png

3.8 MiB

...@@ -13,7 +13,7 @@ export default function AddGameDropdown(props: { gameid: string, fullUser: User ...@@ -13,7 +13,7 @@ export default function AddGameDropdown(props: { gameid: string, fullUser: User
<SelectValue placeholder="Status" /> <SelectValue placeholder="Status" />
</SelectTrigger> </SelectTrigger>
<SelectContent> <SelectContent>
<SelectGroup> <SelectGroup className="space-y-3 w-full">
<AddGameToPlanList user={props.fullUser!} gameId={props.gameid} /> <AddGameToPlanList user={props.fullUser!} gameId={props.gameid} />
<AddGameToFinishedList user={props.fullUser!} gameId={props.gameid} /> <AddGameToFinishedList user={props.fullUser!} gameId={props.gameid} />
<AddGameToPlayingList user={props.fullUser!} gameId={props.gameid} /> <AddGameToPlayingList user={props.fullUser!} gameId={props.gameid} />
......
...@@ -65,12 +65,12 @@ export default function AddGameToFinishedList(props: { gameId: string, user: Use ...@@ -65,12 +65,12 @@ export default function AddGameToFinishedList(props: { gameId: string, user: Use
} }
let button = <div></div> let button = <></>
try { try {
if (!props.user.finishedGameList.includes(parseFloat(props.gameId))) { if (!props.user.finishedGameList.includes(parseFloat(props.gameId))) {
button = ( button = (
<form onSubmit={addGame}> <form onSubmit={addGame}>
<Button type="submit" size="lg" variant="ghost"> <Button type="submit" size="lg" variant="ghost" className="w-full justify-start">
Set as Finished Set as Finished
</Button> </Button>
</form> </form>
...@@ -78,7 +78,7 @@ export default function AddGameToFinishedList(props: { gameId: string, user: Use ...@@ -78,7 +78,7 @@ export default function AddGameToFinishedList(props: { gameId: string, user: Use
} else { } else {
button = ( button = (
<form onSubmit={removeGame}> <form onSubmit={removeGame}>
<Button type="submit" size="lg" variant="ghost"> <Button type="submit" size="lg" variant="ghost" className="w-full justify-start text-destructive">
Unset Finished Unset Finished
</Button> </Button>
</form> </form>
......
...@@ -65,12 +65,12 @@ export default function AddGameToPlanList(props: { gameId: string, user: User }) ...@@ -65,12 +65,12 @@ export default function AddGameToPlanList(props: { gameId: string, user: User })
} }
let button = <div></div> let button = <></>
try { try {
if (!props.user.planningGameList.includes(parseFloat(props.gameId))) { if (!props.user.planningGameList.includes(parseFloat(props.gameId))) {
button = ( button = (
<form onSubmit={addGame}> <form onSubmit={addGame}>
<Button type="submit" size="lg" variant={"ghost"}> <Button type="submit" size="lg" variant={"ghost"} className="w-full justify-start">
Set as Planning Set as Planning
</Button> </Button>
</form> </form>
...@@ -78,7 +78,7 @@ export default function AddGameToPlanList(props: { gameId: string, user: User }) ...@@ -78,7 +78,7 @@ export default function AddGameToPlanList(props: { gameId: string, user: User })
} else { } else {
button = ( button = (
<form onSubmit={removeGame}> <form onSubmit={removeGame}>
<Button type="submit" size="lg" variant={"ghost"}> <Button type="submit" size="lg" variant={"ghost"} className="w-full justify-start text-destructive">
Unset Planning Unset Planning
</Button> </Button>
</form> </form>
......
...@@ -65,12 +65,12 @@ export default function AddGameToPlayingList(props: { gameId: string, user: User ...@@ -65,12 +65,12 @@ export default function AddGameToPlayingList(props: { gameId: string, user: User
} }
let button = <div></div> let button = <></>
try { try {
if (!props.user.playingGameList.includes(parseFloat(props.gameId))) { if (!props.user.playingGameList.includes(parseFloat(props.gameId))) {
button = ( button = (
<form onSubmit={addGame}> <form onSubmit={addGame}>
<Button type="submit" size="lg" variant={"ghost"}> <Button type="submit" size="lg" variant={"ghost"} className="w-full justify-start">
Set as Playing Set as Playing
</Button> </Button>
</form> </form>
...@@ -78,7 +78,7 @@ export default function AddGameToPlayingList(props: { gameId: string, user: User ...@@ -78,7 +78,7 @@ export default function AddGameToPlayingList(props: { gameId: string, user: User
} else { } else {
button = ( button = (
<form onSubmit={removeGame}> <form onSubmit={removeGame}>
<Button type="submit" size="lg" variant={"ghost"}> <Button type="submit" size="lg" variant={"ghost"} className="w-full justify-start text-destructive">
Unset Playing Unset Playing
</Button> </Button>
</form> </form>
......
...@@ -52,7 +52,7 @@ export default function AddGameToFavList(props: { userGameList: Number[], gameId ...@@ -52,7 +52,7 @@ export default function AddGameToFavList(props: { userGameList: Number[], gameId
if (!props.userGameList.includes(parseFloat(props.gameId))) { if (!props.userGameList.includes(parseFloat(props.gameId))) {
button = ( button = (
<form onSubmit={addGame}> <form onSubmit={addGame}>
<Button type="submit" size="lg"> <Button type="submit" size="lg" className="w-full">
Add To Favorites Add To Favorites
</Button> </Button>
</form> </form>
...@@ -60,7 +60,7 @@ export default function AddGameToFavList(props: { userGameList: Number[], gameId ...@@ -60,7 +60,7 @@ export default function AddGameToFavList(props: { userGameList: Number[], gameId
} else { } else {
button = ( button = (
<form onSubmit={removeGame}> <form onSubmit={removeGame}>
<Button type="submit" size="lg" variant={"secondary"}> <Button type="submit" size="lg" variant="secondary" className="w-full">
Remove From Favorites Remove From Favorites
</Button> </Button>
</form> </form>
......
"use client"
import { Icons } from "@/components/icons"
import { cn } from "@/lib/utils"
import { SidebarNavItem } from "@/types"
import { User } from "next-auth"
import Link from "next/link"
import { usePathname } from "next/navigation"
import { Button } from "./ui/button"
export const MobileNav = ({ items, user }: { items: SidebarNavItem[], user: User | undefined }) => {
const path = usePathname()
if (!items?.length) {
return null
}
const visibleItems = user ? items : items.slice(0, 2)
return (
<nav className={`grid h-full max-w-lg grid-cols-${items.length} justify-between mx-auto`}>
{visibleItems.map((item, index) => {
const Icon = Icons[item.icon || "arrowRight"]
if (item.title === "My Profile") {
item.href = `/${user?.username}`
}
return (
item.href && (
<Link key={index} href={item.disabled ? "/" : item.href} className="inline-flex items-center justify-center">
<Button variant={`${path.startsWith(item.href) ? "secondary" : "ghost"}`} size="logo">
<Icon />
</Button>
</Link>
)
)
})}
</nav>
)
}
\ No newline at end of file
...@@ -27,7 +27,7 @@ export function UserAccountDropdown({ user }: UserAccountNavProps) { ...@@ -27,7 +27,7 @@ export function UserAccountDropdown({ user }: UserAccountNavProps) {
className="h-8 w-8 shadow-none focus:shadow-none" className="h-8 w-8 shadow-none focus:shadow-none"
/> />
</DropdownMenuTrigger> </DropdownMenuTrigger>
<DropdownMenuContent align="end"> <DropdownMenuContent align="end" className="mt-1">
<div className="flex items-center justify-start gap-2 p-2"> <div className="flex items-center justify-start gap-2 p-2">
<div className="flex flex-col space-y-1 leading-none"> <div className="flex flex-col space-y-1 leading-none">
{user.name && <p className="font-medium">{user.name}</p>} {user.name && <p className="font-medium">{user.name}</p>}
......
...@@ -5,5 +5,5 @@ export const siteConfig: SiteConfig = { ...@@ -5,5 +5,5 @@ export const siteConfig: SiteConfig = {
description: description:
"Your social media for game tracking needs, so you can finally get an overview of your games. Built using the new router, server components and everything new in Next.js 13.", "Your social media for game tracking needs, so you can finally get an overview of your games. Built using the new router, server components and everything new in Next.js 13.",
url: "https://gameunity.vercel.app/", url: "https://gameunity.vercel.app/",
ogImage: "", ogImage: "https://gameunity.vercel.app/og.png",
} }
\ No newline at end of file
{ {
"name": "project_ss23_gameunity", "name": "project_ss23_gameunity",
"version": "0.2.0", "version": "0.3.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "project_ss23_gameunity", "name": "project_ss23_gameunity",
"version": "0.2.0", "version": "0.3.0",
"hasInstallScript": true, "hasInstallScript": true,
"dependencies": { "dependencies": {
"@auth/prisma-adapter": "^1.0.1", "@auth/prisma-adapter": "^1.0.1",
......
public/apple-icon.png

4.55 KiB

public/favicon-16x16.png

646 B

public/favicon-32x32.png

1007 B

public/favicon.ico

25.3 KiB | W: 256px | H: 256px

public/favicon.ico

15.3 KiB | W: 256px | H: 256px

public/favicon.ico
public/favicon.ico
public/favicon.ico
public/favicon.ico
  • 2-up
  • Swipe
  • Onion skin
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