← Back to authentication blocks
login-02
A two-column login page: form on one side, a decorative panel on the other. Use as an alternative, more spacious authentication page layout.
Code
import * as React from "react"
import { SparklesIcon } from "lucide-react"
import { cn } from "@/lib/utils"
import { Button } from "@/components/ui/button"
import { Input } from "@/components/ui/input"
import { Label } from "@/components/ui/label"
export function LoginForm({
className,
...props
}: React.ComponentProps<"div">) {
return (
<div className={cn("grid min-h-svh lg:grid-cols-2", className)} {...props}>
<div className="flex flex-col gap-4 p-6 md:p-10">
<div className="flex flex-1 items-center justify-center">
<div className="w-full max-w-xs">
<form>
<div className="flex flex-col gap-6">
<div className="flex flex-col items-center gap-2 text-center">
<h1 className="text-2xl font-bold">
Login to your account
</h1>
<p className="text-muted-foreground text-sm text-balance">
Enter your email below to login to your account
</p>
</div>
<div className="grid gap-6">
<div className="grid gap-2">
<Label htmlFor="email">Email</Label>
<Input
id="email"
type="email"
placeholder="m@example.com"
required
/>
</div>
<div className="grid gap-2">
<div className="flex items-center">
<Label htmlFor="password">Password</Label>
<a
href="#"
className="ml-auto text-sm underline-offset-4 hover:underline"
>
Forgot your password?
</a>
</div>
<Input id="password" type="password" required />
</div>
<Button type="submit" className="w-full">
Login
</Button>
</div>
<div className="text-center text-sm">
Don't have an account?{" "}
<a href="#" className="underline underline-offset-4">
Sign up
</a>
</div>
</div>
</form>
</div>
</div>
</div>
<div className="bg-muted relative hidden lg:flex lg:items-center lg:justify-center">
<SparklesIcon className="text-muted-foreground/20 size-32" />
</div>
</div>
)
}