@extends('backend.landings.layout') @section('title', __('All Landing Pages')) @section('sub_title', __('Landing Pages')) @section('sub_subtitle', __('Manage published campaign landings, HTML edits, and the active homepage experience.')) @section('sub_icon', 'custom-landing') @section('sub_action') {{ __('Guide') }} {{ __('Add Landing') }} @endsection @section('sub_content') @php $landingCollection = $landings instanceof \Illuminate\Pagination\AbstractPaginator ? $landings->getCollection() : collect($landings); $formatBytes = static function (int|float|null $bytes): string { $bytes = (float) ($bytes ?? 0); if ($bytes >= 1048576) { return number_format($bytes / 1048576, 1).' MB'; } if ($bytes >= 1024) { return number_format($bytes / 1024, 1).' KB'; } return number_format($bytes).' B'; }; @endphp
@lang('Total Landings') {{ number_format($metrics['total'] ?? $landingCollection->count()) }}
@lang('Active') {{ number_format($metrics['active'] ?? $landingCollection->where('status', true)->count()) }}
@lang('Files') {{ number_format($metrics['files'] ?? $landingCollection->sum('file_count')) }}
@lang('Storage') {{ $formatBytes($metrics['storageSize'] ?? $landingCollection->sum('total_size')) }}
@forelse($landings as $landing) @empty @endforelse
@lang('Landing') @lang('Status') @lang('Files') @lang('Updated') @lang('Actions')
{{ Str::of($landing->name)->substr(0, 1)->upper() }} {{ $landing->name }} {{ $landing->folder }}
{{ $landing->status ? __('Active') : __('Inactive') }} {{ number_format((int) $landing->file_count) }} {{ $formatBytes($landing->total_size) }} {{ $landing->updated_at?->format('M d, Y') ?? __('Not updated') }} {{ $landing->last_validated_at?->diffForHumans() ?? __('Validation pending') }}
@csrf
@lang('No landing pages uploaded yet.') @lang('Upload a ZIP package to publish your first custom landing page.')
@lang('No matching landing pages') @lang('Adjust the search text or status filter.')
@if(method_exists($landings, 'links'))
{{ $landings->links() }}
@endif @endsection @push('scripts') @endpush