返回 presentation-ai
page.tsx
根目录 / src / app / auth / signout / page.tsx
1 "use client";
2
3 import { Button } from "@/components/ui/button";
4 import {
5 Card,
6 CardContent,
7 CardDescription,
8 CardHeader,
9 CardTitle,
10 } from "@/components/ui/card";
11 import { signOut } from "next-auth/react";
12 import { useRouter, useSearchParams } from "next/navigation";
13
14 export default function SignOut() {
15 const router = useRouter();
16 const searchParams = useSearchParams();
17 const callbackUrl = searchParams.get("callbackUrl") ?? "/";
18
19 const handleSignOut = async () => {
20 await signOut({ callbackUrl });
21 };
22
23 const handleCancel = () => {
24 router.push(callbackUrl);
25 };
26
27 return (
28 <div className="flex min-h-screen items-center justify-center bg-gray-50 dark:bg-slate-900 px-4">
29 <Card className="w-full max-w-md shadow-lg">
30 <CardHeader className="space-y-1 text-center">
31 <CardTitle className="text-2xl font-bold">Sign Out</CardTitle>
32 <CardDescription>Are you sure you want to sign out?</CardDescription>
33 </CardHeader>
34 <CardContent className="grid gap-4">
35 <div className="flex flex-col space-y-4">
36 <Button onClick={handleSignOut}>Yes, sign me out</Button>
37 <Button variant="outline" onClick={handleCancel}>
38 No, take me back
39 </Button>
40 </div>
41 </CardContent>
42 </Card>
43 </div>
44 );
45 }
46
46 lines Plain Text