From f68e290f58f5cbf7ee81045161e819feb211ce2d Mon Sep 17 00:00:00 2001 From: Sergey Elpashev Date: Mon, 3 Feb 2025 12:29:10 +0300 Subject: [PATCH] Feat: using router and added footer --- src/app/admin/login/page.tsx | 7 +++++-- src/app/admin/page.tsx | 2 +- src/app/admin/panel/layout.tsx | 12 +++++++++++- src/app/admin/panel/panel.module.scss | 6 ++++++ 4 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 src/app/admin/panel/panel.module.scss diff --git a/src/app/admin/login/page.tsx b/src/app/admin/login/page.tsx index 6bbea86..9c6e0eb 100644 --- a/src/app/admin/login/page.tsx +++ b/src/app/admin/login/page.tsx @@ -2,7 +2,7 @@ import { Button, Card, Flex, PasswordInput, Stack, Text, TextInput } from "@mantine/core"; import { hasLength, useForm } from "@mantine/form"; import { signIn } from "next-auth/react"; -import { redirect } from "next/navigation"; +import { useRouter } from "next/navigation"; interface FormValues { name: string; @@ -10,6 +10,7 @@ interface FormValues { } export default function LoginPage() { + const router = useRouter(); const form = useForm({ mode: "uncontrolled", initialValues: { @@ -37,8 +38,10 @@ export default function LoginPage() { form.setErrors({ name: `Unknown error: ${res.status}`, }); + } else if (res && res.ok) { + router.push("/admin/panel"); } else { - redirect("/admin/panel"); + form.setErrors({ name: "Unknown error" }); } }; diff --git a/src/app/admin/page.tsx b/src/app/admin/page.tsx index e0bf75a..cdee47d 100644 --- a/src/app/admin/page.tsx +++ b/src/app/admin/page.tsx @@ -3,7 +3,7 @@ import { redirect } from "next/navigation"; const AdminPage = () => { - return redirect("/admin/panel"); + redirect("/admin/panel"); }; export default AdminPage; diff --git a/src/app/admin/panel/layout.tsx b/src/app/admin/panel/layout.tsx index d38236a..2be54a6 100644 --- a/src/app/admin/panel/layout.tsx +++ b/src/app/admin/panel/layout.tsx @@ -2,7 +2,9 @@ import { ActionIcon, AppShell, Burger, Button, Flex, Group, Skeleton, useMantineColorScheme } from "@mantine/core"; import { useDisclosure } from "@mantine/hooks"; import { signOut } from "next-auth/react"; +import { useRouter } from "next/navigation"; import { LuMoon, LuSun } from "react-icons/lu"; +import classes from "./panel.module.scss"; const AdminPanelLayout = ({ children, }: Readonly<{ @@ -10,9 +12,14 @@ const AdminPanelLayout = ({ }>) => { const [opened, { toggle }] = useDisclosure(); const { setColorScheme, colorScheme } = useMantineColorScheme(); + const router = useRouter(); const changeColorScheme = () => { setColorScheme(colorScheme === "light" ? "dark" : "light"); }; + const handleSignOut = async () => { + const data = await signOut({ redirect: false, callbackUrl: "/" }); + router.push(data.url); + }; return ( @@ -32,11 +39,14 @@ const AdminPanelLayout = ({ .map((_, index) => ( ))} - {children} + +
Test
{" "} +
); }; diff --git a/src/app/admin/panel/panel.module.scss b/src/app/admin/panel/panel.module.scss new file mode 100644 index 0000000..3c2b155 --- /dev/null +++ b/src/app/admin/panel/panel.module.scss @@ -0,0 +1,6 @@ +@media(min-width: 48em) { + .footer { + margin-inline-start: var(--app-shell-navbar-width); + width: calc(100vw - var(--app-shell-navbar-width)); + } +} \ No newline at end of file