vueloenglobo.mx/resources/views/layouts/app.blade.php

164 lines
8.3 KiB
PHP

{{-- resources/views/dashboard.blade.php --}}
<!DOCTYPE html>
<html lang="es" class="scroll-smooth">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, initial-scale=1.0, viewport-fit=cover, maximum-scale=1.0, user-scalable=yes">
<meta name="description"
content="NexusCore Dashboard - Panel inteligente de métricas en tiempo real para operaciones 2026">
<meta name="theme-color" content="#3b82f6">
<title>Globo Puerto</title>
<!-- Preconnect para recursos externos -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="preconnect" href="https://cdn.jsdelivr.net">
<!-- Google Fonts -->
<link
href="https://fonts.googleapis.com/css2?family=Sora:wght@300;400;500;600;700;800&family=DM+Sans:opsz,wght@9..40,300;9..40,400;9..40,500;9..40,600;9..40,700&display=swap"
rel="stylesheet">
<!-- Bootstrap 5 CSS + Icons -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">
<!-- Chart.js -->
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js"></script>
<link rel="stylesheet" href="{{ asset('dashboard/css/dashboard.css') }}">
@stack('css')
</head>
<body>
<!-- Preloader con logo.png -->
<div class="preloader" id="preloader">
<img src="{{ asset('assets/img/logo.png') }}" alt="NexusCore Logo" class="preloader-logo"
onerror="this.style.display='none'">
<!-- Fallback por si no carga la imagen -->
<div class="spinner-border text-primary" style="width: 3rem; height: 3rem; display: none;"
id="preloaderFallback"></div>
</div>
<!-- Skip to content -->
<a href="#main-content" class="visually-hidden-focusable">Saltar al contenido principal</a>
<!-- Sidebar Backdrop -->
<div class="sidebar-backdrop" id="sidebarBackdrop"></div>
<div class="container-fluid p-0">
<div class="row g-0">
<!-- SIDEBAR -->
@include('admin.menu')
<!-- MAIN CONTENT -->
<main id="main-content" class="col flex-grow-1 min-vh-100" tabindex="-1">
<!-- Top Navbar -->
<nav class="navbar sticky-top bg-white bg-opacity-75 backdrop-blur-sm border-bottom px-3 px-md-4 py-2"
aria-label="Barra superior">
<div class="container-fluid">
<button class="btn btn-link text-secondary p-2 menu-toggle" id="menuToggleBtn"
aria-label="Abrir menú" aria-expanded="false" aria-controls="sidebar">
<i class="bi bi-list fs-3" aria-hidden="true"></i>
</button>
<div class="d-flex align-items-center gap-2 d-lg-none">
<img src="logo.png" alt="NexusCore" style="width: 32px; height: 32px; object-fit: contain;"
onerror="this.style.display='none'">
<span class="shimmer-text font-display fw-bold">Tablero</span>
</div>
<div class="d-none d-md-block flex-grow-1 mx-3" style="max-width: 300px;">
<div class="position-relative">
<i class="bi bi-search position-absolute top-50 start-0 translate-middle-y ms-3 text-secondary"
aria-hidden="true"></i>
<input type="text" class="form-control bg-light border-0 rounded-4 ps-5"
placeholder="Buscar con IA..." aria-label="Buscar">
</div>
</div>
<div class="d-flex align-items-center gap-2">
<button class="btn btn-link text-secondary p-2 d-md-none" aria-label="Buscar">
<i class="bi bi-search fs-5" aria-hidden="true"></i>
</button>
<div class="d-none d-sm-flex align-items-center gap-2 px-3 py-1 bg-light rounded-4">
<i class="bi bi-calendar3 text-primary" aria-hidden="true"></i>
<span class="small text-secondary" id="dateChip"></span>
</div>
<div class="position-relative">
<button class="btn btn-link text-secondary p-2" id="notifBtn"
aria-label="Notificaciones">
<i class="bi bi-bell fs-5" aria-hidden="true"></i>
<span
class="badge-pulse position-absolute top-0 start-100 translate-middle badge rounded-pill bg-primary"
id="notifBadge" style="font-size: 10px;">6</span>
</button>
</div>
<div class="dropdown">
<button
class="btn btn-link text-decoration-none dropdown-toggle d-flex align-items-center gap-2"
id="avatarDropdown" data-bs-toggle="dropdown" aria-expanded="false"
aria-label="Menú de usuario">
<img src="{{ asset('assets/img/logo.png') }}" class="rounded-2"
style="width: 36px; height: 36px;" alt="">
<span class="d-none d-sm-inline text-dark fw-semibold">Juan P.</span>
</button>
<ul class="dropdown-menu dropdown-menu-end rounded-4 border-0 shadow-lg p-2"
aria-labelledby="avatarDropdown">
<li><a class="dropdown-item rounded-3 py-2" href="#"><i
class="bi bi-person-circle me-2 text-primary" aria-hidden="true"></i>
Perfil avanzado</a></li>
<li><a class="dropdown-item rounded-3 py-2" href="#"><i
class="bi bi-gear me-2 text-primary" aria-hidden="true"></i>
Configuración</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li>
<form method="POST" action="{{ route('logout') }}" id="logout-form">
@csrf
<button type="submit" class="dropdown-item rounded-3 py-2 text-danger"
style="background: none; border: none; width: 100%; text-align: left;">
<i class="bi bi-box-arrow-right me-2" aria-hidden="true"></i> Cerrar
sesión
</button>
</form>
</li>
</ul>
</div>
</div>
</div>
</nav>
<!-- Scrollable Content -->
@yield('content')
<!-- Footer -->
<footer class="text-center pt-4 mt-3 border-top" role="contentinfo">
<p class="small text-secondary">
<i class="bi bi-database-check text-primary" aria-hidden="true"></i>
NexusCore Dashboard 2026 — AI-ready · Diseño responsive móvil
</p>
</footer>
</main>
</div>
</div>
</main>
</div>
</div>
<!-- Bootstrap 5 JS -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
<script src="{{ asset('dashboard/js/dashboard.js') }}"></script>
@stack('js')
</body>
</html>