@extends('layouts.dashboard') @section('content') @php /** * Newsletter subscribers — who signed up, when, and a CSV of the same list. * * @var array $rows subscriber rows for this page [id, email, created_at] * @var array $pager pagination metadata * @var string $q active search term * @var int $total rows matching the search * @var array $members lowercased addresses that also hold an account */ $exportQuery = $q !== '' ? ('?' . http_build_query(['q' => $q])) : ''; @endphp @php /* .qm-d2: the dashboard density standard (app.css §35) */ @endphp

{{ t_raw('admin.subscribers.title') }}

@if (!empty($pager['total'])){{ t_raw('admin.subscribers.total_pill', [':count' => (int) $pager['total']]) }}@endif

{{ t_raw('admin.subscribers.subhead') }}

{{ t_raw('common.export_csv') }}
@partial('filter-collapse')
@php /* Subscribed renders via fmt_datetime(), which Date.parse() cannot read, so that cell carries the raw timestamp in data-sort-value. */ @endphp @if ($rows) @foreach ($rows as $s) @php $email = (string) $s['email']; $isMember = isset($members[mb_strtolower($email)]); @endphp @endforeach @else @partial('table-empty', ['colspan' => 3, 'icon' => 'fa-envelope-open-text', 'msg' => $q !== '' ? t_raw('admin.subscribers.empty_filtered') : t_raw('admin.subscribers.empty')]) @endif
{{ t_raw('common.email') }} {{ t_raw('admin.subscribers.col_account') }} {{ t_raw('admin.subscribers.col_subscribed') }}
{!! brandmark_html(null, $email, 'md', 'qm-brandmark--round') !!}
{!! $isMember ? t('admin.subscribers.badge_member') : t('admin.subscribers.badge_guest') !!} {!! fmt_datetime($s['created_at']) !!}
@partial('table-toolbar', ['pager' => $pager, 'base' => '/admin/subscribers'])
@php /* /.qm-d2 */ @endphp @endsection