first commit
This commit is contained in:
92
resources/views/layouts/app.blade.php
Normal file
92
resources/views/layouts/app.blade.php
Normal file
@@ -0,0 +1,92 @@
|
||||
<!doctype html>
|
||||
<html lang="ms">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
<title>@yield('title', 'MyBajet MBIP')</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.6/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css" rel="stylesheet">
|
||||
<link href="https://cdn.datatables.net/2.3.0/css/dataTables.bootstrap5.min.css" rel="stylesheet">
|
||||
<style>
|
||||
:root { --mbip-blue:#0b4ea2; --mbip-navy:#063b78; --mbip-soft:#f4f7fb; }
|
||||
body { background: var(--mbip-soft); color:#1f2937; font-size: .94rem; }
|
||||
.app-shell { min-height: 100vh; display:flex; }
|
||||
.sidebar { width: 268px; background: linear-gradient(180deg,var(--mbip-navy),#0b4ea2); color:#fff; position: sticky; top:0; height:100vh; }
|
||||
.sidebar a { color:#dbeafe; text-decoration:none; border-radius:8px; padding:.68rem .8rem; display:flex; gap:.65rem; align-items:center; }
|
||||
.sidebar a:hover,.sidebar a.active { background: rgba(255,255,255,.14); color:#fff; }
|
||||
.content { flex:1; min-width:0; }
|
||||
.topbar { background:#fff; border-bottom:1px solid #e5e7eb; }
|
||||
.card, .table-wrap { border:1px solid #e5e7eb; border-radius:8px; box-shadow:0 8px 24px rgba(15,23,42,.05); }
|
||||
.stat-icon { width:42px; height:42px; display:grid; place-items:center; border-radius:8px; background:#e8f1ff; color:var(--mbip-blue); }
|
||||
.btn-primary { background:var(--mbip-blue); border-color:var(--mbip-blue); }
|
||||
.form-control,.form-select,.btn { border-radius:7px; }
|
||||
@media (max-width: 991.98px) { .app-shell{display:block}.sidebar{width:100%;height:auto;position:relative}.sidebar nav{display:grid;grid-template-columns:repeat(2,1fr);gap:.25rem} }
|
||||
</style>
|
||||
@stack('styles')
|
||||
</head>
|
||||
<body>
|
||||
<div class="app-shell">
|
||||
@auth
|
||||
<aside class="sidebar p-3">
|
||||
<div class="d-flex align-items-center gap-2 mb-4">
|
||||
<div class="stat-icon bg-white text-primary"><i class="bi bi-bank2"></i></div>
|
||||
<div>
|
||||
<div class="fw-bold">MyBajet MBIP</div>
|
||||
<small class="text-white-50">Sistem Pengurusan Bajet</small>
|
||||
</div>
|
||||
</div>
|
||||
<nav class="d-grid gap-1">
|
||||
<a href="{{ route('dashboard') }}" class="{{ request()->routeIs('dashboard') ? 'active' : '' }}"><i class="bi bi-speedometer2"></i> Dashboard</a>
|
||||
@role('Pemohon|Admin')
|
||||
<a href="{{ route('permohonan.index') }}" class="{{ request()->routeIs('permohonan.*') ? 'active' : '' }}"><i class="bi bi-file-earmark-plus"></i> Permohonan</a>
|
||||
@endrole
|
||||
@role('Pelaksana|Admin')
|
||||
<a href="{{ route('semakan.index') }}" class="{{ request()->routeIs('semakan.*') ? 'active' : '' }}"><i class="bi bi-clipboard-check"></i> Semakan</a>
|
||||
@endrole
|
||||
@role('Admin')
|
||||
<a href="{{ route('approvals.index') }}"><i class="bi bi-patch-check"></i> Kelulusan</a>
|
||||
<a href="{{ route('jabatan.index') }}"><i class="bi bi-diagram-3"></i> Jabatan</a>
|
||||
<a href="{{ route('vot.index') }}"><i class="bi bi-journal-code"></i> VOT</a>
|
||||
<a href="{{ route('users.index') }}"><i class="bi bi-people"></i> User</a>
|
||||
<a href="{{ route('roles.index') }}"><i class="bi bi-shield-lock"></i> Role</a>
|
||||
<a href="{{ route('reports.index') }}"><i class="bi bi-bar-chart-line"></i> Laporan</a>
|
||||
@endrole
|
||||
</nav>
|
||||
</aside>
|
||||
@endauth
|
||||
<main class="content">
|
||||
@auth
|
||||
<div class="topbar px-4 py-3 d-flex justify-content-between align-items-center">
|
||||
<div>
|
||||
<div class="fw-semibold">@yield('title', 'Dashboard')</div>
|
||||
<small class="text-muted">{{ auth()->user()->jabatan?->nama ?? 'Majlis Bandaraya Iskandar Puteri' }}</small>
|
||||
</div>
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<a class="btn btn-light btn-sm" href="{{ route('profile.edit') }}"><i class="bi bi-person-circle"></i> {{ auth()->user()->name }}</a>
|
||||
<form method="POST" action="{{ route('logout') }}">@csrf <button class="btn btn-outline-danger btn-sm"><i class="bi bi-box-arrow-right"></i></button></form>
|
||||
</div>
|
||||
</div>
|
||||
@endauth
|
||||
<div class="@auth p-4 @else container py-5 @endauth">
|
||||
@if(session('success')) <div class="alert alert-success">{{ session('success') }}</div> @endif
|
||||
@if($errors->any()) <div class="alert alert-danger">{{ $errors->first() }}</div> @endif
|
||||
@yield('content')
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.6/dist/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="https://cdn.datatables.net/2.3.0/js/dataTables.min.js"></script>
|
||||
<script src="https://cdn.datatables.net/2.3.0/js/dataTables.bootstrap5.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
|
||||
<script>
|
||||
document.querySelectorAll('[data-confirm]').forEach(form => form.addEventListener('submit', e => {
|
||||
e.preventDefault();
|
||||
Swal.fire({title:'Sahkan tindakan?', icon:'question', showCancelButton:true, confirmButtonText:'Ya', cancelButtonText:'Batal'}).then(r => { if (r.isConfirmed) form.submit(); });
|
||||
}));
|
||||
document.querySelectorAll('table[data-datatable]').forEach(table => new DataTable(table, {paging:false, searching:false, info:false}));
|
||||
</script>
|
||||
@stack('scripts')
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user