Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="id">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Login - Sistem Penyimpanan Surat</title>
- <!-- Bootstrap CSS -->
- <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
- <!-- Font Awesome -->
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
- <!-- Google Fonts -->
- <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
- <style>
- body {
- font-family: 'Inter', sans-serif;
- background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
- min-height: 100vh;
- }
- .login-container {
- max-width: 1000px;
- margin: 0 auto;
- border-radius: 20px;
- overflow: hidden;
- box-shadow: 0 25px 50px rgba(0,0,0,0.1);
- background: white;
- }
- .image-section {
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
- padding: 60px 40px;
- display: flex;
- align-items: center;
- justify-content: center;
- flex-direction: column;
- position: relative;
- overflow: hidden;
- }
- .image-section::before {
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- background: url('{{ asset('assets/images/logo/locked.png') }}') center/contain no-repeat;
- opacity: 0.1;
- z-index: 1;
- }
- .image-content {
- position: relative;
- z-index: 2;
- text-align: center;
- color: white;
- }
- .image-content h2 {
- font-size: 2.5rem;
- font-weight: 700;
- margin-bottom: 20px;
- text-shadow: 0 2px 10px rgba(0,0,0,0.3);
- }
- .image-content p {
- font-size: 1.1rem;
- opacity: 0.9;
- line-height: 1.6;
- }
- .logo-main {
- width: 120px;
- height: 120px;
- background: rgba(255,255,255,0.2);
- border-radius: 50%;
- display: flex;
- align-items: center;
- justify-content: center;
- margin-bottom: 30px;
- backdrop-filter: blur(10px);
- border: 2px solid rgba(255,255,255,0.3);
- }
- .form-section {
- padding: 60px 40px;
- }
- .login-card {
- border: none;
- border-radius: 0;
- box-shadow: none;
- background: transparent;
- }
- .form-control {
- border: 2px solid #f1f3f4;
- border-radius: 10px;
- padding: 12px 15px;
- font-size: 14px;
- transition: all 0.3s ease;
- }
- .form-control:focus {
- border-color: #667eea;
- box-shadow: 0 0 0 0.2rem rgba(102, 126, 234, 0.25);
- background-color: #fafbfc;
- }
- .input-group-text {
- border: 2px solid #f1f3f4;
- border-right: none;
- background-color: #f8f9fa;
- border-radius: 10px 0 0 10px;
- }
- .input-group .form-control {
- border-left: none;
- border-radius: 0 10px 10px 0;
- }
- .btn-login {
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
- border: none;
- border-radius: 10px;
- font-weight: 600;
- padding: 15px;
- font-size: 16px;
- transition: all 0.3s ease;
- position: relative;
- overflow: hidden;
- }
- .btn-login:hover {
- transform: translateY(-2px);
- box-shadow: 0 15px 35px rgba(102, 126, 234, 0.3);
- }
- .btn-login::before {
- content: '';
- position: absolute;
- top: 0;
- left: -100%;
- width: 100%;
- height: 100%;
- background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
- transition: left 0.5s ease;
- }
- .btn-login:hover::before {
- left: 100%;
- }
- .form-title {
- color: #2d3748;
- font-weight: 700;
- margin-bottom: 10px;
- }
- .form-subtitle {
- color: #718096;
- margin-bottom: 30px;
- }
- @media (max-width: 768px) {
- .image-section {
- padding: 40px 20px;
- }
- .form-section {
- padding: 40px 20px;
- }
- .image-content h2 {
- font-size: 1.8rem;
- }
- .logo-main {
- width: 80px;
- height: 80px;
- }
- }
- </style>
- </head>
- <body class="d-flex align-items-center justify-content-center py-5">
- <div class="container">
- <div class="login-container">
- <div class="row g-0 h-100">
- <!-- Image Section -->
- <div class="col-lg-6">
- <div class="image-section h-100">
- <div class="image-content">
- <div class="logo-main">
- <img src="{{asset('assets/img/logo.png')}}" alt="Logo" width="60" height="60" style="filter: brightness(0) invert(1);">
- </div>
- </div>
- </div>
- </div>
- <!-- Form Section -->
- <div class="col-lg-6">
- <div class="form-section">
- <div class="login-card">
- <div class="card-body p-0">
- <!-- Form Header -->
- <div class="text-center mb-4">
- <h1 class="form-title h3">Masuk ke Sistem</h1>
- <p class="form-subtitle">Silakan masukkan kredensial Anda untuk mengakses dashboard</p>
- </div>
- <!-- Login Form -->
- <form method="POST" action="{{ route('login.post') }}">
- @csrf
- <div class="mb-3">
- <label for="email" class="form-label fw-semibold text-dark">Alamat Email</label>
- <div class="input-group">
- <span class="input-group-text">
- <i class="fas fa-envelope text-muted"></i>
- </span>
- <input type="email"
- id="email"
- name="email"
- value="{{ old('email') }}"
- class="form-control @error('email') is-invalid @enderror"
- placeholder="Masukkan alamat email"
- required>
- </div>
- @error('email')
- <div class="invalid-feedback">{{ $message }}</div>
- @enderror
- </div>
- <div class="mb-4">
- <label for="password" class="form-label fw-semibold text-dark">Password</label>
- <div class="input-group">
- <span class="input-group-text">
- <i class="fas fa-lock text-muted"></i>
- </span>
- <input type="password"
- id="password"
- name="password"
- class="form-control @error('password') is-invalid @enderror"
- placeholder="Masukkan password"
- required>
- </div>
- @error('password')
- <div class="invalid-feedback">{{ $message }}</div>
- @enderror
- </div>
- <div class="mb-4">
- <div class="form-check">
- <input class="form-check-input" type="checkbox" id="remember" name="remember">
- <label class="form-check-label text-muted" for="remember">
- Ingat saya
- </label>
- </div>
- </div>
- <button type="submit" class="btn btn-login text-white w-100 mb-3">
- <i class="fas fa-sign-in-alt me-2"></i>
- Masuk ke Dashboard
- </button>
- </form>
- <!-- Additional Links -->
- <div class="text-center">
- <small class="text-muted">
- Lupa password? <a href="#" class="text-decoration-none" style="color: #667eea;">Reset disini</a>
- </small>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <!-- Footer -->
- <div class="text-center mt-4">
- <p class="text-muted mb-0">
- <small>© {{ date('Y') }} Sistem Penyimpanan Surat. All rights reserved.</small>
- </p>
- </div>
- </div>
- <!-- Bootstrap JS -->
- <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
- <!-- Login Animation -->
- <script>
- document.addEventListener('DOMContentLoaded', function() {
- // Animate login container
- const loginContainer = document.querySelector('.login-container');
- loginContainer.style.opacity = '0';
- loginContainer.style.transform = 'translateY(30px)';
- setTimeout(() => {
- loginContainer.style.transition = 'all 0.8s ease';
- loginContainer.style.opacity = '1';
- loginContainer.style.transform = 'translateY(0)';
- }, 100);
- // Animate form elements
- const formElements = document.querySelectorAll('.form-section .mb-3, .form-section .mb-4, .btn-login');
- formElements.forEach((element, index) => {
- element.style.opacity = '0';
- element.style.transform = 'translateX(20px)';
- setTimeout(() => {
- element.style.transition = 'all 0.6s ease';
- element.style.opacity = '1';
- element.style.transform = 'translateX(0)';
- }, 300 + (index * 100));
- });
- // Animate image section elements
- const imageElements = document.querySelectorAll('.image-content > *');
- imageElements.forEach((element, index) => {
- element.style.opacity = '0';
- element.style.transform = 'translateY(20px)';
- setTimeout(() => {
- element.style.transition = 'all 0.6s ease';
- element.style.opacity = '1';
- element.style.transform = 'translateY(0)';
- }, 500 + (index * 150));
- });
- // Add floating animation to logo
- const logo = document.querySelector('.logo-main');
- if (logo) {
- setInterval(() => {
- logo.style.transform = 'translateY(-5px)';
- setTimeout(() => {
- logo.style.transform = 'translateY(0)';
- }, 1000);
- }, 2000);
- }
- });
- // Add form validation feedback
- const inputs = document.querySelectorAll('input[required]');
- inputs.forEach(input => {
- input.addEventListener('blur', function() {
- if (this.value.trim() === '') {
- this.classList.add('is-invalid');
- } else {
- this.classList.remove('is-invalid');
- this.classList.add('is-valid');
- }
- });
- input.addEventListener('input', function() {
- if (this.classList.contains('is-invalid') && this.value.trim() !== '') {
- this.classList.remove('is-invalid');
- this.classList.add('is-valid');
- }
- });
- });
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment