@php
    $details = json_decode((string) ($campaign?->notes ?? ''), true);
    $details = is_array($details) ? $details : [];
    $draft = is_array($draft ?? null) ? $draft : [];
    $details = array_replace($details, $draft);
    $complete = $campaign !== null;
    $value = static fn ($item): string => filled($item) ? (string) $item : '—';
    $type = strtolower((string) ($details['campaign_type'] ?? ($campaignType ?? 'search')));
    $typeLabel = match ($type) {
        'performance_max' => 'Performance Max',
        'display' => 'Display',
        'shopping' => 'Shopping',
        default => 'Search',
    };
    $row = static function (string $label, $item) use ($value): array {
        return [$label, $value($item), filled($item) ? 'bg-success' : 'bg-secondary-subtle'];
    };
    $steps = [
        ['key' => 'landing_url', 'label' => 'Landing page', 'done' => filled($details['final_url'] ?? null) || filled($details['landing_url'] ?? null)],
        ['key' => 'account', 'label' => 'Google account', 'done' => (bool) ($accountSelected ?? false)],
        ['key' => 'campaign_type', 'label' => 'Campaign type', 'done' => filled($details['campaign_type'] ?? null) || filled($campaignType ?? null)],
        ['key' => 'fields', 'label' => 'Campaign fields', 'done' => collect(['campaign_name', 'conversion_goal', 'bidding_strategy', 'daily_budget', 'locations', 'languages'])->every(fn (string $key): bool => filled($details[$key] ?? null))],
        ['key' => 'confirmation', 'label' => 'Confirm & launch', 'done' => $complete],
    ];
    $settled = collect($steps)->where('done', true)->count();
    $nextStep = collect($steps)->first(fn (array $step): bool => ! $step['done']);
@endphp

<div class="d-flex justify-content-between align-items-start mb-3">
    <strong>{{ $campaign?->name ?: 'New Google campaign' }}</strong>
    @if ($campaign)
        <span class="badge {{ $campaign->status === 'enabled' ? 'text-bg-success' : 'text-bg-secondary' }}">{{ $campaign->status }}</span>
    @else
        <span class="badge text-bg-light border">draft</span>
    @endif
</div>

<div class="mb-progress mb-3">
    <div class="mb-progress-head">
        <span class="mb-progress-count">{{ $settled }} of {{ count($steps) }}</span>
        <span class="mb-progress-next{{ $nextStep ? '' : ' is-ready' }}">{{ $nextStep ? 'Next: '.$nextStep['label'] : 'Everything answered' }}</span>
    </div>
    <div class="mb-progress-track" role="progressbar" aria-valuenow="{{ $settled }}" aria-valuemin="0" aria-valuemax="{{ count($steps) }}" aria-label="Google campaign setup progress">
        <span class="mb-progress-fill" style="width: {{ round($settled / count($steps) * 100) }}%"></span>
    </div>
    <ol class="mb-progress-steps">
        @foreach ($steps as $step)
            <li class="mb-progress-step{{ $step['done'] ? ' is-done' : '' }}{{ $nextStep && $nextStep['key'] === $step['key'] ? ' is-next' : '' }}">
                <i class="bi {{ $step['done'] ? 'bi-check-circle-fill' : 'bi-circle' }}"></i> {{ $step['label'] }}
            </li>
        @endforeach
    </ol>
</div>

<div class="small text-uppercase fw-semibold text-muted mb-2">Campaign details</div>
<table class="table table-sm mb-3">
    <tbody>
        @foreach ([
            $row('Campaign', $campaign?->name ?: ($details['campaign_name'] ?? $details['name'] ?? null)),
            $row('Objective', $details['conversion_goal'] ?? null),
            $row('Campaign type', $typeLabel),
            $row('Daily budget', $campaign?->daily_budget ?: ($details['daily_budget'] ?? null)),
            $row('Bidding', $details['bidding_strategy'] ?? null),
            $row($type === 'performance_max' ? 'Asset group' : 'Ad group', $type === 'performance_max' ? ($details['asset_group_name'] ?? null) : $campaign?->ad_group_name),
            $row('Locations', $details['locations'] ?? $details['location'] ?? $details['target_locations'] ?? null),
            $row('Languages', $details['languages'] ?? $details['language'] ?? $details['target_languages'] ?? null),
            $row('Networks', $details['networks'] ?? null),
            $row('Landing page', $campaign?->final_url ?: ($details['final_url'] ?? null)),
            $row('Campaign ID', $campaign?->google_campaign_id),
            $row('Asset group ID', $campaign?->google_asset_group_id),
            $row('Ad group ID', $campaign?->google_ad_group_id),
            $row('Ad ID', $campaign?->google_ad_id),
        ] as [$label, $display, $dot])
            <tr>
                <td class="text-body-secondary" style="width: 42%;">
                    <span class="mb-dot {{ $dot }}"></span>{{ $label }}
                </td>
                <td class="text-break">{{ $display }}</td>
            </tr>
        @endforeach
    </tbody>
