{{-- Layout principal de Control Tower (specs/layout.md). No se edita para una vista concreta. --}} @php $menu = app(\App\Services\MenuNavegacion::class); $modulos = $menu->arbol(); $actual = $menu->actual(); $usuario = auth()->user(); // El nombre sale de la base: la sesión no siempre trae razon_social. $razonSocial = ucwords(mb_strtolower(app(\App\Services\TemaEmpresa::class)->actual()['razon_social'])); // Logo del cliente: el estándar es img//logo.png (rectangular, se muestra más grande). Mientras un // cliente no lo tenga, se queda el logo2.png de siempre, con su tamaño de siempre. $logoRectangular = session('folder') && file_exists(public_path('img/' . session('folder') . '/logo.png')); $logoEmpresa = 'img/' . session('folder') . '/' . ($logoRectangular ? 'logo.png' : 'logo2.png'); $logoEmpresa = session('folder') && file_exists(public_path($logoEmpresa)) ? $logoEmpresa : null; $iniciales = collect(preg_split('/\s+/', trim((string) ($usuario->name ?? '')))) ->filter()->take(2)->map(fn ($p) => mb_strtoupper(mb_substr($p, 0, 1)))->implode(''); $puedePersonalizar = $usuario && $usuario->can('empresa-personalizar'); // Selector de empresa (MigracionLayout.MD §4): permiso empresa-seleccionar y más de una compañía. $puedeElegirEmpresa = $usuario && app(\App\Services\SeleccionEmpresa::class)->disponible(); // Pantalla heredada (L2a): modo claro fijo y librerías de su antiguo iframe. $heredado = $heredado ?? false; @endphp {{ $titulo ?? 'Control Tower' }} · {{ $razonSocial ?: 'Asercol' }} {{-- Este layout nunca va dentro de un iframe: si lo cargan en uno (p. ej. /marco), sale a la ventana superior. --}} {{-- Modo oscuro antes del primer pintado, para que no destelle (layout.md §3). --}} {{-- Pantallas heredadas (L2a): el contenido no soporta modo oscuro, así que el oscuro se aplica solo al marco del layout (menú lateral, encabezado y barra de módulos, marcados con data-shell). --}} @include('partials.tema-empresa') @vite(['resources/css/ctc.css', 'resources/js/ctc.js'], 'ctc') @livewireStyles @if ($heredado) @include('layout.librerias-heredadas') @else {{-- Avisos de los componentes Livewire (partials.eventos-planti y livewire-browser-events). --}} @endif @stack('estilos') {{-- Franja de marca: primario -> secundario --}}
{{-- Fondo del cajón en móvil --}}
{{-- ============ SIDEBAR ============ --}} {{-- ============ COLUMNA PRINCIPAL ============ --}}
{{-- Encabezado --}}
{{-- Mostrar u ocultar el menú lateral: en escritorio lo oculta (y se recuerda); en móvil abre el cajón. --}} {{-- Empresa activa: neutro a propósito (layout.md §2, regla 4) --}}
{{-- Marca del cliente (alianza). logo.png: rectangular y grande, visible también en móvil. Sin él, el logo2.png de siempre con su tamaño de siempre. --}} @if ($logoEmpresa && $logoRectangular) @elseif ($logoEmpresa) @endif

Empresa activa

{{ $razonSocial }}

@if ($puedeElegirEmpresa) @livewire('layout.selector-grupo') @endif
{{-- Menú de usuario --}}

{{ $usuario->name ?? '' }}

{{ $usuario->email ?? '' }}

Cambiar mi contraseña @if ($puedePersonalizar) @endif
@csrf
{{-- Barra de módulos --}} {{-- Contenido: sin padding, la vista pone el suyo (layout.md §5) --}}
{{ $slot }}
@if ($puedePersonalizar) @livewire('layout.color-empresa') @endif @livewireScripts @include('partials.livewire-browser-events') @unless ($heredado) @include('partials.eventos-planti') @endunless @stack('scripts')