@extends('layouts.app') @section('title', 'Leads') @section('content')

Leads

{{ $leads->total() }} prospect(s) in the pipeline.

Coverage zones + New lead
@foreach (['new' => 'New', 'contacted' => 'Contacted', 'qualified' => 'Qualified', 'proposal' => 'Proposal', 'converted' => 'Converted', 'lost' => 'Lost'] as $key => $label) @include('components.kpi', ['label' => $label, 'value' => number_format($counts[$key] ?? 0), 'variant' => $key === 'converted' ? 'good' : ($key === 'lost' ? 'bad' : ($key === 'new' ? 'warn' : '')), 'href' => route('leads.index', ['status' => $key])]) @endforeach
@forelse ($leads as $lead) @empty @endforelse
LeadContactServiceSourceOwner Est. valueStatusNext follow-up
{{ $lead->full_name }}
{{ $lead->lead_number }}
{{ $lead->phone }} @if ($lead->email)
{{ $lead->email }}
@endif
{{ $lead->serviceType?->name ?? '—' }}
{{ $lead->plan?->name }}
{{ title_case_words($lead->source) }} {{ $lead->owner?->name ?? 'Unassigned' }} {{ $lead->estimated_value > 0 ? money($lead->estimated_value) : '—' }} {{ $lead->status }} @if ($lead->next_follow_up_at) @if ($lead->next_follow_up_at->isPast()) overdue @else {{ $lead->next_follow_up_at->format('d M') }} @endif @else @endif Open
@include('components.empty-state', ['icon' => '★', 'title' => 'No leads found', 'message' => 'Capture enquiries from the coverage checker or add them manually.', 'action' => '+ New lead'])
@if ($leads->hasPages())
{{ $leads->links('partials.pagination') }}
@endif
@endsection