finally building

This commit is contained in:
Om Lanke
2025-07-02 12:05:38 +05:30
parent ba6ee585dc
commit 449629ece2
40 changed files with 2253 additions and 3711 deletions

View File

@@ -0,0 +1,36 @@
import {
NavigationMenu,
NavigationMenuContent,
NavigationMenuItem,
NavigationMenuLink,
NavigationMenuList,
NavigationMenuTrigger,
navigationMenuTriggerStyle,
} from '@workspace/ui/components/navigation-menu';
import Link from 'next/link';
export default function MainLayout({ children }: { children: React.ReactNode }) {
return (
<div>
<header className="flex h-16 items-center justify-between border-b bg-background px-4 md:px-6">
<nav>
<NavigationMenu>
<NavigationMenuList>
<NavigationMenuItem>
<NavigationMenuLink asChild>
<Link href="/">Home</Link>
</NavigationMenuLink>
</NavigationMenuItem>
<NavigationMenuItem>
<NavigationMenuLink asChild>
<Link href="/signup">Signup</Link>
</NavigationMenuLink>
</NavigationMenuItem>
</NavigationMenuList>
</NavigationMenu>
</nav>
</header>
<main>{children}</main>
</div>
);
}

View File

@@ -1,7 +1,7 @@
import Login from '@/components/login';
import Studs from '@/components/studs';
import { db, admins } from '@workspace/db';
import { auth, signIn, signOut } from '@workspace/auth';
import { auth, signIn, signOut } from '@/auth';
async function getStudents() {
'use server';
@@ -25,7 +25,7 @@ export default async function Page() {
<div className="flex items-center justify-center min-h-svh">
<div className="flex flex-col items-center justify-center gap-4">
<h1 className="text-2xl font-bold">Hello student {session?.user?.name}</h1>
{!session?.user && <Login logIn={logIn} />}
{!session?.user && <Login action={logIn} />}
<Studs action={getStudents} logOut={logOut} />
</div>
</div>

View File

@@ -1,2 +1,2 @@
import { handlers } from '@workspace/auth';
import { handlers } from '@/auth';
export const { GET, POST } = handlers;

View File

@@ -0,0 +1,29 @@
import { Button } from '@workspace/ui/components/button';
import { signIn } from '@/auth';
async function logIn() {
'use server';
await signIn('google', { redirectTo: '/' });
}
export default async function Page() {
return (
<div className="flex items-center justify-center min-h-svh">
<div className="flex flex-col items-center justify-center gap-4">
<form action={logIn}>
<Button type="submit" variant="outline" className="w-full h-12">
<div className="absolute inset-0 bg-gradient-to-r from-primary/0 via-primary/10 to-primary/0 translate-x-[-100%] group-hover:translate-x-[100%] transition-transform duration-700 ease-out pointer-events-none" />
<img
src="https://static.cdnlogo.com/logos/g/35/google-icon.svg"
alt="Google logo"
className="w-5 h-5 transition-transform duration-200"
/>
<span className="relative z-10 font-medium transition-colors duration-200 group-hover:text-foreground">
Sign in with Google
</span>
</Button>
</form>
</div>
</div>
);
}