129 lines
6.6 KiB
PHP
129 lines
6.6 KiB
PHP
@extends('layouts.app')
|
|||
|
|
|
||
|
|
@section('title', 'Login')
|
||
|
|
|
||
|
|
@section('content')
|
||
|
|
<div class="min-h-screen bg-gradient-to-br from-indigo-100 via-purple-50 to-pink-100 flex items-center justify-center py-12 px-4 sm:px-6 lg:px-8">
|
||
|
|
<div class="max-w-md w-full">
|
||
|
|
<div class="bg-white rounded-2xl shadow-2xl overflow-hidden">
|
||
|
|
<!-- Header -->
|
||
|
|
<div class="bg-gradient-to-r from-indigo-600 to-purple-600 px-8 py-6">
|
||
|
|
<h2 class="text-3xl font-bold text-white text-center">Welcome Back</h2>
|
||
|
|
<p class="mt-2 text-center text-indigo-100">Sign in to your account</p>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Form -->
|
||
|
|
<div class="px-8 py-8">
|
||
|
|
<form method="POST" action="{{ route('login') }}" class="space-y-6">
|
||
|
|
@csrf
|
||
|
|
|
||
|
|
<!-- Email -->
|
||
|
|
<div>
|
||
|
|
<label for="email" class="block text-sm font-semibold text-gray-700 mb-2">Email Address</label>
|
||
|
|
<input
|
||
|
|
id="email"
|
||
|
|
name="email"
|
||
|
|
type="email"
|
||
|
|
autocomplete="email"
|
||
|
|
required
|
||
|
|
value="{{ old('email') }}"
|
||
|
|
class="w-full px-4 py-3 border-2 border-gray-200 rounded-xl focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-transparent transition-all duration-200 @error('email') border-red-500 @enderror"
|
||
|
|
placeholder="you@example.com"
|
||
|
|
>
|
||
|
|
@error('email')
|
||
|
|
<p class="mt-2 text-sm text-red-600">{{ $message }}</p>
|
||
|
|
@enderror
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Password -->
|
||
|
|
<div>
|
||
|
|
<label for="password" class="block text-sm font-semibold text-gray-700 mb-2">Password</label>
|
||
|
|
<input
|
||
|
|
id="password"
|
||
|
|
name="password"
|
||
|
|
type="password"
|
||
|
|
autocomplete="current-password"
|
||
|
|
required
|
||
|
|
class="w-full px-4 py-3 border-2 border-gray-200 rounded-xl focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-transparent transition-all duration-200 @error('password') border-red-500 @enderror"
|
||
|
|
placeholder="Enter your password"
|
||
|
|
>
|
||
|
|
@error('password')
|
||
|
|
<p class="mt-2 text-sm text-red-600">{{ $message }}</p>
|
||
|
|
@enderror
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Remember Me & Forgot Password -->
|
||
|
|
<div class="flex items-center justify-between">
|
||
|
|
<div class="flex items-center">
|
||
|
|
<input
|
||
|
|
id="remember"
|
||
|
|
name="remember"
|
||
|
|
type="checkbox"
|
||
|
|
class="h-4 w-4 text-purple-600 focus:ring-purple-500 border-gray-300 rounded"
|
||
|
|
{{ old('remember') ? 'checked' : '' }}
|
||
|
|
>
|
||
|
|
<label for="remember" class="ml-2 block text-sm text-gray-700">
|
||
|
|
Remember me
|
||
|
|
</label>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="text-sm">
|
||
|
|
<a href="#" class="font-medium text-purple-600 hover:text-purple-500 transition-colors duration-200">
|
||
|
|
Forgot password?
|
||
|
|
</a>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Error Messages -->
|
||
|
|
@if ($errors->any())
|
||
|
|
<div class="bg-red-50 border-l-4 border-red-500 rounded-lg p-4">
|
||
|
|
<div class="flex">
|
||
|
|
<div class="flex-shrink-0">
|
||
|
|
<svg class="h-5 w-5 text-red-400" fill="currentColor" viewBox="0 0 20 20">
|
||
|
|
<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z" clip-rule="evenodd" />
|
||
|
|
</svg>
|
||
|
|
</div>
|
||
|
|
<div class="ml-3">
|
||
|
|
<p class="text-sm text-red-700 font-medium">{{ $errors->first() }}</p>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
@endif
|
||
|
|
|
||
|
|
<!-- Submit Button -->
|
||
|
|
<div>
|
||
|
|
<button
|
||
|
|
type="submit"
|
||
|
|
class="w-full flex justify-center py-3 px-4 border border-transparent rounded-xl shadow-lg text-sm font-semibold text-white bg-gradient-to-r from-indigo-600 to-purple-600 hover:from-indigo-700 hover:to-purple-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-purple-500 transition-all duration-200 transform hover:-translate-y-0.5"
|
||
|
|
>
|
||
|
|
Sign In
|
||
|
|
</button>
|
||
|
|
</div>
|
||
|
|
</form>
|
||
|
|
|
||
|
|
<!-- Divider -->
|
||
|
|
<div class="mt-6">
|
||
|
|
<div class="relative">
|
||
|
|
<div class="absolute inset-0 flex items-center">
|
||
|
|
<div class="w-full border-t border-gray-300"></div>
|
||
|
|
</div>
|
||
|
|
<div class="relative flex justify-center text-sm">
|
||
|
|
<span class="px-2 bg-white text-gray-500">Don't have an account?</span>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Register Link -->
|
||
|
|
<div class="mt-6 text-center">
|
||
|
|
<a
|
||
|
|
href="{{ route('register') }}"
|
||
|
|
class="inline-flex items-center px-6 py-3 border-2 border-purple-200 rounded-xl text-sm font-semibold text-purple-600 hover:bg-purple-50 hover:border-purple-300 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-purple-500 transition-all duration-200"
|
||
|
|
>
|
||
|
|
Create New Account
|
||
|
|
</a>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
@endsection
|