Skip to content

Commit 8edcfcb

Browse files
committed
feat: logout btn
1 parent dd3b0eb commit 8edcfcb

File tree

3 files changed

+60
-43
lines changed

3 files changed

+60
-43
lines changed

app/(protected)/borrows/page.tsx

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -69,29 +69,31 @@ export default async function Borrows({
6969

7070
return (
7171
<div className="space-y-4">
72-
<h1 className="text-2xl font-semibold">Borrows</h1>
73-
<div className="flex justify-between items-center">
74-
<Breadcrumb>
75-
<BreadcrumbList>
76-
<BreadcrumbItem>
77-
<Link href="/" passHref legacyBehavior>
78-
<BreadcrumbLink>Home</BreadcrumbLink>
79-
</Link>
80-
</BreadcrumbItem>
81-
<BreadcrumbSeparator />
72+
<nav className="backdrop-blur sticky top-0 z-10">
73+
<h1 className="text-2xl font-semibold">Borrows</h1>
74+
<div className="flex justify-between items-center">
75+
<Breadcrumb>
76+
<BreadcrumbList>
77+
<BreadcrumbItem>
78+
<Link href="/" passHref legacyBehavior>
79+
<BreadcrumbLink>Home</BreadcrumbLink>
80+
</Link>
81+
</BreadcrumbItem>
82+
<BreadcrumbSeparator />
8283

83-
<BreadcrumbItem>
84-
<BreadcrumbPage>Borrows</BreadcrumbPage>
85-
</BreadcrumbItem>
86-
</BreadcrumbList>
87-
</Breadcrumb>
88-
<Button asChild>
89-
<Link href="/borrows/new">
90-
<Book className="mr-2 h-4 w-4" />
91-
New Borrow
92-
</Link>
93-
</Button>
94-
</div>
84+
<BreadcrumbItem>
85+
<BreadcrumbPage>Borrows</BreadcrumbPage>
86+
</BreadcrumbItem>
87+
</BreadcrumbList>
88+
</Breadcrumb>
89+
<Button asChild>
90+
<Link href="/borrows/new">
91+
<Book className="mr-2 h-4 w-4" />
92+
New Borrow
93+
</Link>
94+
</Button>
95+
</div>
96+
</nav>
9597
<div className="grid gap-4 md:grid-cols-2 lg:grid-cols-3">
9698
{res.data.map((borrow) => (
9799
<ListCardBorrow key={borrow.id} borrow={borrow} />

app/(protected)/subscriptions/page.tsx

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -76,26 +76,28 @@ export default async function Subscriptions({
7676

7777
return (
7878
<div className="space-y-4">
79-
<h1 className="text-2xl font-semibold">Subscriptions</h1>
80-
<div className="flex justify-between items-center">
81-
<Breadcrumb>
82-
<BreadcrumbList>
83-
<BreadcrumbItem>
84-
<Link href="/" passHref legacyBehavior>
85-
<BreadcrumbLink>Home</BreadcrumbLink>
86-
</Link>
87-
</BreadcrumbItem>
88-
<BreadcrumbSeparator />
79+
<nav className="backdrop-blur sticky top-0 z-10">
80+
<h1 className="text-2xl font-semibold">Subscriptions</h1>
81+
<div className="flex justify-between items-center">
82+
<Breadcrumb>
83+
<BreadcrumbList>
84+
<BreadcrumbItem>
85+
<Link href="/" passHref legacyBehavior>
86+
<BreadcrumbLink>Home</BreadcrumbLink>
87+
</Link>
88+
</BreadcrumbItem>
89+
<BreadcrumbSeparator />
8990

90-
<BreadcrumbItem>
91-
<BreadcrumbPage>Subscriptions</BreadcrumbPage>
92-
</BreadcrumbItem>
93-
</BreadcrumbList>
94-
</Breadcrumb>
95-
<Button asChild>
96-
<Link href="/subscriptions/new">New Subscription</Link>
97-
</Button>
98-
</div>
91+
<BreadcrumbItem>
92+
<BreadcrumbPage>Subscriptions</BreadcrumbPage>
93+
</BreadcrumbItem>
94+
</BreadcrumbList>
95+
</Breadcrumb>
96+
<Button asChild>
97+
<Link href="/subscriptions/new">New Subscription</Link>
98+
</Button>
99+
</div>
100+
</nav>
99101

100102
<Table>
101103
{/* <TableCaption>List of books available in the library.</TableCaption> */}

app/page.tsx

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
import { Button } from '@/components/ui/button'
1313
import { IsLoggedIn } from '@/lib/firebase/firebase'
1414
import Landing from '@/components/landing'
15+
import { cookies } from 'next/headers'
1516

1617
const menuItems = [
1718
{ title: 'Dashboard', icon: ChartSpline, href: '/dashboard', level: 3 },
@@ -42,6 +43,13 @@ const menuItems = [
4243
// { title: 'My Borrows', icon: BookCopy, href: '/borrows/me', level: 2 },
4344
]
4445

46+
async function logoutAction() {
47+
'use server'
48+
const cookieStore = await cookies()
49+
const sessionName = process.env.SESSION_COOKIE_NAME as string
50+
cookieStore.delete(sessionName)
51+
}
52+
4553
export default async function LibraryDashboard() {
4654
const claim = await IsLoggedIn()
4755

@@ -62,8 +70,13 @@ export default async function LibraryDashboard() {
6270

6371
return (
6472
<main className="min-h-screen p-8">
65-
<div className="max-w-2xl mx-auto">
66-
<h1 className="text-2xl font-bold mb-8">Librarease</h1>
73+
<div className="max-w-2xl mx-auto space-y-4">
74+
<div className="flex justify-between items-center">
75+
<h1 className="text-2xl font-bold">Librarease</h1>
76+
<Button variant="ghost" onClick={logoutAction}>
77+
Logout
78+
</Button>
79+
</div>
6780
<div className="grid gap-4 md:grid-cols-2 lg:grid-cols-3">
6881
{menuItems.map((item) => {
6982
if (item.level > userLvl) return null

0 commit comments

Comments
 (0)