@if(session('success'))
{{ session('success') }}
@endif {{-- Banner contextual: explica qué pasa con cada status filtrado --}} @php $stf = request('status'); @endphp @if($stf === 'ready')
Estos misiles están en cola de CD

Ya los aprobaste para disparar. CD los selecciona y provisiona los sitios manualmente. Vas a recibir notificación in-app cuando cada uno esté listo. Mientras tanto, podés volver a tu cartera completa.

@elseif($stf === 'launched')
Misiles ya lanzados — empezá a contactar

Sitios provisionados. Entrá a cada uno para ver el Tenant Tracking (estado de branding y contenido) y arrancar el outreach con scripts pre-cargados.

@endif {{-- ═══════════════════════════════════════════════════════════════ STAGE FILTER CHIPS — 5 columnas color-coded como filtros ═══════════════════════════════════════════════════════════════ --}}
@php $activeStage = request('stage'); @endphp Todos {{ array_sum($stageCounts) }} @foreach($stageColumns as $stageKey => $col) {{ $col['label'] }} {{ $stageCounts[$stageKey] ?? 0 }} @endforeach
{{ $totalMisiles }} {{ $totalMisiles === 1 ? 'misil' : 'misiles' }}
{{-- ═══════════════════════════════════════════════════════════════ TOOLBAR — Search + Product + Quick filters ═══════════════════════════════════════════════════════════════ --}}
{{-- Mantener stage filter al hacer search --}} @if(request('stage')) @endif {{-- Search --}}
{{-- Producto --}}
{{-- Zona --}}
{{-- Sub-producto --}}
{{-- Submit + Clear --}}
@if($hasFilters) @endif
{{-- Quick filters + sort --}}
{{-- Toggle vista (extra) --}}
@php $contactFilter = (string) request('contact', ''); @endphp @if($contactFilter === 'untouched') Sin contactar @elseif($contactFilter === 'touched') Contactados @else Solo sin contactar Solo contactados @endif {{-- Filtros de asignación (pool compartido OLA 5) --}} @php $cur = (string) request('assignee', ''); @endphp Míos Sin asignar De otros @if($cur) @endif {{-- Toggle modo bulk --}}
{{-- Toggle vista cards / table / kanban --}} @php $currentView = request('view', 'cards'); @endphp
{{-- Bulk action toolbar (fixed bottom, hidden por default) --}}
0 seleccionados
@csrf
{{-- OLA 9: bulk Aprobar y lanzar (primary) — con confirmación + check de límite --}}
{{-- ═══════════════════════════════════════════════════════════════ HEATMAP TOGGLE — vista patrón geográfico (OLA 7.4) ═══════════════════════════════════════════════════════════════ --}} @if(!empty($heatmapZones) && !empty($heatmapSubs))
@endif {{-- ═══════════════════════════════════════════════════════════════ CARDS GRID — 3 columnas desktop, 2 tablet, 1 mobile ═══════════════════════════════════════════════════════════════ --}} @if($paginated->isEmpty())
@if($hasFilters)

Sin resultados con esos filtros

Probá limpiar los filtros o cambiar el rango de búsqueda.

Limpiar filtros @else

No tenés misiles aún

Solicitá tu primer misil a CD para que te preparen el lead con demo lista y empezar a contactar prospects.

Solicitar mi primer misil @endif
@elseif(($currentView ?? 'cards') === 'table') {{-- ════════════ VISTA TABLA DENSA (OLA 7.4) ════════════ --}} @php $intelParser = app(\App\Services\LeadIntelParser::class); @endphp @foreach($paginated as $m) @php $intel = $intelParser->fromMissile($m); $stage = $m->salesStage(); $isSocial = $m->prospect_website && preg_match('/instagram|facebook|tiktok/i', $m->prospect_website); @endphp {{ $m->prospect_name ?: 'Sin nombre' }}
@if($m->prospect_address) {{ \Illuminate\Support\Str::limit($m->prospect_address, 40) }} @endif @if(!empty($intel['reviews_count'])) · {{ number_format($intel['reviews_count']) }} reviews @endif @if(!empty($intel['rating'])) · {{ $intel['rating'] }}★ @endif
@if($m->zone) {{ $m->zone }} @else @endif @if($m->sub_product) {{ ucwords(str_replace(['shops_', '_', '-'], ['', ' ', ' '], $m->sub_product)) }} @else @endif @if($m->prospect_website) @if($isSocial) IG @else Web @endif @else Sin web @endif @if(!empty($intel['lead_score'])) @php $scoreColor = $intel['lead_score'] >= 75 ? 'danger' : ($intel['lead_score'] >= 50 ? 'warning' : 'secondary'); @endphp {{ $intel['recommendation_emoji'] ?? '' }} {{ $intel['lead_score'] }} @else @endif
{{-- OLA 9: Lanzar inline si está launchable + en draft/branding_pending --}} @if(in_array($m->status, [\App\Models\MissileDraft::STATUS_DRAFT, \App\Models\MissileDraft::STATUS_BRANDING_PENDING], true) && $m->isLaunchable())
@csrf
@endif @if($m->status === \App\Models\MissileDraft::STATUS_LAUNCHED && $m->launchedProject?->domain) @endif
@endforeach
{{-- Paginación --}}
Mostrando {{ $paginated->firstItem() }}–{{ $paginated->lastItem() }} de {{ $paginated->total() }}
{{ $paginated->withQueryString()->links() }}
@elseif(($currentView ?? 'cards') === 'kanban') {{-- ════════════ VISTA KANBAN ════════════ --}} @php // Agrupar la página actual por status $byStatus = [ 'draft' => $paginated->where('status', 'draft'), 'ready' => $paginated->where('status', 'ready'), 'launched' => $paginated->where('status', 'launched'), 'rejected' => $paginated->where('status', 'rejected'), ]; $statusMeta = [ 'draft' => ['label' => 'Sin revisar', 'color' => 'secondary', 'icon' => 'bi-inbox'], 'ready' => ['label' => 'Aprobados', 'color' => 'success', 'icon' => 'bi-check-circle'], 'launched' => ['label' => 'Lanzados', 'color' => 'primary', 'icon' => 'bi-rocket-takeoff'], 'rejected' => ['label' => 'Descartados', 'color' => 'danger', 'icon' => 'bi-x-circle'], ]; @endphp
@foreach($byStatus as $st => $items) @php $meta = $statusMeta[$st]; @endphp
{{ $meta['label'] }}
{{ $items->count() }}
@endforeach
Mostrando {{ $paginated->firstItem() }}–{{ $paginated->lastItem() }} de {{ $paginated->total() }}
{{ $paginated->withQueryString()->links() }}
@else {{-- ════════════ VISTA CARDS (default) ════════════ --}}
@foreach($paginated as $missile)
{{-- Checkbox bulk (hidden por default, se muestra en modo selección) --}}
@endforeach
{{-- Paginación --}}
Mostrando {{ $paginated->firstItem() }}–{{ $paginated->lastItem() }} de {{ $paginated->total() }}
{{ $paginated->withQueryString()->links() }}
@endif {{-- ═══════════════ JS de bulk selection ═══════════════ --}}