diff --git a/src/resources/views/emails/affiliate-qualified.blade.php b/src/resources/views/emails/affiliate-qualified.blade.php
index 7e093b2..57e3d0c 100644
--- a/src/resources/views/emails/affiliate-qualified.blade.php
+++ b/src/resources/views/emails/affiliate-qualified.blade.php
@@ -2,27 +2,33 @@
@section('content')
-
-
-
+{{-- Icon --}}
+
-
- Du hast {{ $credits }} Credits verdient!
-
+{{-- Title --}}
+
+ Dein Referral hat sich qualifiziert!
+
+
+ {{ $referredUser->name }} nutzt Aziros jetzt seit 3 Monaten.
+
-
- {{ $referredUser->name }} nutzt Aziros jetzt seit 3 Monaten
- — dein Referral hat sich qualifiziert!
-
+{{-- Credits badge --}}
+
+
Gutschrift
+
+{{ $credits }}
+
Credits wurden deinem Konto gutgeschrieben
+
-
-
+{{ $credits }}
-
Credits wurden deinem Konto gutgeschrieben
-
-
-
- Mein Affiliate-Dashboard
-
+{{-- CTA --}}
+
+ Mein Affiliate-Dashboard
+
@endsection
diff --git a/src/resources/views/emails/agent/message.blade.php b/src/resources/views/emails/agent/message.blade.php
index b2f4079..b9e2967 100644
--- a/src/resources/views/emails/agent/message.blade.php
+++ b/src/resources/views/emails/agent/message.blade.php
@@ -2,25 +2,31 @@
@section('content')
-
-
-
+{{-- Icon --}}
+
-
- Nachricht
-
+{{-- Title --}}
+
+ Neue Nachricht
+
+
+ von {{ $sender_name }}
+
-
- von {{ $sender_name }}
-
+{{-- Recipient label --}}
+
+ Nachricht an {{ $recipient_name }}
+
-
- Nachricht an {{ $recipient_name }}
-
-
-
+{{-- Message box --}}
+
@endsection
diff --git a/src/resources/views/emails/agent/reminder.blade.php b/src/resources/views/emails/agent/reminder.blade.php
index 3b482f0..fc79407 100644
--- a/src/resources/views/emails/agent/reminder.blade.php
+++ b/src/resources/views/emails/agent/reminder.blade.php
@@ -2,55 +2,70 @@
@section('content')
-
-
-
+{{-- Icon --}}
+
-
- Terminerinnerung
-
+{{-- Title --}}
+
+ Terminerinnerung
+
+
+ von {{ $sender_name }}
+
-
- von {{ $sender_name }}
-
-
- {{-- Event Details --}}
-
-
+{{-- Event card --}}
+
+
+
+ | Termin |
+ {{ $event_title }} |
+
+
+ |
+
+ |
+
+
+ | Datum |
+ {{ $event_date }} |
+
+
+ | Uhrzeit |
+
+ {{ $event_time }}@if(!empty($event_end)) – {{ $event_end }}@endif Uhr
+ |
+
+ @if(!empty($event_notes))
- | Termin |
- {{ $event_title }} |
-
-
- | Datum |
- {{ $event_date }} |
-
-
- | Uhrzeit |
-
- {{ $event_time }}@if(!empty($event_end)) - {{ $event_end }}@endif Uhr
+ |
+
|
- @if(!empty($event_notes))
-
- | Info |
- {{ $event_notes }} |
-
- @endif
-
+
+ | Info |
+ {{ $event_notes }} |
+
+ @endif
+
+
+
+{{-- Personal message --}}
+@if(!empty($message))
+
+
Nachricht
+
{{ $message }}
+@endif
- {{-- Persönliche Nachricht --}}
- @if(!empty($message))
-
-
Nachricht
-
{{ $message }}
-
- @endif
-
-
- Hallo {{ $recipient_name }}, dies ist eine automatische Terminerinnerung.
-
+{{-- Recipient note --}}
+
+ Hallo {{ $recipient_name }} — dies ist eine automatische Terminerinnerung.
+
@endsection
diff --git a/src/resources/views/emails/aria-composed.blade.php b/src/resources/views/emails/aria-composed.blade.php
index f6cbf2c..59d8ea2 100644
--- a/src/resources/views/emails/aria-composed.blade.php
+++ b/src/resources/views/emails/aria-composed.blade.php
@@ -1,3 +1,26 @@
-{!! nl2br(e($body)) !!}
-
-Gesendet von Aria · aziros.com
+@extends('emails.layout')
+
+@section('content')
+
+{{-- Icon --}}
+
+
+{{-- Message body --}}
+
+ {!! nl2br(e($body)) !!}
+
+
+{{-- Sent by footer --}}
+
+
+ Gesendet von Aria · aziros.com
+
+
+
+@endsection
diff --git a/src/resources/views/emails/auth/verify.blade.php b/src/resources/views/emails/auth/verify.blade.php
index 53f730c..e5aa00c 100644
--- a/src/resources/views/emails/auth/verify.blade.php
+++ b/src/resources/views/emails/auth/verify.blade.php
@@ -2,28 +2,33 @@
@section('content')
-
-
-
+{{-- Icon --}}
+
-
- {{ t('mail.auth.verify.title') }}
-
+{{-- Title --}}
+
+ {{ t('mail.auth.verify.title') }}
+
+
+ {{ t('mail.auth.verify.text') }}
+
-
- {{ t('mail.auth.verify.text') }}
-
+{{-- Button --}}
+@if(!empty($url))
+
+ {{ t('mail.auth.verify.button') }}
+
+@endif
- {{-- BUTTON --}}
- @if(!empty($url))
-
- {{ t('mail.auth.verify.button') }}
-
- @endif
-
-
- {{ t('mail.auth.verify.expires') }}
-
+{{-- Expiry --}}
+
+ {{ t('mail.auth.verify.expires') }}
+
@endsection
diff --git a/src/resources/views/emails/components/button.blade.php b/src/resources/views/emails/components/button.blade.php
index 37ea4af..776c362 100644
--- a/src/resources/views/emails/components/button.blade.php
+++ b/src/resources/views/emails/components/button.blade.php
@@ -1,14 +1,6 @@
-
+
diff --git a/src/resources/views/emails/components/code.blade.php b/src/resources/views/emails/components/code.blade.php
index ead7e97..6d4fad8 100644
--- a/src/resources/views/emails/components/code.blade.php
+++ b/src/resources/views/emails/components/code.blade.php
@@ -1,25 +1,13 @@
-
+
- @foreach(str_split($slot) as $index => $digit)
-
- |
+ @foreach(str_split($slot) as $digit)
+ |
{{ $digit }}
|
-
- {{-- Abstand --}}
@if(!$loop->last)
|
@endif
-
@endforeach
diff --git a/src/resources/views/emails/gift-access.blade.php b/src/resources/views/emails/gift-access.blade.php
index 35930be..4ebe0f8 100644
--- a/src/resources/views/emails/gift-access.blade.php
+++ b/src/resources/views/emails/gift-access.blade.php
@@ -2,34 +2,38 @@
@section('content')
-
-
-
+{{-- Icon --}}
+
-
- Hallo {{ $user->name }}!
-
-
-
- Du hast kostenlosen Zugang zum
- {{ $plan->name }}
- erhalten — {{ $durationLabel }}.
-
+{{-- Title --}}
+
+ Hallo {{ $user->name }}!
+
+
+ Du hast kostenlosen Zugang zum
+ {{ $plan->name }}-Plan erhalten — {{ $durationLabel }}.
+
+{{-- Validity badge --}}
+
@if($endsAt)
-
- Dein Zugang ist gültig bis:
- {{ $endsAt->format('d.m.Y') }}
-
+
Gültig bis
+
{{ $endsAt->format('d.m.Y') }}
@else
-
- Dein Zugang ist unbegrenzt gültig.
-
+
Gültigkeit
+
Unbegrenzt
@endif
+
-
- Jetzt Aria nutzen
-
+{{-- CTA --}}
+
+ Jetzt Aria nutzen
+
@endsection
diff --git a/src/resources/views/emails/layout.blade.php b/src/resources/views/emails/layout.blade.php
index f072db2..8efe2af 100644
--- a/src/resources/views/emails/layout.blade.php
+++ b/src/resources/views/emails/layout.blade.php
@@ -1,30 +1,56 @@
-
-
+
+
+
+
+
+ Aziros
+
+
-
+
+
+
+
+ {{-- Wordmark --}}
- |
+ |
+
+ aziros
+
+ |
+
-
+ {{-- Card --}}
+
+ |
- {{-- HEADER --}}
- @include('emails.components.header')
+ {{-- Accent bar --}}
+
- {{-- CONTENT --}}
- |
- |
- @yield('content')
- |
-
-
- {{-- FOOTER --}}
- @include('emails.components.footer')
-
-
+ {{-- Content --}}
+
+ @yield('content')
+
+
+ {{-- Footer --}}
+
+ |
+
+ Du erhältst diese E-Mail, weil du {{ config('app.name') }} nutzt.
+ Falls du sie nicht erwartet hast, kannst du sie ignorieren.
+
+
+ © {{ date('Y') }} Aziros GmbH · Made with ♡ in Austria
+
+ |
+
+
+
+ |
diff --git a/src/resources/views/emails/reset-password.blade.php b/src/resources/views/emails/reset-password.blade.php
index 201341c..f7489c6 100644
--- a/src/resources/views/emails/reset-password.blade.php
+++ b/src/resources/views/emails/reset-password.blade.php
@@ -1,63 +1,35 @@
-
-
-
-
-
- Passwort zurücksetzen
-
-
-
-
-
-
+@extends('emails.layout')
- {{-- Logo --}}
-
- |
- aziros
- |
-
+@section('content')
- {{-- Card --}}
-
- |
+{{-- Icon --}}
+
-
- Passwort zurücksetzen
-
-
- Hallo {{ $user->name }},
-
-
- Du hast ein Zurücksetzen deines Passworts angefordert.
- Klicke auf den Button, um ein neues Passwort zu setzen.
-
+{{-- Title --}}
+
+ Passwort zurücksetzen
+
+
+ Hallo {{ $user->name }}, klicke auf den Button um ein neues Passwort zu setzen.
+
-
- Passwort zurücksetzen
-
+{{-- Button --}}
+
+ Passwort zurücksetzen
+
-
- Dieser Link ist 60 Minuten gültig.
- Falls du kein Passwort-Reset angefordert hast, ignoriere diese E-Mail.
-
+{{-- Expiry note --}}
+
+
+ Dieser Link ist 60 Minuten gültig.
+ Falls du kein Passwort-Reset angefordert hast, ignoriere diese E-Mail.
+
+
- |
-
-
- {{-- Footer --}}
-
- |
- © {{ date('Y') }} Aziros · Made in Austria
- |
-
-
-
- |
-
-
-
-
+@endsection
diff --git a/src/resources/views/emails/smtp-test.blade.php b/src/resources/views/emails/smtp-test.blade.php
index d3a5c1f..2dfc117 100644
--- a/src/resources/views/emails/smtp-test.blade.php
+++ b/src/resources/views/emails/smtp-test.blade.php
@@ -1,2 +1,30 @@
-Dein SMTP Server ist korrekt konfiguriert.
-E-Mails können von Aria in deinem Namen gesendet werden.
+@extends('emails.layout')
+
+@section('content')
+
+{{-- Icon --}}
+
+
+{{-- Title --}}
+
+ SMTP erfolgreich konfiguriert
+
+
+ Dein SMTP-Server ist korrekt eingerichtet.
+ E-Mails können von Aria in deinem Namen versendet werden.
+
+
+{{-- Status box --}}
+
+
+ ✓ Verbindung hergestellt
+
+
+
+@endsection
diff --git a/src/resources/views/mail-preview/index.blade.php b/src/resources/views/mail-preview/index.blade.php
new file mode 100644
index 0000000..02ef56a
--- /dev/null
+++ b/src/resources/views/mail-preview/index.blade.php
@@ -0,0 +1,62 @@
+
+
+
+
+
+ Mail Preview · Aziros
+
+
+
+
+
+
+
+
E-Mail Templates
+
{{ count($templates) }} Templates — Klicke auf eine Karte für die Vollansicht.
+
+
+
+
+
+
diff --git a/src/routes/web.php b/src/routes/web.php
index d319bd3..514a353 100644
--- a/src/routes/web.php
+++ b/src/routes/web.php
@@ -22,13 +22,7 @@ use Illuminate\Support\Facades\Route;
-Route::get('/mail-preview', function () {
- return view('emails.auth.verify', [
- 'user' => 'Max Mustermann',
- 'code' => '123456',
- 'url' => 'https://example.com/verify' // 🔥 hinzufügen
- ]);
-});
+// ── Mail Preview (nur Admin) ──────────────────────────────────────────────────
Route::middleware(['auth.custom'])->group(function () {
// intentionally empty — kept for middleware reference
@@ -63,6 +57,75 @@ Route::middleware(['user', 'role:admin'])->prefix('admin')->name('admin.')->grou
Route::get('/affiliates', \App\Livewire\Admin\Affiliates\Index::class)->name('affiliates.index');
Route::get('/translations', TranslationIndex::class)->name('translations.index');
Route::get('/versions', \App\Livewire\Admin\Versions::class)->name('versions.index');
+
+ // ── Mail Preview ──────────────────────────────────────────────────────────
+ $fakeData = [
+ 'auth.verify' => [
+ 'name' => 'E-Mail verifizieren',
+ 'data' => ['url' => 'https://app.aziros.com/verify?token=preview', 'user' => 'Max Mustermann'],
+ ],
+ 'reset-password' => [
+ 'name' => 'Passwort zurücksetzen',
+ 'data' => ['url' => 'https://app.aziros.com/password/reset/preview', 'user' => (object)['name' => 'Max Mustermann']],
+ ],
+ 'agent.reminder' => [
+ 'name' => 'Terminerinnerung',
+ 'data' => [
+ 'sender_name' => 'Maria Muster',
+ 'event_title' => 'Strategie-Meeting Q2',
+ 'event_date' => 'Montag, 22. April 2026',
+ 'event_time' => '14:00',
+ 'event_end' => '15:30',
+ 'event_notes' => 'Bitte die Präsentation vorbereiten.',
+ 'recipient_name' => 'Max Mustermann',
+ 'message' => 'Vergiss bitte nicht, die Unterlagen mitzubringen!',
+ ],
+ ],
+ 'agent.message' => [
+ 'name' => 'Neue Nachricht (Agent)',
+ 'data' => [
+ 'sender_name' => 'Maria Muster',
+ 'recipient_name' => 'Max Mustermann',
+ 'message' => 'Hallo Max, kannst du mir bitte die Unterlagen für das Meeting zukommen lassen? Ich brauche sie bis morgen früh.',
+ ],
+ ],
+ 'gift-access' => [
+ 'name' => 'Geschenk-Zugang',
+ 'data' => [
+ 'user' => (object)['name' => 'Max Mustermann'],
+ 'plan' => (object)['name' => 'Pro'],
+ 'durationLabel' => '3 Monate kostenlos',
+ 'endsAt' => \Carbon\Carbon::now()->addMonths(3),
+ ],
+ ],
+ 'affiliate-qualified' => [
+ 'name' => 'Affiliate qualifiziert',
+ 'data' => [
+ 'credits' => 50,
+ 'referredUser' => (object)['name' => 'Lisa Müller'],
+ ],
+ ],
+ 'smtp-test' => [
+ 'name' => 'SMTP Test',
+ 'data' => [],
+ ],
+ 'aria-composed' => [
+ 'name' => 'Aria – Verfasste E-Mail',
+ 'data' => ['body' => "Hallo!\n\nIch habe deine Aufgabe erledigt und hier ist die Zusammenfassung der Ergebnisse für dein Meeting morgen.\n\nBitte prüfe die Agenda und gib mir Bescheid, ob noch Änderungen nötig sind."],
+ ],
+ ];
+
+ Route::get('/mail-preview', function () use ($fakeData) {
+ $templates = collect($fakeData)->map(fn($v, $k) => ['key' => $k, 'name' => $v['name']])->values();
+ return view('mail-preview.index', compact('templates'));
+ })->name('mail-preview.index');
+
+ Route::get('/mail-preview/{template}', function (string $template) use ($fakeData) {
+ abort_unless(isset($fakeData[$template]), 404);
+ $entry = $fakeData[$template];
+ $view = 'emails.' . str_replace('.', '/', str_replace('-', '-', $template));
+ return response(view($view, $entry['data']));
+ })->name('mail-preview.show');
});
Route::middleware('user')->group(function () {