TIF_NGANJUK_E41220778/resources/views/layouts/app.blade.php

97 lines
3.9 KiB
PHP

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ config('app.name', 'Perpus') }}</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">
@vite(['resources/scss/app.scss', 'resources/js/app.js'])
<style>
body { background-color: #f4f7f8; }
.sidebar { width: 250px; position: fixed; top: 0; bottom: 0; z-index: 1050; transition: all 0.3s ease; }
.main-wrapper { transition: margin-left 0.3s ease; }
.overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.5); z-index: 1049; display: none; }
.overlay.active { display: block; }
@media (min-width: 992px) {
.sidebar { left: 0; }
.main-wrapper { margin-left: 250px; }
.sidebar.minimized { width: 70px; }
.sidebar.minimized .nav-text,
.sidebar.minimized .sidebar-title { display: none; }
.sidebar.minimized .nav-link { justify-content: center; }
.main-wrapper.sidebar-minimized { margin-left: 80px; }
}
@media (max-width: 991.98px) {
.sidebar { left: -250px; }
.sidebar.active { left: 0; }
}
.sidebar .nav-link { font-weight: 500; color: #555; margin: .3rem 0; border-radius: .5rem; display: flex; align-items: center; }
.sidebar .nav-link.active { background: rgba(67,94,190,.1); color: #435ebe; font-weight: 600; }
.sidebar .nav-link:hover:not(.active) { background: #f8f9fa; }
</style>
</head>
<body>
<div class="d-flex">
@include('layouts.sidebar')
<div id="overlay" class="overlay"></div>
<div class="main-wrapper flex-grow-1">
@include('layouts.navigation')
<main class="container-fluid py-4">
{{ $slot }}
</main>
<footer class="footer text-center py-3">
<span class="text-muted small">Copyright &copy; {{ date('Y') }} {{ config('app.name', 'Perpus') }}.</span>
</footer>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
const sidebar = document.getElementById('sidebar');
const mainWrapper = document.querySelector('.main-wrapper');
const overlay = document.getElementById('overlay');
const sidebarToggle = document.getElementById('sidebarToggle');
const closeSidebarMobile = document.getElementById('closeSidebarMobile');
const isDesktop = () => window.innerWidth >= 992;
// Fungsi untuk toggle sidebar di mobile
function toggleMobileSidebar() {
sidebar.classList.toggle('active');
overlay.classList.toggle('active');
}
// Fungsi untuk toggle sidebar di desktop
function toggleDesktopSidebar() {
sidebar.classList.toggle('minimized');
mainWrapper.classList.toggle('sidebar-minimized');
}
// Event listener untuk tombol hamburger utama
sidebarToggle.addEventListener('click', function() {
if (isDesktop()) {
toggleDesktopSidebar();
} else {
toggleMobileSidebar();
}
});
// Event listener untuk overlay & tombol close (hanya di mobile)
const closeButtons = [overlay, closeSidebarMobile];
closeButtons.forEach(el => {
if (el) {
el.addEventListener('click', function() {
if (!isDesktop()) {
toggleMobileSidebar();
}
});
}
});
});
</script>
</body>
</html>