Files
ProjectKP/KP-ASOY FIX (2)/KP-ASOY/resources/views/superadmin/user/create-user.blade.php
T
2026-06-28 15:14:51 +07:00

223 lines
14 KiB
PHP

@extends('admin.layouts.app')
@section('content')
<style>
.page-container { padding: 28px 32px; background: #f1f5f9; min-height: 100vh; font-family: 'Figtree', 'Segoe UI', sans-serif; }
.header-flex { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 28px; }
.main-grid { display: grid; grid-template-columns: 1fr 300px; gap: 20px; align-items: flex-start; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 20px; }
.form-actions { border-top: 1px solid #f1f5f9; padding-top: 20px; display: flex; gap: 10px; justify-content: flex-end; }
@media (max-width: 768px) {
.page-container { padding: 16px 12px !important; }
.header-flex { flex-direction: column !important; gap: 16px !important; }
.main-grid { grid-template-columns: 1fr !important; }
.form-grid { grid-template-columns: 1fr !important; gap: 15px !important; }
.form-actions { flex-direction: column !important; }
.form-actions a, .form-actions button { width: 100% !important; justify-content: center; }
}
</style>
<div class="page-container">
{{-- HEADER --}}
<div class="header-flex">
<div>
<a href="{{ route('admin.superadmin.user.index') }}"
style="font-size:12px; color:#64748b; text-decoration:none; display:inline-flex; align-items:center; gap:5px; margin-bottom:10px; font-weight:600;"
onmouseover="this.style.color='#0D215C'" onmouseout="this.style.color='#64748b'">
<svg width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.5" viewBox="0 0 24 24">
<path d="M19 12H5M12 5l-7 7 7 7"/>
</svg>
Kembali ke Manajemen Pengguna
</a>
<p style="font-size:11px; font-weight:700; color:#94a3b8; letter-spacing:1.8px; margin:0 0 6px; text-transform:uppercase;">Panel Kendali Sistem</p>
<h1 style="font-size:28px; font-weight:800; color:#0f172a; margin:0 0 4px;">Tambah Pengguna</h1>
<p style="margin:0; color:#94a3b8; font-size:13px;">Buat akun baru untuk pegawai atau administrator sistem</p>
</div>
<div style="background:#eef2ff; color:#4338ca; padding:9px 14px; border-radius:10px; font-size:12px; font-weight:700; display:flex; align-items:center; gap:6px;">
<div style="width:8px; height:8px; background:#4338ca; border-radius:50%;"></div>
{{ strtoupper(session('user')['role'] ?? 'ADMINISTRATOR') }}
</div>
</div>
@if(session('error'))
<div style="margin-bottom:20px; padding:14px 18px; background:#fff1f2; border:1px solid #fecdd3; border-radius:12px; color:#be123c; font-size:14px; font-weight:600; display:flex; align-items:center; gap:8px;">
<svg width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.5" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><line x1="15" y1="9" x2="9" y2="15"/><line x1="9" y1="9" x2="15" y2="15"/></svg>
{{ session('error') }}
</div>
@endif
<div class="main-grid">
{{-- FORM CARD --}}
<div style="background:#fff; border-radius:16px; border:1px solid #e2e8f0; overflow:hidden;">
<div style="padding:20px 24px; border-bottom:1px solid #f1f5f9; display:flex; align-items:center; gap:10px;">
<div style="width:32px; height:32px; background:#eff6ff; border-radius:8px; display:flex; align-items:center; justify-content:center;">
<svg width="16" height="16" fill="none" stroke="#2563eb" stroke-width="2" viewBox="0 0 24 24">
<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/>
<circle cx="9" cy="7" r="4"/>
<line x1="19" y1="8" x2="19" y2="14"/>
<line x1="22" y1="11" x2="16" y2="11"/>
</svg>
</div>
<h3 style="margin:0; font-size:16px; font-weight:700; color:#0f172a;">Data Pengguna Baru</h3>
</div>
<form action="{{ route('admin.superadmin.user.store') }}" method="POST" style="padding:28px 24px;">
@csrf
@if ($errors->any())
<div style="margin-bottom:20px; padding:14px 18px; background:#fff1f2; border:1px solid #fecdd3; border-radius:12px;">
<p style="font-weight:700; color:#be123c; margin:0 0 8px; font-size:13px;">Terdapat kesalahan input:</p>
<ul style="margin:0; padding-left:18px; color:#be123c; font-size:13px;">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<div class="form-grid">
{{-- NAMA --}}
<div>
<label style="display:block; font-size:13px; font-weight:700; color:#374151; margin-bottom:8px;">
Nama Lengkap <span style="color:#ef4444;">*</span>
</label>
<input type="text" name="name" value="{{ old('name') }}"
style="width:100%; padding:11px 14px; border:1.5px solid #e2e8f0; border-radius:10px; font-size:14px; color:#0f172a; outline:none; box-sizing:border-box;"
onfocus="this.style.borderColor='#2563eb'" onblur="this.style.borderColor='#e2e8f0'"
placeholder="Nama lengkap pegawai" required>
</div>
{{-- USERNAME --}}
<div>
<label style="display:block; font-size:13px; font-weight:700; color:#374151; margin-bottom:8px;">
Username <span style="color:#ef4444;">*</span>
</label>
<input type="text" name="username" value="{{ old('username') }}"
style="width:100%; padding:11px 14px; border:1.5px solid #e2e8f0; border-radius:10px; font-size:14px; color:#0f172a; outline:none; box-sizing:border-box;"
onfocus="this.style.borderColor='#2563eb'" onblur="this.style.borderColor='#e2e8f0'"
placeholder="Username untuk login" required>
</div>
</div>
<div class="form-grid">
{{-- PASSWORD --}}
<div>
<label style="display:block; font-size:13px; font-weight:700; color:#374151; margin-bottom:8px;">
Kata Sandi <span style="color:#ef4444;">*</span>
</label>
<div style="position:relative;">
<input type="password" name="password" id="password_field"
style="width:100%; padding:11px 40px 11px 14px; border:1.5px solid #e2e8f0; border-radius:10px; font-size:14px; color:#0f172a; outline:none; box-sizing:border-box;"
onfocus="this.style.borderColor='#2563eb'" onblur="this.style.borderColor='#e2e8f0'"
placeholder="Minimal 6 karakter" required>
<button type="button" onclick="togglePassword('password_field', this)"
style="position:absolute; right:12px; top:50%; transform:translateY(-50%); background:none; border:none; cursor:pointer; color:#94a3b8; padding:0; display:flex; align-items:center; justify-content:center;">
<svg class="eye-icon" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
<path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/>
<circle cx="12" cy="12" r="3"/>
</svg>
<svg class="eye-off-icon" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" style="display:none;">
<path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"/>
<line x1="1" y1="1" x2="23" y2="23"/>
</svg>
</button>
</div>
</div>
{{-- ROLE --}}
<div>
<label style="display:block; font-size:13px; font-weight:700; color:#374151; margin-bottom:8px;">
Hak Akses (Role) <span style="color:#ef4444;">*</span>
</label>
<select name="role"
style="width:100%; padding:11px 14px; border:1.5px solid #e2e8f0; border-radius:10px; font-size:14px; color:#0f172a; outline:none; box-sizing:border-box; background:#fff;"
onfocus="this.style.borderColor='#2563eb'" onblur="this.style.borderColor='#e2e8f0'">
<option value="user" {{ old('role') == 'user' ? 'selected' : '' }}>Petugas (User)</option>
<option value="admin" {{ old('role') == 'admin' ? 'selected' : '' }}>Admin (KASI)</option>
<option value="superadmin" {{ old('role') == 'superadmin' ? 'selected' : '' }}>Super Admin</option>
</select>
</div>
</div>
<div class="form-actions">
<a href="{{ route('admin.superadmin.user.index') }}"
style="padding:10px 20px; border:1.5px solid #e2e8f0; border-radius:10px; font-size:13px; font-weight:700; color:#64748b; text-decoration:none; background:#f8fafc;"
onmouseover="this.style.background='#e2e8f0'" onmouseout="this.style.background='#f8fafc'">
Batal
</a>
<button type="submit"
style="padding:10px 24px; background:#0D215C; color:#fff; border:none; border-radius:10px; font-size:13px; font-weight:700; cursor:pointer; display:flex; align-items:center; gap:7px;"
onmouseover="this.style.opacity='.85'" onmouseout="this.style.opacity='1'">
<svg width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.5" viewBox="0 0 24 24">
<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/>
<circle cx="9" cy="7" r="4"/>
<line x1="19" y1="8" x2="19" y2="14"/>
<line x1="22" y1="11" x2="16" y2="11"/>
</svg>
Tambah Pengguna
</button>
</div>
</form>
</div>
{{-- TIPS CARD --}}
<div>
<div style="background:#fff; border-radius:16px; border:1px solid #e2e8f0; padding:20px; margin-bottom:16px;">
<div style="display:flex; align-items:center; gap:8px; margin-bottom:12px;">
<div style="width:28px; height:28px; background:#f0fdf4; border-radius:8px; display:flex; align-items:center; justify-content:center;">
<svg width="14" height="14" fill="none" stroke="#10b981" stroke-width="2" viewBox="0 0 24 24">
<polyline points="20 6 9 17 4 12"/>
</svg>
</div>
<span style="font-size:14px; font-weight:700; color:#0f172a;">Panduan Pengisian</span>
</div>
<ul style="margin:0; padding-left:16px; font-size:12px; color:#64748b; line-height:1.9;">
<li>Nama sesuai dengan dokumen resmi</li>
<li>Username digunakan untuk login</li>
<li>Kata sandi minimal 6 karakter</li>
</ul>
</div>
<div style="background:#eff6ff; border-radius:16px; border:1px solid #bfdbfe; padding:18px 20px;">
<div style="display:flex; align-items:center; gap:8px; margin-bottom:10px;">
<svg width="16" height="16" fill="#2563eb" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></svg>
<span style="font-size:13px; font-weight:700; color:#1d4ed8;">Panduan Role</span>
</div>
<ul style="margin:0; padding-left:16px; font-size:12px; color:#3b82f6; line-height:1.8;">
<li><strong>Petugas</strong>: Input kegiatan harian</li>
<li><strong>Admin</strong>: Monitor kegiatan & user</li>
<li><strong>Super Admin</strong>: Akses penuh sistem</li>
</ul>
</div>
</div>
</div>
</div>
@endsection
<script>
function togglePassword(inputId, buttonElement) {
const input = document.getElementById(inputId);
const eyeIcon = buttonElement.querySelector('.eye-icon');
const eyeOffIcon = buttonElement.querySelector('.eye-off-icon');
if (input.type === 'password') {
input.type = 'text';
eyeIcon.style.display = 'none';
eyeOffIcon.style.display = 'block';
buttonElement.style.color = '#2563eb';
} else {
input.type = 'password';
eyeIcon.style.display = 'block';
eyeOffIcon.style.display = 'none';
buttonElement.style.color = '#94a3b8';
}
}
</script>