</table>

@if ($type === 'search')
    <div class="small text-uppercase fw-semibold text-muted mb-2">Search setup</div>
    <table class="table table-sm mb-3"><tbody>
        <tr><td class="text-body-secondary">Keywords</td><td class="text-break">{{ $value($details['keywords'] ?? null) }}</td></tr>
    </tbody></table>
@elseif ($type === 'display')
    <div class="small text-uppercase fw-semibold text-muted mb-2">Display creative</div>
    <table class="table table-sm mb-3"><tbody>
        <tr><td class="text-body-secondary">Business name</td><td class="text-break">{{ $value($details['business_name'] ?? null) }}</td></tr>
        <tr><td class="text-body-secondary">Long headline</td><td class="text-break">{{ $value($details['long_headline'] ?? null) }}</td></tr>
        <tr><td class="text-body-secondary">Marketing images</td><td class="text-break">{{ $value(is_array($details['marketing_image_assets'] ?? null) ? implode(', ', $details['marketing_image_assets']) : ($details['marketing_image_assets'] ?? null)) }}</td></tr>
        <tr><td class="text-body-secondary">Square images</td><td class="text-break">{{ $value(is_array($details['square_marketing_image_assets'] ?? null) ? implode(', ', $details['square_marketing_image_assets']) : ($details['square_marketing_image_assets'] ?? null)) }}</td></tr>
    </tbody></table>
@elseif ($type === 'shopping')
    <div class="small text-uppercase fw-semibold text-muted mb-2">Shopping setup</div>
    <table class="table table-sm mb-3"><tbody>
        <tr><td class="text-body-secondary">Merchant Center ID</td><td class="text-break">{{ $value($details['merchant_center_id'] ?? null) }}</td></tr>
        <tr><td class="text-body-secondary">Feed country</td><td>{{ $value($details['feed_country'] ?? null) }}</td></tr>
        <tr><td class="text-body-secondary">Feed language</td><td>{{ $value($details['feed_language'] ?? null) }}</td></tr>
        <tr><td class="text-body-secondary">Product group</td><td class="text-break">{{ $value($details['product_group'] ?? null) }}</td></tr>
    </tbody></table>
@else
    <div class="small text-uppercase fw-semibold text-muted mb-2">Performance Max assets</div>
    <table class="table table-sm mb-3"><tbody>
        <tr><td class="text-body-secondary">Headlines</td><td class="text-break">{{ $value(is_array($details['headlines'] ?? null) ? implode(', ', $details['headlines']) : ($details['headlines'] ?? null)) }}</td></tr>
        <tr><td class="text-body-secondary">Long headlines</td><td class="text-break">{{ $value(is_array($details['long_headlines'] ?? null) ? implode(', ', $details['long_headlines']) : ($details['long_headlines'] ?? null)) }}</td></tr>
        <tr><td class="text-body-secondary">Descriptions</td><td class="text-break">{{ $value(is_array($details['descriptions'] ?? null) ? implode(', ', $details['descriptions']) : ($details['descriptions'] ?? null)) }}</td></tr>
        <tr><td class="text-body-secondary">Marketing images</td><td class="text-break">{{ $value(is_array($details['marketing_image_assets'] ?? null) ? implode(', ', $details['marketing_image_assets']) : ($details['marketing_image_assets'] ?? null)) }}</td></tr>
        <tr><td class="text-body-secondary">Square images</td><td class="text-break">{{ $value(is_array($details['square_marketing_image_assets'] ?? null) ? implode(', ', $details['square_marketing_image_assets']) : ($details['square_marketing_image_assets'] ?? null)) }}</td></tr>
        <tr><td class="text-body-secondary">Logo assets</td><td class="text-break">{{ $value(is_array($details['logo_image_assets'] ?? null) ? implode(', ', $details['logo_image_assets']) : ($details['logo_image_assets'] ?? null)) }}</td></tr>
        <tr><td class="text-body-secondary">YouTube assets</td><td class="text-break">{{ $value(is_array($details['youtube_video_assets'] ?? null) ? implode(', ', $details['youtube_video_assets']) : ($details['youtube_video_assets'] ?? null)) }}</td></tr>
    </tbody></table>
@endif

<div class="small text-body-secondary">
    Google Ads campaigns are created paused. Publish enables the campaign after review.
</div>