Files
Todo/app/auth/login/page.tsx
Paul Bailey d4a5232e71 feat: implement authentication UI components
- Add LoginForm component with email/password validation
- Add RegisterForm component with password confirmation
- Create login page at /auth/login
- Create register page at /auth/register
- Create authentication error page at /auth/error
- Add loading states and error handling
- Implement inline validation with user feedback
- Follow existing component patterns from ListForm

Implements task 6 from user-auth-and-sharing spec
Requirements: 1.1, 2.1
2025-12-02 00:42:04 +00:00

54 lines
1.5 KiB
TypeScript

import Link from 'next/link'
import LoginForm from '@/components/LoginForm'
import { Suspense } from 'react'
export const metadata = {
title: 'Login - Ultimate Lists',
description: 'Log in to your Ultimate Lists account',
}
function LoginContent() {
return (
<div className="min-h-screen flex items-center justify-center bg-gray-50 px-4 py-12">
<div className="max-w-md w-full space-y-8">
<div className="text-center">
<h1 className="text-3xl sm:text-4xl font-bold text-gray-900 mb-2">
Welcome Back
</h1>
<p className="text-sm sm:text-base text-gray-600">
Log in to access your lists
</p>
</div>
<div className="bg-white rounded-xl shadow-md p-6 sm:p-8">
<LoginForm />
<div className="mt-6 text-center">
<p className="text-sm text-gray-600">
Don't have an account?{' '}
<Link
href="/auth/register"
className="font-medium text-blue-600 hover:text-blue-500 transition-colors"
>
Sign up
</Link>
</p>
</div>
</div>
</div>
</div>
)
}
export default function LoginPage() {
return (
<Suspense fallback={
<div className="min-h-screen flex items-center justify-center bg-gray-50">
<div className="text-gray-600">Loading...</div>
</div>
}>
<LoginContent />
</Suspense>
)
}