first commit

This commit is contained in:
Saufi
2026-06-24 20:32:14 +08:00
commit 10fb30ad69
201 changed files with 21356 additions and 0 deletions

View File

@@ -0,0 +1,75 @@
<!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', 'Pemantauan Kemampanan Pusat Data') MBIP</title>
@vite(['resources/sass/app.scss', 'resources/js/app.js'])
</head>
<body>
<div class="d-flex">
{{-- Sidebar --}}
<nav class="sidebar text-white p-3 d-none d-lg-block" style="width: 270px;">
@include('layouts.sidebar')
</nav>
{{-- Offcanvas sidebar untuk mobil --}}
<div class="offcanvas offcanvas-start sidebar text-white" tabindex="-1" id="sidebarMobile">
<div class="offcanvas-header">
<h6 class="offcanvas-title">Menu</h6>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="offcanvas"></button>
</div>
<div class="offcanvas-body p-3">
@include('layouts.sidebar')
</div>
</div>
<div class="flex-grow-1 min-vw-0">
{{-- Bar atas --}}
<header class="bg-white border-bottom px-3 py-2 d-flex align-items-center justify-content-between sticky-top">
<div class="d-flex align-items-center gap-2">
<button class="btn btn-outline-secondary btn-sm d-lg-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#sidebarMobile">
<i class="bi bi-list"></i>
</button>
<span class="fw-semibold text-truncate">@yield('heading', 'Papan Pemuka')</span>
</div>
<div class="dropdown">
<a href="#" class="d-flex align-items-center text-decoration-none dropdown-toggle text-dark" data-bs-toggle="dropdown">
<i class="bi bi-person-circle fs-5 me-2"></i>
<span class="d-none d-sm-inline">{{ auth()->user()->name }}</span>
</a>
<ul class="dropdown-menu dropdown-menu-end">
<li class="dropdown-header">
{{ auth()->user()->email }}<br>
<small class="text-muted">{{ auth()->user()->getRoleNames()->join(', ') }}</small>
</li>
<li><hr class="dropdown-divider"></li>
<li>
<form method="POST" action="{{ route('logout') }}">
@csrf
<button class="dropdown-item text-danger" type="submit"><i class="bi bi-box-arrow-right me-2"></i>Log Keluar</button>
</form>
</li>
</ul>
</div>
</header>
<main class="p-3 p-md-4">
@include('layouts.flash')
<div class="d-flex flex-wrap justify-content-between align-items-center mb-3 gap-2">
<div>
<h4 class="mb-0">@yield('page-title', View::yieldContent('heading'))</h4>
@hasSection('subtitle')<small class="text-muted">@yield('subtitle')</small>@endif
</div>
<div>@yield('actions')</div>
</div>
@yield('content')
</main>
</div>
</div>
@stack('scripts')
</body>
</html>

View File

@@ -0,0 +1,25 @@
@if (session('success'))
<div class="alert alert-success alert-dismissible alert-auto-dismiss fade show" role="alert">
<i class="bi bi-check-circle me-1"></i> {{ session('success') }}
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
@endif
@if (session('error'))
<div class="alert alert-danger alert-dismissible fade show" role="alert">
<i class="bi bi-exclamation-triangle me-1"></i> {{ session('error') }}
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
@endif
@if ($errors->any())
<div class="alert alert-danger alert-dismissible fade show" role="alert">
<strong><i class="bi bi-exclamation-circle me-1"></i> Sila betulkan ralat berikut:</strong>
<ul class="mb-0 mt-1">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
@endif

View File

@@ -0,0 +1,98 @@
@php($u = auth()->user())
<a href="{{ route('dashboard') }}" class="sidebar-brand text-decoration-none d-block mb-4">
<i class="bi bi-buildings me-1"></i> MBIP
<div class="small fw-normal opacity-75" style="font-size:.72rem">Pemantauan Kemampanan Pusat Data</div>
</a>
<ul class="nav nav-pills flex-column">
<li class="nav-item">
<a class="nav-link {{ request()->routeIs('dashboard') ? 'active' : '' }}" href="{{ route('dashboard') }}">
<i class="bi bi-speedometer2"></i> Papan Pemuka
</a>
</li>
<li class="nav-item">
<a class="nav-link {{ request()->routeIs('submissions.*') ? 'active' : '' }}" href="{{ route('submissions.index') }}">
<i class="bi bi-file-earmark-text"></i> Serahan
</a>
</li>
@can('pusat_data.urus')
<li class="nav-item">
<a class="nav-link {{ request()->routeIs('data-centres.*') ? 'active' : '' }}" href="{{ route('data-centres.index') }}">
<i class="bi bi-hdd-rack"></i> Pusat Data
</a>
</li>
@elsecan('serahan.urus_sendiri')
<li class="nav-item">
<a class="nav-link {{ request()->routeIs('data-centres.*') ? 'active' : '' }}" href="{{ route('data-centres.index') }}">
<i class="bi bi-hdd-rack"></i> Pusat Data Saya
</a>
</li>
@endcan
@can('perunding.urus')
<li class="nav-item">
<a class="nav-link {{ request()->routeIs('consultants.*') ? 'active' : '' }}" href="{{ route('consultants.index') }}">
<i class="bi bi-people"></i> Perunding
</a>
</li>
@endcan
@can('kitaran.urus')
<li class="nav-item">
<a class="nav-link {{ request()->routeIs('reporting-cycles.*') ? 'active' : '' }}" href="{{ route('reporting-cycles.index') }}">
<i class="bi bi-arrow-repeat"></i> Kitaran Pelaporan
</a>
</li>
@endcan
@can('templat.urus')
<li class="nav-item">
<a class="nav-link {{ request()->routeIs('checklist-templates.*') ? 'active' : '' }}" href="{{ route('checklist-templates.index') }}">
<i class="bi bi-ui-checks"></i> Templat Senarai Semak
</a>
</li>
@endcan
@can('peringatan.lihat')
<li class="nav-item">
<a class="nav-link {{ request()->routeIs('reminders.*') ? 'active' : '' }}" href="{{ route('reminders.index') }}">
<i class="bi bi-bell"></i> Peringatan / Belum Serah
</a>
</li>
@endcan
@can('laporan.lihat')
<li class="nav-item">
<a class="nav-link {{ request()->routeIs('reports.*') ? 'active' : '' }}" href="{{ route('reports.index') }}">
<i class="bi bi-bar-chart"></i> Laporan & Statistik
</a>
</li>
@endcan
@canany(['pengguna.urus', 'tetapan.urus'])
<li class="nav-item mt-3"><span class="text-uppercase small opacity-50 px-3">Pentadbiran</span></li>
@endcanany
@can('pengguna.urus')
<li class="nav-item">
<a class="nav-link {{ request()->routeIs('users.*') ? 'active' : '' }}" href="{{ route('users.index') }}">
<i class="bi bi-person-gear"></i> Pengguna
</a>
</li>
<li class="nav-item">
<a class="nav-link {{ request()->routeIs('audit.*') ? 'active' : '' }}" href="{{ route('audit.index') }}">
<i class="bi bi-clock-history"></i> Log Audit
</a>
</li>
@endcan
@can('tetapan.urus')
<li class="nav-item">
<a class="nav-link {{ request()->routeIs('settings.*') ? 'active' : '' }}" href="{{ route('settings.edit') }}">
<i class="bi bi-gear"></i> Tetapan
</a>
</li>
@endcan
</ul>