
Buat resources/views/layouts/admin_layouts.blade.php
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@yield('title', 'Admin Dashboard')</title>
<link href="<https://cdn.jsdelivr.net/npm/daisyui@5>" rel="stylesheet" type="text/css" />
<script src="<https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4>"></script>
<script src="<https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js>"></script>
</head>
<body class="bg-gray-50">
<div class="min-h-screen flex">
<!-- Sidebar -->
<aside class="w-64 bg-white shadow-lg">
<div class="p-6">
<h2 class="text-2xl font-bold text-gray-800 mb-6">Admin Panel</h2>
<!-- Sidebar Menu -->
<ul class="space-y-2">
<li>
<a href="{{ route('dashboard') }}"
class="flex items-center px-4 py-3 text-gray-700 rounded-lg hover:bg-blue-50 hover:text-blue-600 transition-colors {{ request()->routeIs('dashboard') ? 'bg-blue-50 text-blue-600' : '' }}">
<svg xmlns="<http://www.w3.org/2000/svg>" width="24" height="24" viewBox="0 0 24 24" class="w-5 h-5 mr-3">
<path fill="currentColor" d="M6 19h3v-5q0-.425.288-.712T10 13h4q.425 0 .713.288T15 14v5h3v-9l-6-4.5L6 10zm-2 0v-9q0-.475.213-.9t.587-.7l6-4.5q.525-.4 1.2-.4t1.2.4l6 4.5q.375.275.588.7T20 10v9q0 .825-.588 1.413T18 21h-4q-.425 0-.712-.288T13 20v-5h-2v5q0 .425-.288.713T10 21H6q-.825 0-1.412-.587T4 19m8-6.75" />
</svg>
Dashboard
</a>
</li>
<li>
<a href="{{ route('dashboard') }}"
class="flex items-center px-4 py-3 text-gray-700 rounded-lg hover:bg-blue-50 hover:text-blue-600 transition-colors {{ request()->routeIs('categories.*') ? 'bg-blue-50 text-blue-600' : '' }}">
<svg xmlns="<http://www.w3.org/2000/svg>" width="24" height="24" viewBox="0 0 24 24" class="w-5 h-5 mr-3">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4h6v6H4zm10 0h6v6h-6zM4 14h6v6H4zm10 3a3 3 0 1 0 6 0a3 3 0 1 0-6 0" />
</svg>
Manajemen Kategori
</a>
</li>
</ul>
</div>
<!-- User Profile Section -->
<div class="absolute bottom-0 w-64 p-6 border-t">
<div class="flex items-center">
<div class="w-10 h-10 bg-blue-500 rounded-full flex items-center justify-center text-white font-semibold">
{{ auth()->user()->name[0] ?? 'A' }}
</div>
<div class="ml-3">
<p class="text-sm font-medium text-gray-900">{{ auth()->user()->name }}</p>
<a href="{{ route('profile.edit') }}" class="text-xs text-blue-600 hover:text-blue-800">
Profile
</a>
<span class="mx-1">•</span>
<form method="POST" action="{{ route('logout') }}" class="inline">
@csrf
<button type="submit" class="text-xs text-red-600 hover:text-red-800">
Logout
</button>
</form>
</div>
</div>
</div>
</aside>
<!-- Main Content Area -->
<div class="flex-1 flex flex-col">
<!-- Top Header -->
<header class="bg-white shadow-sm border-b">
<div class="px-6 py-4">
<div class="flex items-center justify-between">
<h1 class="text-xl font-semibold text-gray-900">@yield('title', 'Dashboard')</h1>
<div class="flex items-center space-x-4">
<a href="{{ route('home') }}" class="text-gray-600 hover:text-gray-900">
← Kembali ke Home
</a>
</div>
</div>
</div>
</header>
<!-- Main Content -->
<main class="flex-1 overflow-y-auto bg-gray-50">
<div class="p-6">
@yield('content')
</div>
</main>
</div>
</div>
<!-- Success Toast Container -->
@if(session('success'))
<div id="successToast" class="fixed top-4 right-4 bg-green-500 text-white px-6 py-3 rounded-lg shadow-lg z-50">
{{ session('success') }}
</div>
<script>
setTimeout(() => {
const toast = document.getElementById('successToast');
if (toast) {
toast.style.opacity = '0';
toast.style.transition = 'opacity 0.3s';
setTimeout(() => toast.remove(), 300);
}
}, 3000);
</script>
@endif
</body>
</html>
Penjelasan singkat kode di atas:
Template Blade Laravel
File ini adalah layout Blade (@yield, {{ }}) untuk Admin Dashboard. Digunakan sebagai kerangka utama halaman admin.
Head Section
Mengatur metadata HTML dan memuat Tailwind CSS (via CDN), DaisyUI, dan Bootstrap JS untuk styling dan komponen UI.
Struktur Layout (Flex)
Menggunakan Flexbox:
Sidebar
Berisi:
request()->routeIs(...).User Profile (bawah sidebar)
Menampilkan:
auth()->user()->name[0]).Header Atas
Menampilkan judul halaman dinamis (@yield('title')) dan link kembali ke halaman Home.
Main Content
Area utama konten halaman, diisi oleh view lain melalui @yield('content').
Success Toast
Notifikasi sukses:
session('success').Buat DashboardController dengan cara:
php artisan make:controller DashboardController
Masukan code berikut ke DashboardController:
<?php
namespace App\\Http\\Controllers;
use App\\Models\\Kategori;
use Illuminate\\Http\\Request;
class DashboardController extends Controller
{
/**
* Display the admin dashboard.
*/
public function index()
{
$categories = Kategori::all();
return view('pages.admin.dashboard', compact('categories'));
}
}
Penjelasan singkat kode DashboardController: