This commit is contained in:
Laucha1312
2026-06-04 15:20:26 -03:00
parent fdd0fef3f0
commit cc049c6cb6
64 changed files with 8914 additions and 0 deletions
+105
View File
@@ -0,0 +1,105 @@
@extends('layouts.app')
@section('title', 'Partidos - OnAPB')
@section('styles')
<link rel="stylesheet" href="{{ asset('static/eventos.css?v=5') }}">
@endsection
@section('content')
<div class="container-fluid py-5" style="background: var(--surface);">
<div class="container py-4">
<h1 class="display-1 fw-bold mb-5" style="letter-spacing: -0.05em;">Calendario <span class="text-primary">ONAPB</span></h1>
<!-- Horizontal Date Scroller -->
<div class="mb-5 overflow-hidden position-relative">
<div class="d-flex gap-3 overflow-auto pb-3 no-scrollbar" style="scroll-behavior: smooth;">
@foreach($fechasNav as $nav)
<a href="{{ route('eventos.index', ['fecha' => $nav['fecha']]) }}"
class="flex-shrink-0 text-decoration-none px-4 py-3 text-center d-flex flex-column justify-content-center {{ $nav['active'] ? 'bg-primary text-white' : 'bg-white text-kinetic-muted' }}"
style="min-width: 100px; transition: all 0.3s ease; border: 1px solid var(--outline-variant);">
<span class="small fw-bold text-uppercase">{{ explode(' ', $nav['label'])[0] }}</span>
<span class="fs-4 fw-bold">{{ explode(' ', $nav['label'])[1] }}</span>
</a>
@endforeach
</div>
<!-- Linear gradients for scroll indication -->
<div class="position-absolute top-0 start-0 h-100" style="width: 40px; background: linear-gradient(to right, var(--surface), transparent); pointer-events: none;"></div>
<div class="position-absolute top-0 end-0 h-100" style="width: 40px; background: linear-gradient(to left, var(--surface), transparent); pointer-events: none;"></div>
</div>
<!-- Match List -->
<div class="row g-4">
@if($eventos->isEmpty())
<div class="col-12 text-center py-5">
<div class="kinetic-card p-5">
<i class="bi bi-calendar-x text-muted mb-3" style="font-size: 3rem;"></i>
<p class="fs-4 text-muted">No hay partidos programados para esta fecha.</p>
</div>
</div>
@else
@foreach($eventos as $e)
@php
$localClub = $e->equipoLocal?->club;
$visitanteClub = $e->equipoVisitante?->club;
$isLive = $e->estado === 'Activo';
@endphp
<div class="col-12">
<a href="{{ route('eventos.show', $e->id_evento) }}" class="text-decoration-none">
<div class="kinetic-card p-0 overflow-hidden d-flex flex-column flex-md-row align-items-stretch"
style="border-left: {{ $isLive ? '8px solid var(--primary)' : 'none' }}; min-height: 120px;">
<!-- Status/Time (Asymmetric Side) -->
<div class="p-4 d-flex flex-column justify-content-center text-center bg-light" style="width: 150px; border-right: 1px solid var(--outline-variant);">
@if($isLive)
<span class="badge bg-primary mb-2 pulse">EN VIVO</span>
@else
<span class="small fw-bold text-uppercase text-muted mb-1">{{ $e->estado }}</span>
@endif
<span class="fs-3 fw-bold">{{ \Carbon\Carbon::parse($e->hora_inicio)->format('H:i') }}</span>
</div>
<!-- Teams (Center) -->
<div class="flex-grow-1 p-4 d-flex align-items-center justify-content-between px-md-5">
<div class="d-flex align-items-center gap-3 text-start" style="width: 40%;">
<div style="width: 50px; height: 50px;">
@if($localClub && $localClub->imagen)
<img src="{{ asset($localClub->imagen) }}" class="img-fluid rounded-circle" alt="{{ $localClub->nombre }}">
@else
<div class="w-100 h-100 bg-light rounded-circle d-flex align-items-center justify-content-center text-muted"><i class="bi bi-shield"></i></div>
@endif
</div>
<h3 class="h4 mb-0 fw-bold">{{ $localClub?->nombre ?? 'Local' }}</h3>
</div>
<div class="text-center px-3">
<span class="fs-2 fw-bold text-muted">VS</span>
</div>
<div class="d-flex align-items-center gap-3 text-end justify-content-end" style="width: 40%;">
<h3 class="h4 mb-0 fw-bold">{{ $visitanteClub?->nombre ?? 'Visitante' }}</h3>
<div style="width: 50px; height: 50px;">
@if($visitanteClub && $visitanteClub->imagen)
<img src="{{ asset($visitanteClub->imagen) }}" class="img-fluid rounded-circle" alt="{{ $visitanteClub->nombre }}">
@else
<div class="w-100 h-100 bg-light rounded-circle d-flex align-items-center justify-content-center text-muted"><i class="bi bi-shield"></i></div>
@endif
</div>
</div>
</div>
<!-- Venue (Right) -->
<div class="p-4 d-none d-md-flex flex-column justify-content-center text-muted" style="width: 250px; border-left: 1px solid var(--outline-variant);">
<span class="small fw-bold text-uppercase">Sede</span>
<span class="small"><i class="bi bi-geo-alt"></i> {{ $e->sede ?? 'TBD' }}</span>
</div>
</div>
</a>
</div>
@endforeach
@endif
</div>
</div>
</div>
@endsection
+119
View File
@@ -0,0 +1,119 @@
@extends('layouts.app')
@section('title', 'Detalle Partido - OnAPB')
@section('content')
@section('content')
<div class="container-fluid py-5" style="background: var(--surface);">
<div class="container py-4">
<?php
$nombreEvento = $evento->nombre_evento ?? (
($evento->equipoLocal?->club?->nombre ?? 'Local') . ' vs ' . ($evento->equipoVisitante?->club?->nombre ?? 'Visitante')
);
$localClub = $evento->equipoLocal?->club;
$visitanteClub = $evento->equipoVisitante?->club;
?>
<div class="row g-5">
<!-- Header Editorial Side -->
<div class="col-lg-8">
<div class="mb-5">
<span class="text-primary fw-bold tracking-widest text-uppercase mb-2 d-block">Match Profile</span>
<h1 class="display-2 fw-bold mb-4" style="line-height: 0.9;">{{ $nombreEvento }}</h1>
<div style="width: 120px; height: 10px; background: var(--primary);"></div>
</div>
<!-- Score/Teams Editorial -->
<div class="kinetic-card p-0 mb-5 overflow-hidden">
<div class="row g-0 align-items-center text-center">
<div class="col-5 p-5 bg-light">
@if($localClub && $localClub->imagen)
<img src="{{ asset($localClub->imagen) }}" class="img-fluid rounded-circle mb-3" style="width: 120px;" alt="{{ $localClub->nombre }}">
@endif
<h3 class="h2 fw-bold text-uppercase">{{ $localClub?->nombre ?? 'Local' }}</h3>
<span class="text-muted small fw-bold">{{ $evento->equipoLocal?->categoria }}</span>
</div>
<div class="col-2 p-4">
<span class="display-4 fw-bold text-muted">VS</span>
</div>
<div class="col-5 p-5 bg-white">
@if($visitanteClub && $visitanteClub->imagen)
<img src="{{ asset($visitanteClub->imagen) }}" class="img-fluid rounded-circle mb-3" style="width: 120px;" alt="{{ $visitanteClub->nombre }}">
@endif
<h3 class="h2 fw-bold text-uppercase">{{ $visitanteClub?->nombre ?? 'Visitante' }}</h3>
<span class="text-muted small fw-bold">{{ $evento->equipoVisitante?->categoria }}</span>
</div>
</div>
</div>
<!-- Info Grid -->
<div class="row g-4 mb-5">
<div class="col-md-4">
<div class="bg-white p-4" style="border-bottom: 4px solid var(--primary-container);">
<span class="text-muted small fw-bold text-uppercase d-block mb-1">Fecha</span>
<span class="fs-5 fw-bold">{{ \Carbon\Carbon::parse($evento->fecha_evento)->translatedFormat('d F Y') }}</span>
</div>
</div>
<div class="col-md-4">
<div class="bg-white p-4" style="border-bottom: 4px solid var(--primary-container);">
<span class="text-muted small fw-bold text-uppercase d-block mb-1">Horario</span>
<span class="fs-5 fw-bold">{{ \Carbon\Carbon::parse($evento->hora_inicio)->format('H:i') }} hs</span>
</div>
</div>
<div class="col-md-4">
<div class="bg-white p-4" style="border-bottom: 4px solid var(--primary-container);">
<span class="text-muted small fw-bold text-uppercase d-block mb-1">Estado</span>
<span class="fs-5 fw-bold {{ $evento->estado === 'Activo' ? 'text-primary' : '' }} text-uppercase">{{ $evento->estado }}</span>
</div>
</div>
</div>
<!-- Venue Map Placeholder -->
<div class="kinetic-card p-4 bg-light">
<h4 class="fw-bold mb-3">UBICACIÓN</h4>
<p class="fs-5 mb-0"><i class="bi bi-geo-alt-fill text-primary"></i> {{ $evento->sede ?? 'Sede a confirmar' }}</p>
</div>
</div>
<!-- Action Sidebar -->
<div class="col-lg-4">
<div class="sticky-top" style="top: 100px;">
<div class="kinetic-card bg-primary text-white p-5 text-center">
<h4 class="display-6 fw-bold mb-4">ENTRADAS</h4>
<p class="fs-4 mb-5">
@if($evento->precio > 0)
${{ number_format($evento->precio, 0, ',', '.') }} <span class="fs-6 opacity-75">/ entrada</span>
@else
FREE <span class="fs-6 opacity-75">/ asociados</span>
@endif
</p>
@if($evento->estado !== 'Finalizado')
@if($isUser)
<form method="POST" action="{{ route('panel.solicitar.qr') }}" class="confirm-submit mb-3" data-confirm-text="¿Solicitar QR (entrada) para este evento?">
@csrf
<input type="hidden" name="id_evento" value="{{ $evento->id_evento }}">
<button type="submit" class="btn btn-light btn-lg w-100 fw-bold py-3" style="border-radius: 0;">SOLICITAR QR</button>
</form>
<a href="{{ route('panel.mis.qrs', ['evento' => $evento->id_evento]) }}" class="text-white text-decoration-none small fw-bold">VER MIS REGISTROS <i class="bi bi-arrow-right"></i></a>
@elseif(!$isAdmin)
<button class="btn btn-outline-light btn-lg w-100 fw-bold" style="border-radius: 0;" data-bs-toggle="modal" data-bs-target="#loginModal">INICIAR SESIÓN</button>
@endif
@endif
@if($isAdmin)
<div class="mt-5 pt-5 border-top border-white border-opacity-25">
<a href="{{ route('admin.eventos.edit', $evento->id_evento) }}" class="btn btn-dark w-100 text-uppercase fw-bold mb-2">Editar Evento</a>
</div>
@endif
</div>
<div class="mt-4 text-center">
<a href="{{ route('eventos.index') }}" class="text-decoration-none text-muted small fw-bold"><i class="bi bi-arrow-left"></i> VOLVER AL CALENDARIO</a>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection