presseportale/resources/views/components/emails/layout.blade.php
Kevin Adametz 9832869596 System-Mails im pressekonto-CI: zentrales E-Mail-Layout fuer alle Transaktionsmails
- Neues Layout components/emails/layout (Wortmarke, 'Publisher - Hub'-
  Tagline, Brand-Familien-Fusszeile) + Button-Komponente; alle System-
  Mails (Magic-Link, Go-Live-Reset, Kontakt, PM published/rejected,
  Kuendigung, Widerruf) darauf umgestellt
- Framework-Auth-Mails (Passwort-Reset, E-Mail-Verifizierung) via
  toMailUsing auf eigene Views im gleichen CI statt Laravel-Default
- Anmeldelink-Betreff vereinheitlicht; EmailBrandingTest sichert das
  Branding ueber alle Mails ab

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 16:26:30 +00:00

106 lines
6.1 KiB
PHP

@props([
'title' => null,
'preheader' => null,
])
@php
/**
* Zentrales CI-Layout für alle System-E-Mails (Auth, Pressemitteilungen,
* Kündigung/Widerruf, Kontakt). Absender-Marke ist immer pressekonto —
* der gemeinsame Publisher · Hub der Portale presseecho und
* businessportal24. Header und Footer erklären diese Zugehörigkeit,
* damit Empfänger die Mail sofort einordnen können.
*
* E-Mail-tauglich gebaut: Tabellen-Layout, Inline-Styles für alles
* Layout-Kritische, ergänzende Klassen im <style>-Block (werden von
* Gmail/Outlook.com/Apple Mail unterstützt; ohne sie bleibt die Mail
* trotzdem lesbar).
*/
$brand = config('domains.domains.pressekonto.brand', []);
$taglineShort = $brand['tagline_short'] ?? 'Publisher · Hub';
$footerLegal = str_replace(':year', (string) now()->year, $brand['footer_legal'] ?? '© '.now()->year.' pressekonto · Alle Rechte vorbehalten');
$presseechoUrl = config('domains.domain_presseecho_url');
$businessportalUrl = config('domains.domain_businessportal_url');
$fontStack = "'Inter Tight', 'Segoe UI', Arial, Helvetica, sans-serif";
@endphp
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="color-scheme" content="light">
<title>{{ $title }}</title>
<style>
.email-body p { margin: 0 0 14px; }
.email-body .title { font-size: 17px; font-weight: bold; color: #1A2540; margin: 18px 0; padding-left: 14px; border-left: 3px solid #B07A3A; }
.email-body .meta { background: #f6f4ef; border-left: 3px solid #1A2540; padding: 14px 18px; margin: 18px 0; }
.email-body .meta-danger { background: #fdf2f0; border-left: 3px solid #b3401f; padding: 14px 18px; margin: 18px 0; }
.email-body .meta dt, .email-body .meta-danger dt { font-weight: bold; color: #1A2540; font-size: 12px; text-transform: uppercase; letter-spacing: 0.06em; }
.email-body .meta dd, .email-body .meta-danger dd { margin: 2px 0 10px; }
.email-body .message { white-space: pre-line; background: #f6f4ef; border: 1px solid #e8e4da; padding: 16px 18px; margin: 18px 0; }
.email-body .note { font-size: 12.5px; color: #6b7280; border-top: 1px solid #e8e4da; padding-top: 14px; margin-top: 26px; }
.email-body .note p { margin: 0 0 8px; }
.email-body a { color: #1A2540; }
</style>
</head>
<body style="margin: 0; padding: 0; background-color: #e8e4da;">
@if ($preheader)
{{-- Vorschautext im Posteingang; im Mail-Body unsichtbar. --}}
<div style="display: none; max-height: 0; overflow: hidden; mso-hide: all;">{{ $preheader }}</div>
@endif
<table role="presentation" width="100%" border="0" cellpadding="0" cellspacing="0" style="background-color: #e8e4da;">
<tr>
<td align="center" style="padding: 32px 16px;">
<table role="presentation" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 600px;">
{{-- Bernstein-Akzentstreifen (CI: 3px-Streifen des Hubs) --}}
<tr>
<td style="height: 3px; background-color: #B07A3A; font-size: 0; line-height: 0;">&nbsp;</td>
</tr>
{{-- Header: Wortmarke + Publisher · Hub in Hub-Blau --}}
<tr>
<td style="background-color: #1A2540; padding: 26px 36px;">
<span style="font-family: {{ $fontStack }}; font-size: 22px; font-weight: bold; letter-spacing: -0.4px; line-height: 1;"><span style="color: #ffffff;">{{ $brand['name'] ?? 'presse' }}</span><span style="color: #B07A3A;">{{ $brand['accent'] ?? 'konto' }}</span></span>
<div style="font-family: {{ $fontStack }}; font-size: 10px; font-weight: bold; letter-spacing: 0.22em; text-transform: uppercase; color: rgba(255, 255, 255, 0.65); margin-top: 8px;">
{{ $taglineShort }}
</div>
</td>
</tr>
{{-- Inhalt --}}
<tr>
<td class="email-body" style="background-color: #ffffff; padding: 32px 36px 28px; font-family: {{ $fontStack }}; font-size: 14.5px; line-height: 1.65; color: #2a3038;">
{{ $slot }}
</td>
</tr>
{{-- Brand-Familie: Zugehörigkeit von presseecho + businessportal24 --}}
<tr>
<td style="background-color: #ffffff; border-top: 1px solid #e8e4da; padding: 20px 36px 24px; font-family: {{ $fontStack }}; font-size: 12px; line-height: 1.7; color: #6b7280;">
<span style="font-weight: bold; color: #1A2540;">presse<span style="color: #B07A3A;">konto</span></span>
ist der gemeinsame Publisher&nbsp;·&nbsp;Hub für
<a href="{{ $presseechoUrl }}" style="font-weight: bold; text-decoration: none;"><span style="color: #1B2417;">presse</span><span style="color: #345636;">echo</span></a>
und
<a href="{{ $businessportalUrl }}" style="font-weight: bold; text-decoration: none;"><span style="color: #232A33;">businessportal</span><span style="color: #C84A1E;">24</span></a>
— ein Konto, redaktionell geprüft, auf beiden Portalen veröffentlichen.
</td>
</tr>
</table>
{{-- Rechtliches unterhalb der Karte --}}
<table role="presentation" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 600px;">
<tr>
<td align="center" style="padding: 18px 8px 6px; font-family: {{ $fontStack }}; font-size: 11.5px; color: #8a8f96;">
{{ $footerLegal }}
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>