186 lines
8.5 KiB
PHP
Executable File
186 lines
8.5 KiB
PHP
Executable File
<!DOCTYPE html>
|
|
<html lang="es">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta name="description" content="Lash Vanshy - Panel de Administración">
|
|
<title>@yield('title', 'Dashboard - Lash Vanshy')</title>
|
|
|
|
<!-- Fonts -->
|
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet">
|
|
|
|
<!-- Bootstrap CSS -->
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
<!-- Font Awesome -->
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
|
|
<!-- Bootstrap Icons -->
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.2/font/bootstrap-icons.min.css">
|
|
|
|
<!-- Estilos personalizados -->
|
|
<link rel="stylesheet" href="{{ asset('css/admin.css') }}">
|
|
|
|
@stack('styles')
|
|
</head>
|
|
<body>
|
|
<div class="admin-wrapper">
|
|
<!-- Sidebar -->
|
|
<aside class="admin-sidebar">
|
|
<div class="sidebar-header">
|
|
<a href="{{ route('admin.dashboard') }}" class="brand">
|
|
<span class="brand-icon">✨</span>
|
|
<span class="brand-text">Lash Vanshy</span>
|
|
</a>
|
|
<span class="badge bg-danger">Admin</span>
|
|
</div>
|
|
|
|
<nav class="sidebar-nav">
|
|
<ul class="nav flex-column">
|
|
<li class="nav-item">
|
|
<a href="{{ route('admin.dashboard') }}"
|
|
class="nav-link {{ request()->routeIs('admin.dashboard') ? 'active' : '' }}">
|
|
<i class="fas fa-home"></i>
|
|
<span>Dashboard</span>
|
|
</a>
|
|
</li>
|
|
|
|
<li class="nav-item">
|
|
<a href="{{ route('admin.galeria.index') }}"
|
|
class="nav-link {{ request()->routeIs('admin.galeria.*') ? 'active' : '' }}">
|
|
<i class="fas fa-images"></i>
|
|
<span>Galería / Modelos</span>
|
|
</a>
|
|
</li>
|
|
|
|
<li class="nav-item">
|
|
<a href="{{ route('admin.productos.index') }}"
|
|
class="nav-link {{ request()->routeIs('admin.productos.*') ? 'active' : '' }}">
|
|
<i class="fas fa-spa"></i>
|
|
<span>Productos / Servicios</span>
|
|
</a>
|
|
</li>
|
|
|
|
<li class="nav-item">
|
|
<a href="{{ route('admin.mensajes.index') }}"
|
|
class="nav-link {{ request()->routeIs('admin.mensajes.*') ? 'active' : '' }}">
|
|
<i class="fas fa-envelope"></i>
|
|
<span>Mensajes</span>
|
|
@php
|
|
$noLeidos = \App\Models\Mensaje::noLeidos()->count();
|
|
@endphp
|
|
@if($noLeidos > 0)
|
|
<span class="badge bg-danger ms-auto">{{ $noLeidos }}</span>
|
|
@endif
|
|
</a>
|
|
</li>
|
|
|
|
<li class="nav-item">
|
|
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
|
|
<i class="fas fa-calendar-alt"></i>
|
|
<span>Citas</span>
|
|
</a>
|
|
<ul class="dropdown-menu">
|
|
<li>
|
|
<a href="{{ route('admin.citas.index') }}" class="dropdown-item {{ request()->routeIs('admin.citas.index') ? 'active' : '' }}">
|
|
<i class="fas fa-list me-2"></i>Lista de Citas
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="{{ route('admin.citas.calendario') }}" class="dropdown-item {{ request()->routeIs('admin.citas.calendario') ? 'active' : '' }}">
|
|
<i class="fas fa-calendar me-2"></i>Calendario
|
|
</a>
|
|
</li>
|
|
<li><hr class="dropdown-divider"></li>
|
|
<li>
|
|
<a href="{{ route('admin.horarios.index') }}" class="dropdown-item {{ request()->routeIs('admin.horarios.*') ? 'active' : '' }}">
|
|
<i class="fas fa-clock me-2"></i>Horarios Bloqueados
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
|
|
@if(Auth::guard('admin')->user()->rol === 'super_admin')
|
|
<li class="nav-item">
|
|
<a href="{{ route('admin.configuracion.index') }}"
|
|
class="nav-link {{ request()->routeIs('admin.configuracion.*') ? 'active' : '' }}">
|
|
<i class="fas fa-cog"></i>
|
|
<span>Configuración</span>
|
|
</a>
|
|
</li>
|
|
@endif
|
|
</ul>
|
|
</nav>
|
|
|
|
<div class="sidebar-footer">
|
|
<div class="user-info">
|
|
<div class="user-avatar">
|
|
{{ strtoupper(substr(Auth::guard('admin')->user()->name, 0, 1)) }}
|
|
</div>
|
|
<div class="user-details">
|
|
<span class="user-name">{{ Auth::guard('admin')->user()->name }}</span>
|
|
<span class="user-role">{{ Auth::guard('admin')->user()->rol === 'super_admin' ? 'Super Admin' : 'Admin' }}</span>
|
|
</div>
|
|
</div>
|
|
<form action="{{ route('admin.logout') }}" method="POST" class="mt-3">
|
|
@csrf
|
|
<button type="submit" class="btn btn-logout w-100">
|
|
<i class="fas fa-sign-out-alt me-2"></i>Cerrar Sesión
|
|
</button>
|
|
</form>
|
|
</div>
|
|
</aside>
|
|
|
|
<!-- Main Content -->
|
|
<main class="admin-main">
|
|
<!-- Top Header -->
|
|
<header class="admin-header">
|
|
<div class="header-left">
|
|
<button class="btn-toggle-sidebar d-lg-none" onclick="toggleSidebar()">
|
|
<i class="fas fa-bars"></i>
|
|
</button>
|
|
<h1 class="page-title">@yield('page-title', 'Dashboard')</h1>
|
|
</div>
|
|
<div class="header-right">
|
|
<span class="current-date">
|
|
<i class="fas fa-calendar-alt me-2"></i>
|
|
{{ now()->format('d/m/Y') }}
|
|
</span>
|
|
</div>
|
|
</header>
|
|
|
|
<!-- Content -->
|
|
<div class="admin-content">
|
|
@if(session('success'))
|
|
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
|
<i class="fas fa-check-circle me-2"></i>
|
|
{{ session('success') }}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
@endif
|
|
|
|
@if(session('error'))
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="fas fa-exclamation-circle me-2"></i>
|
|
{{ session('error') }}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
@endif
|
|
|
|
@yield('content')
|
|
</div>
|
|
</main>
|
|
</div>
|
|
|
|
<!-- Bootstrap JS -->
|
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
|
|
|
@stack('scripts')
|
|
|
|
<script>
|
|
function toggleSidebar() {
|
|
document.querySelector('.admin-sidebar').classList.toggle('show');
|
|
}
|
|
</script>
|
|
</body>
|
|
</html> |