199 lines
7.7 KiB
PHP
199 lines
7.7 KiB
PHP
<!DOCTYPE html>
|
|
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta name="csrf-token" content="{{ csrf_token() }}">
|
|
<title>Lupa Password - {{ config('app.name', 'Pencatatan Obat') }}</title>
|
|
|
|
<!-- Bootstrap 5 CSS -->
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
<!-- Bootstrap Icons -->
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.1/font/bootstrap-icons.css" rel="stylesheet">
|
|
<!-- Google Fonts -->
|
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
|
|
|
|
<style>
|
|
* { font-family: 'Inter', sans-serif; }
|
|
|
|
body {
|
|
min-height: 100vh;
|
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 20px;
|
|
}
|
|
|
|
.card-container { width: 100%; max-width: 440px; }
|
|
|
|
.card-custom {
|
|
background: rgba(255, 255, 255, 0.95);
|
|
backdrop-filter: blur(20px);
|
|
border-radius: 24px;
|
|
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
|
|
padding: 48px 40px;
|
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
animation: fadeInUp 0.6s ease-out;
|
|
}
|
|
|
|
.card-header-area {
|
|
text-align: center;
|
|
margin-bottom: 28px;
|
|
}
|
|
|
|
.card-icon {
|
|
width: 72px;
|
|
height: 72px;
|
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
border-radius: 20px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
margin: 0 auto 20px;
|
|
box-shadow: 0 10px 30px rgba(102, 126, 234, 0.4);
|
|
}
|
|
|
|
.card-icon i { font-size: 32px; color: white; }
|
|
.card-header-area h1 { font-size: 1.5rem; font-weight: 700; color: #1a1a2e; margin-bottom: 8px; }
|
|
.card-header-area p { color: #6b7280; font-size: 0.9rem; margin: 0; line-height: 1.5; }
|
|
|
|
.form-floating { margin-bottom: 20px; }
|
|
|
|
.form-floating > .form-control {
|
|
height: 56px;
|
|
padding: 16px 16px 16px 48px;
|
|
border: 2px solid #e5e7eb;
|
|
border-radius: 14px;
|
|
font-size: 0.95rem;
|
|
transition: all 0.3s ease;
|
|
background-color: #f9fafb;
|
|
}
|
|
|
|
.form-floating > .form-control:focus {
|
|
border-color: #667eea;
|
|
box-shadow: 0 0 0 4px rgba(102, 126, 234, 0.15);
|
|
background-color: #fff;
|
|
}
|
|
|
|
.form-floating > label { padding-left: 48px; color: #9ca3af; }
|
|
|
|
.form-floating > .form-control:focus ~ label,
|
|
.form-floating > .form-control:not(:placeholder-shown) ~ label {
|
|
color: #667eea;
|
|
transform: scale(0.85) translateY(-0.75rem) translateX(0.15rem);
|
|
}
|
|
|
|
.input-icon {
|
|
position: absolute; left: 16px; top: 50%;
|
|
transform: translateY(-50%); color: #9ca3af;
|
|
font-size: 1.2rem; z-index: 5; transition: color 0.3s ease;
|
|
}
|
|
|
|
.form-floating:focus-within .input-icon { color: #667eea; }
|
|
|
|
.btn-submit {
|
|
width: 100%; height: 52px;
|
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
border: none; border-radius: 14px; color: white;
|
|
font-weight: 600; font-size: 1rem;
|
|
transition: all 0.3s ease;
|
|
box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4);
|
|
}
|
|
|
|
.btn-submit:hover {
|
|
transform: translateY(-2px);
|
|
box-shadow: 0 8px 25px rgba(102, 126, 234, 0.5);
|
|
background: linear-gradient(135deg, #5a6fd6 0%, #6a4190 100%);
|
|
color: white;
|
|
}
|
|
|
|
.back-link {
|
|
text-align: center; margin-top: 20px;
|
|
}
|
|
|
|
.back-link a {
|
|
color: #667eea; text-decoration: none; font-size: 0.9rem;
|
|
font-weight: 500; transition: color 0.3s ease;
|
|
}
|
|
|
|
.back-link a:hover { color: #764ba2; text-decoration: underline; }
|
|
|
|
.alert {
|
|
border-radius: 12px; border: none;
|
|
font-size: 0.9rem; padding: 14px 16px; margin-bottom: 24px;
|
|
}
|
|
.alert-success { background-color: #d1fae5; color: #065f46; }
|
|
.alert-danger { background-color: #fee2e2; color: #991b1b; }
|
|
.is-invalid { border-color: #ef4444 !important; }
|
|
.invalid-feedback { font-size: 0.85rem; margin-top: 6px; }
|
|
|
|
.bg-shapes { position: fixed; width: 100%; height: 100%; top: 0; left: 0; overflow: hidden; z-index: -1; }
|
|
.bg-shapes span { position: absolute; display: block; background: rgba(255,255,255,0.1); border-radius: 50%; animation: float 8s infinite ease-in-out; }
|
|
.bg-shapes span:nth-child(1) { width: 80px; height: 80px; top: 20%; left: 10%; }
|
|
.bg-shapes span:nth-child(2) { width: 120px; height: 120px; top: 60%; right: 10%; animation-delay: 2s; }
|
|
.bg-shapes span:nth-child(3) { width: 60px; height: 60px; bottom: 20%; left: 20%; animation-delay: 4s; }
|
|
|
|
@keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } }
|
|
@keyframes float { 0%, 100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-20px) rotate(10deg); } }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="bg-shapes"><span></span><span></span><span></span></div>
|
|
|
|
<div class="card-container">
|
|
<div class="card-custom">
|
|
<div class="card-header-area">
|
|
<div class="card-icon">
|
|
<i class="bi bi-key"></i>
|
|
</div>
|
|
<h1>Lupa Password</h1>
|
|
<p>Masukkan email Anda dan kami akan mengirimkan link untuk mengatur ulang password.</p>
|
|
</div>
|
|
|
|
@if (session('status'))
|
|
<div class="alert alert-success">
|
|
<i class="bi bi-check-circle me-2"></i>{{ session('status') }}
|
|
</div>
|
|
@endif
|
|
|
|
@if ($errors->any())
|
|
<div class="alert alert-danger">
|
|
<i class="bi bi-exclamation-circle me-2"></i>
|
|
@foreach ($errors->all() as $error)
|
|
{{ $error }}
|
|
@endforeach
|
|
</div>
|
|
@endif
|
|
|
|
<form method="POST" action="{{ route('password.email') }}">
|
|
@csrf
|
|
|
|
<div class="form-floating position-relative">
|
|
<i class="bi bi-envelope input-icon"></i>
|
|
<input type="email"
|
|
class="form-control @error('email') is-invalid @enderror"
|
|
id="email"
|
|
name="email"
|
|
value="{{ old('email') }}"
|
|
placeholder="Email"
|
|
required
|
|
autofocus>
|
|
<label for="email">Email</label>
|
|
</div>
|
|
|
|
<button type="submit" class="btn btn-submit">
|
|
<i class="bi bi-send me-2"></i>Kirim Link Reset Password
|
|
</button>
|
|
</form>
|
|
|
|
<div class="back-link">
|
|
<a href="{{ route('login') }}">
|
|
<i class="bi bi-arrow-left me-1"></i>Kembali ke Login
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|