File size: 3,069 Bytes
10dc6f2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{{ $title ?? 'Panel' }} — Eventify</title>
    @vite(['resources/css/app.css', 'resources/js/app.js'])
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
    <script src="https://unpkg.com/lucide@latest"></script>
    <style>* { font-family: 'Inter', sans-serif; }</style>
</head>
<body class="bg-gray-50 min-h-screen flex">

    {{-- Sidebar --}}
    <aside class="w-64 bg-white border-r border-gray-200 min-h-screen fixed left-0 top-0 flex flex-col z-40">
        <div class="p-5 border-b border-gray-100">
            <a href="{{ route('home') }}" class="flex items-center gap-2 text-lg font-bold text-gray-800">
                <span class="w-8 h-8 rounded-lg bg-purple-600 flex items-center justify-center"><i data-lucide="ticket" class="w-4 h-4 text-white"></i></span>
                Eventify
            </a>
            <p class="text-xs text-purple-600 font-medium mt-1 uppercase tracking-wide">{{ $panelName ?? 'Panel' }}</p>
        </div>

        <nav class="flex-1 p-4 space-y-1">
            {{ $sidebar }}
        </nav>

        <div class="p-4 border-t border-gray-100">
            <div class="flex items-center gap-3">
                <div class="w-8 h-8 rounded-full bg-purple-100 flex items-center justify-center text-purple-600 font-bold text-sm">{{ substr(auth()->user()->name, 0, 1) }}</div>
                <div class="flex-1 min-w-0">
                    <p class="text-sm font-medium text-gray-800 truncate">{{ auth()->user()->name }}</p>
                    <p class="text-xs text-gray-500 capitalize">{{ auth()->user()->role }}</p>
                </div>
            </div>
        </div>
    </aside>

    {{-- Main --}}
    <div class="ml-64 flex-1 min-h-screen">
        {{-- Topbar --}}
        <header class="h-14 border-b border-gray-200 bg-white flex items-center justify-between px-6 sticky top-0 z-30">
            <h1 class="text-lg font-semibold text-gray-800">{{ $header ?? '' }}</h1>
            <form method="POST" action="{{ route('logout') }}">
                @csrf
                <button class="text-sm text-gray-500 hover:text-gray-800 flex items-center gap-1"><i data-lucide="log-out" class="w-4 h-4"></i> Keluar</button>
            </form>
        </header>

        {{-- Flash --}}
        <div class="px-6 pt-4">
            @if(session('success'))
                <div class="bg-emerald-50 border border-emerald-200 text-emerald-700 px-4 py-3 rounded-xl text-sm mb-4">{{ session('success') }}</div>
            @endif
            @if(session('error'))
                <div class="bg-red-50 border border-red-200 text-red-700 px-4 py-3 rounded-xl text-sm mb-4">{{ session('error') }}</div>
            @endif
        </div>

        {{-- Content --}}
        <main class="p-6">
            {{ $slot }}
        </main>
    </div>

    <script>lucide.createIcons();</script>
</body>
</html>