Converted all notification emails to the branded layout by routing them through a shared Blade template and swapping
the MailMessage builders to use view(). This keeps the existing copy/labels but aligns the look with resources/views/ emails/partials/layout.blade.php. I also switched the customer add‑on receipt notification to reuse the existing branded view and added missing translations for the upload pipeline alert.
This commit is contained in:
@@ -1,47 +1,48 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>{{ __('emails.abandoned_checkout.subject_' . $timing, ['package' => $packageName]) }}</title>
|
||||
<style>
|
||||
.cta-button {
|
||||
background-color: #007bff;
|
||||
color: white;
|
||||
padding: 12px 24px;
|
||||
text-decoration: none;
|
||||
border-radius: 4px;
|
||||
display: inline-block;
|
||||
margin: 10px 0;
|
||||
}
|
||||
.benefits {
|
||||
background-color: #f8f9fa;
|
||||
padding: 15px;
|
||||
border-radius: 4px;
|
||||
margin: 15px 0;
|
||||
}
|
||||
.benefit-item {
|
||||
margin: 5px 0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>{{ __('emails.abandoned_checkout.greeting', ['name' => $user->fullName]) }}</h1>
|
||||
@extends('emails.partials.layout')
|
||||
|
||||
<p>{{ __('emails.abandoned_checkout.body_' . $timing, ['package' => $packageName]) }}</p>
|
||||
@section('title', __('emails.abandoned_checkout.subject_' . $timing, ['package' => $packageName]))
|
||||
@section('preheader', __('emails.abandoned_checkout.subtitle', ['package' => $packageName]))
|
||||
@section('hero_title', __('emails.abandoned_checkout.greeting', ['name' => $user->fullName]))
|
||||
@section('hero_subtitle', __('emails.abandoned_checkout.subtitle', ['package' => $packageName]))
|
||||
|
||||
<a href="{{ $resumeUrl }}" class="cta-button">
|
||||
@section('content')
|
||||
<p style="margin:0 0 16px; font-size:15px; color:#1f2937;">
|
||||
{{ __('emails.abandoned_checkout.body_' . $timing, ['package' => $packageName]) }}
|
||||
</p>
|
||||
<div style="background-color:#f8fafc; border:1px solid #e2e8f0; border-radius:12px; padding:16px; margin-bottom:16px;">
|
||||
<p style="margin:0 0 6px; font-size:13px; text-transform:uppercase; letter-spacing:0.08em; color:#64748b;">
|
||||
{{ __('emails.abandoned_checkout.cta_hint_title') }}
|
||||
</p>
|
||||
<p style="margin:0; font-size:14px; color:#0f172a;">
|
||||
{{ __('emails.abandoned_checkout.cta_hint_body') }}
|
||||
</p>
|
||||
</div>
|
||||
<p style="margin:0 0 16px; font-size:14px; color:#6b7280;">
|
||||
{{ __('emails.abandoned_checkout.cta_link', ['url' => $resumeUrl]) }}
|
||||
</p>
|
||||
<h3 style="margin:0 0 10px; font-size:16px;">{{ __('emails.abandoned_checkout.benefits_title') }}</h3>
|
||||
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" style="border-collapse:collapse;">
|
||||
<tr>
|
||||
<td style="padding:6px 0; font-size:14px; color:#0f172a;">✓ {{ __('emails.abandoned_checkout.benefit1') }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:6px 0; font-size:14px; color:#0f172a;">✓ {{ __('emails.abandoned_checkout.benefit2') }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:6px 0; font-size:14px; color:#0f172a;">✓ {{ __('emails.abandoned_checkout.benefit3') }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:6px 0; font-size:14px; color:#0f172a;">✓ {{ __('emails.abandoned_checkout.benefit4') }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
@endsection
|
||||
|
||||
@section('cta')
|
||||
<a href="{{ $resumeUrl }}" style="display:inline-block; background-color:#111827; color:#ffffff; text-decoration:none; padding:12px 20px; border-radius:999px; font-weight:600; font-size:14px;">
|
||||
{{ __('emails.abandoned_checkout.cta_button') }}
|
||||
</a>
|
||||
@endsection
|
||||
|
||||
<p>{{ __('emails.abandoned_checkout.cta_link', ['url' => $resumeUrl]) }}</p>
|
||||
|
||||
<div class="benefits">
|
||||
<h3>{{ __('emails.abandoned_checkout.benefits_title') }}</h3>
|
||||
<div class="benefit-item">✓ {{ __('emails.abandoned_checkout.benefit1') }}</div>
|
||||
<div class="benefit-item">✓ {{ __('emails.abandoned_checkout.benefit2') }}</div>
|
||||
<div class="benefit-item">✓ {{ __('emails.abandoned_checkout.benefit3') }}</div>
|
||||
<div class="benefit-item">✓ {{ __('emails.abandoned_checkout.benefit4') }}</div>
|
||||
</div>
|
||||
|
||||
<p>{!! __('emails.abandoned_checkout.footer') !!}</p>
|
||||
</body>
|
||||
</html>
|
||||
@section('footer')
|
||||
{!! __('emails.abandoned_checkout.footer') !!}
|
||||
@endsection
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
@extends('emails.partials.layout')
|
||||
|
||||
@php
|
||||
/** @var \App\Models\EventPackageAddon $addon */
|
||||
$event = $addon->event;
|
||||
@@ -14,31 +16,45 @@
|
||||
if ($addon->extra_gallery_days > 0) {
|
||||
$summary[] = __('emails.addons.receipt.summary.gallery', ['count' => $addon->extra_gallery_days]);
|
||||
}
|
||||
$eventName = $event?->name['de'] ?? $event?->name['en'] ?? $event?->name ?? __('emails.package_limits.event_fallback');
|
||||
$ctaUrl = url('/tenant/events/'.($event?->slug ?? ''));
|
||||
@endphp
|
||||
|
||||
@component('mail::message')
|
||||
# {{ __('emails.addons.receipt.subject', ['addon' => $label]) }}
|
||||
@section('title', __('emails.addons.receipt.subject', ['addon' => $label]))
|
||||
@section('preheader', __('emails.addons.receipt.subtitle', ['addon' => $label]))
|
||||
@section('hero_title', __('emails.addons.receipt.greeting', ['name' => $tenant?->name ?? __('emails.package_limits.team_fallback')]))
|
||||
@section('hero_subtitle', __('emails.addons.receipt.subtitle', ['addon' => $label]))
|
||||
|
||||
{{ __('emails.addons.receipt.greeting', ['name' => $tenant?->name ?? __('emails.package_limits.team_fallback')]) }}
|
||||
@section('content')
|
||||
<p style="margin:0 0 12px; font-size:15px; color:#1f2937;">
|
||||
{{ __('emails.addons.receipt.body', [
|
||||
'addon' => $label,
|
||||
'event' => $eventName,
|
||||
'amount' => $amount,
|
||||
]) }}
|
||||
</p>
|
||||
@if (! empty($summary))
|
||||
<div style="background-color:#f8fafc; border:1px solid #e2e8f0; border-radius:12px; padding:16px; margin-bottom:12px;">
|
||||
<p style="margin:0 0 8px; font-size:13px; text-transform:uppercase; letter-spacing:0.08em; color:#64748b;">
|
||||
{{ __('emails.addons.receipt.summary_title') }}
|
||||
</p>
|
||||
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" style="border-collapse:collapse;">
|
||||
@foreach ($summary as $line)
|
||||
<tr>
|
||||
<td style="padding:6px 0; font-size:14px; color:#0f172a;">{{ $line }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
</div>
|
||||
@endif
|
||||
@endsection
|
||||
|
||||
{{ __('emails.addons.receipt.body', [
|
||||
'addon' => $label,
|
||||
'event' => $event?->name['de'] ?? $event?->name['en'] ?? $event?->name ?? __('emails.package_limits.event_fallback'),
|
||||
'amount' => $amount,
|
||||
]) }}
|
||||
@section('cta')
|
||||
<a href="{{ $ctaUrl }}" style="display:inline-block; background-color:#111827; color:#ffffff; text-decoration:none; padding:12px 20px; border-radius:999px; font-weight:600; font-size:14px;">
|
||||
{{ __('emails.addons.receipt.action') }}
|
||||
</a>
|
||||
@endsection
|
||||
|
||||
@if(!empty($summary))
|
||||
**{{ __('emails.addons.receipt.summary_title', 'Included:') }}**
|
||||
|
||||
@foreach($summary as $line)
|
||||
- {{ $line }}
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
@component('mail::button', ['url' => url('/tenant/events/'.($event?->slug ?? ''))])
|
||||
{{ __('emails.addons.receipt.action') }}
|
||||
@endcomponent
|
||||
|
||||
{{ __('emails.package_limits.footer') }}
|
||||
|
||||
@endcomponent
|
||||
@section('footer')
|
||||
{!! __('emails.brand.footer') !!}
|
||||
@endsection
|
||||
|
||||
@@ -1,7 +1,29 @@
|
||||
@component('mail::message')
|
||||
# {{ __('emails.contact_confirmation.greeting', ['name' => $name]) }}
|
||||
@extends('emails.partials.layout')
|
||||
|
||||
{{ __('emails.contact_confirmation.body') }}
|
||||
@php
|
||||
$contactEmail = config('mail.contact_address', config('mail.from.address'));
|
||||
@endphp
|
||||
|
||||
{{ __('emails.contact_confirmation.footer') }}
|
||||
@endcomponent
|
||||
@section('title', __('emails.contact_confirmation.subject', ['name' => $name]))
|
||||
@section('preheader', __('emails.contact_confirmation.subtitle'))
|
||||
@section('hero_title', __('emails.contact_confirmation.greeting', ['name' => $name]))
|
||||
@section('hero_subtitle', __('emails.contact_confirmation.subtitle'))
|
||||
|
||||
@section('content')
|
||||
<p style="margin:0 0 12px; font-size:15px; color:#1f2937;">
|
||||
{{ __('emails.contact_confirmation.body') }}
|
||||
</p>
|
||||
<p style="margin:0; font-size:14px; color:#6b7280;">
|
||||
{{ __('emails.contact_confirmation.response_time') }}
|
||||
</p>
|
||||
@endsection
|
||||
|
||||
@section('cta')
|
||||
<a href="mailto:{{ $contactEmail }}" style="display:inline-block; background-color:#111827; color:#ffffff; text-decoration:none; padding:12px 20px; border-radius:999px; font-weight:600; font-size:14px;">
|
||||
{{ __('emails.contact_confirmation.cta') }}
|
||||
</a>
|
||||
@endsection
|
||||
|
||||
@section('footer')
|
||||
{!! __('emails.contact_confirmation.footer') !!}
|
||||
@endsection
|
||||
|
||||
@@ -1,41 +1,48 @@
|
||||
@extends('emails.partials.layout')
|
||||
|
||||
@php
|
||||
$withdrawalUrl = app()->getLocale() === 'de' ? url('/de/widerrufsbelehrung') : url('/en/withdrawal');
|
||||
$subject = $forRecipient
|
||||
? __('emails.gift_voucher.recipient.subject', ['amount' => $amount, 'currency' => $currency])
|
||||
: __('emails.gift_voucher.purchaser.subject', ['amount' => $amount, 'currency' => $currency]);
|
||||
$greeting = $forRecipient
|
||||
? __('emails.gift_voucher.recipient.greeting')
|
||||
: __('emails.gift_voucher.purchaser.greeting');
|
||||
$subtitle = $forRecipient
|
||||
? __('emails.gift_voucher.recipient.subtitle')
|
||||
: __('emails.gift_voucher.purchaser.subtitle');
|
||||
$body = $forRecipient
|
||||
? __('emails.gift_voucher.recipient.body', [
|
||||
'amount' => $amount,
|
||||
'currency' => $currency,
|
||||
'purchaser' => $voucher->purchaser_email,
|
||||
])
|
||||
: __('emails.gift_voucher.purchaser.body', [
|
||||
'amount' => $amount,
|
||||
'currency' => $currency,
|
||||
'recipient' => $voucher->recipient_email ?: __('emails.gift_voucher.purchaser.recipient_fallback'),
|
||||
]);
|
||||
@endphp
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>{{ $forRecipient ? __('emails.gift_voucher.recipient.subject', ['amount' => $amount, 'currency' => $currency]) : __('emails.gift_voucher.purchaser.subject', ['amount' => $amount, 'currency' => $currency]) }}</title>
|
||||
</head>
|
||||
<body style="font-family: Arial, sans-serif; background-color: #f7f7f7; padding: 20px; color: #111827;">
|
||||
<div style="max-width: 640px; margin: 0 auto; background: #ffffff; border-radius: 10px; padding: 28px; box-shadow: 0 10px 30px rgba(0,0,0,0.05);">
|
||||
<h1 style="margin-top: 0; font-size: 22px;">
|
||||
{{ $forRecipient ? __('emails.gift_voucher.recipient.greeting') : __('emails.gift_voucher.purchaser.greeting') }}
|
||||
</h1>
|
||||
<p style="font-size: 15px; line-height: 1.6; margin-bottom: 16px;">
|
||||
{!! $forRecipient
|
||||
? __('emails.gift_voucher.recipient.body', [
|
||||
'amount' => $amount,
|
||||
'currency' => $currency,
|
||||
'purchaser' => $voucher->purchaser_email,
|
||||
])
|
||||
: __('emails.gift_voucher.purchaser.body', [
|
||||
'amount' => $amount,
|
||||
'currency' => $currency,
|
||||
'recipient' => $voucher->recipient_email ?: __('emails.gift_voucher.purchaser.recipient_fallback'),
|
||||
])
|
||||
!!}
|
||||
</p>
|
||||
|
||||
@section('title', $subject)
|
||||
@section('preheader', $subtitle)
|
||||
@section('hero_title', $greeting)
|
||||
@section('hero_subtitle', $subtitle)
|
||||
|
||||
@section('content')
|
||||
<p style="margin:0 0 12px; font-size:15px; color:#1f2937;">
|
||||
{!! $body !!}
|
||||
</p>
|
||||
@if ($voucher->message)
|
||||
<div style="margin: 18px 0; padding: 14px 16px; background: #f3f4f6; border-left: 4px solid #2563eb; border-radius: 8px;">
|
||||
<strong>{{ __('emails.gift_voucher.message_title') }}</strong>
|
||||
<p style="margin: 8px 0 0; white-space: pre-line;">{{ $voucher->message }}</p>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div style="margin: 18px 0; padding: 16px; border: 1px dashed #d1d5db; border-radius: 10px; background: #f9fafb;">
|
||||
<p style="margin: 0 0 6px; font-size: 14px; color: #6b7280;">{{ __('emails.gift_voucher.code_label') }}</p>
|
||||
<p style="margin: 0 0 6px; font-size: 13px; text-transform:uppercase; letter-spacing:0.08em; color: #6b7280;">
|
||||
{{ __('emails.gift_voucher.code_label') }}
|
||||
</p>
|
||||
<div style="display: inline-block; padding: 10px 14px; background: #111827; color: #ffffff; border-radius: 8px; font-weight: bold; letter-spacing: 1px;">
|
||||
{{ $voucher->code }}
|
||||
</div>
|
||||
@@ -44,22 +51,18 @@
|
||||
</p>
|
||||
@isset($printUrl)
|
||||
<p style="margin: 8px 0 0; font-size: 14px;">
|
||||
<a href="{{ $printUrl }}">{{ __('emails.gift_voucher.printable') }}</a>
|
||||
<a href="{{ $printUrl }}" style="color:#1d4ed8; text-decoration:none;">{{ __('emails.gift_voucher.printable') }}</a>
|
||||
</p>
|
||||
@endisset
|
||||
</div>
|
||||
|
||||
<p style="font-size: 14px; color: #4b5563; margin: 12px 0;">
|
||||
{{ __('emails.gift_voucher.expiry', ['date' => optional($voucher->expires_at)->toFormattedDateString()]) }}
|
||||
</p>
|
||||
|
||||
<p style="font-size: 14px; color: #4b5563; margin: 12px 0;">
|
||||
{!! __('emails.gift_voucher.withdrawal', ['url' => $withdrawalUrl]) !!}
|
||||
</p>
|
||||
@endsection
|
||||
|
||||
<p style="font-size: 14px; color: #4b5563; margin-top: 20px;">
|
||||
{!! __('emails.gift_voucher.footer') !!}
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@section('footer')
|
||||
{!! __('emails.gift_voucher.footer') !!}
|
||||
@endsection
|
||||
|
||||
40
resources/views/emails/notifications/basic.blade.php
Normal file
40
resources/views/emails/notifications/basic.blade.php
Normal file
@@ -0,0 +1,40 @@
|
||||
@extends('emails.partials.layout')
|
||||
|
||||
@section('title', $title)
|
||||
@section('preheader', $preheader ?? '')
|
||||
@section('hero_title', $heroTitle)
|
||||
|
||||
@isset($heroSubtitle)
|
||||
@section('hero_subtitle', $heroSubtitle)
|
||||
@endisset
|
||||
|
||||
@section('content')
|
||||
@isset($intro)
|
||||
<p style="margin:0 0 12px; font-size:15px; color:#1f2937;">
|
||||
{{ $intro }}
|
||||
</p>
|
||||
@endisset
|
||||
@if (! empty($lines))
|
||||
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" style="border-collapse:collapse;">
|
||||
@foreach ($lines as $line)
|
||||
<tr>
|
||||
<td style="padding:6px 0; font-size:14px; color:#0f172a;">{{ $line }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
@endif
|
||||
@endsection
|
||||
|
||||
@section('cta')
|
||||
@if (! empty($cta))
|
||||
@foreach ($cta as $action)
|
||||
<a href="{{ $action['url'] }}" style="display:inline-block; background-color:#111827; color:#ffffff; text-decoration:none; padding:12px 20px; border-radius:999px; font-weight:600; font-size:14px; margin-right:12px; margin-bottom:12px;">
|
||||
{{ $action['label'] }}
|
||||
</a>
|
||||
@endforeach
|
||||
@endif
|
||||
@endsection
|
||||
|
||||
@section('footer')
|
||||
{!! $footer ?? __('emails.brand.footer') !!}
|
||||
@endsection
|
||||
55
resources/views/emails/partials/layout.blade.php
Normal file
55
resources/views/emails/partials/layout.blade.php
Normal file
@@ -0,0 +1,55 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>@yield('title')</title>
|
||||
</head>
|
||||
<body style="margin:0; padding:0; background-color:#f4f5f7; font-family:Arial, Helvetica, sans-serif; color:#1a1a1a;">
|
||||
<span style="display:none; font-size:0; line-height:0; max-height:0; max-width:0; opacity:0; overflow:hidden;">
|
||||
@yield('preheader', '')
|
||||
</span>
|
||||
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" style="background-color:#f4f5f7; padding:32px 0;">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<table role="presentation" width="640" cellspacing="0" cellpadding="0" style="background-color:#ffffff; border-radius:16px; overflow:hidden; box-shadow:0 12px 30px rgba(15, 23, 42, 0.08);">
|
||||
<tr>
|
||||
<td style="background:linear-gradient(135deg,#0f172a,#334155); color:#ffffff; padding:32px;">
|
||||
<p style="margin:0 0 10px; font-size:12px; letter-spacing:0.12em; text-transform:uppercase; opacity:0.7;">
|
||||
@yield('brand_label', __('emails.brand.label'))
|
||||
</p>
|
||||
<h1 style="margin:0; font-size:24px; line-height:1.35;">
|
||||
@yield('hero_title')
|
||||
</h1>
|
||||
@hasSection('hero_subtitle')
|
||||
<p style="margin:12px 0 0; font-size:15px; opacity:0.9;">
|
||||
@yield('hero_subtitle')
|
||||
</p>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:28px 32px 12px;">
|
||||
@yield('content')
|
||||
</td>
|
||||
</tr>
|
||||
@hasSection('cta')
|
||||
<tr>
|
||||
<td style="padding:0 32px 24px;">
|
||||
@yield('cta')
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
<tr>
|
||||
<td style="padding:0 32px 32px; font-size:12px; color:#6b7280;">
|
||||
@yield('footer', __('emails.brand.footer'))
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p style="margin:16px 0 0; font-size:12px; color:#94a3b8;">
|
||||
@yield('brand_footer', __('emails.brand.tagline'))
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,116 +1,75 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>{{ __('emails.purchase.subject', ['package' => $packageName]) }}</title>
|
||||
</head>
|
||||
<body style="margin:0; padding:0; background-color:#f4f5f7; font-family:Arial, Helvetica, sans-serif; color:#1a1a1a;">
|
||||
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" style="background-color:#f4f5f7; padding:32px 0;">
|
||||
@extends('emails.partials.layout')
|
||||
|
||||
@section('title', __('emails.purchase.subject', ['package' => $packageName]))
|
||||
@section('preheader', __('emails.purchase.subtitle'))
|
||||
@section('hero_title', __('emails.purchase.greeting', ['name' => $user->fullName]))
|
||||
@section('hero_subtitle', __('emails.purchase.subtitle'))
|
||||
|
||||
@section('content')
|
||||
<h2 style="margin:0 0 12px; font-size:18px;">
|
||||
{{ __('emails.purchase.summary_title') }}
|
||||
</h2>
|
||||
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" style="border-collapse:collapse;">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<table role="presentation" width="600" cellspacing="0" cellpadding="0" style="background-color:#ffffff; border-radius:16px; overflow:hidden; box-shadow:0 12px 30px rgba(15, 23, 42, 0.08);">
|
||||
<tr>
|
||||
<td style="background:linear-gradient(135deg,#0f172a,#334155); color:#ffffff; padding:32px;">
|
||||
<p style="margin:0 0 10px; font-size:12px; letter-spacing:0.12em; text-transform:uppercase; opacity:0.7;">
|
||||
{{ __('emails.purchase.brand_label') }}
|
||||
</p>
|
||||
<h1 style="margin:0; font-size:24px; line-height:1.35;">
|
||||
{{ __('emails.purchase.greeting', ['name' => $user->fullName]) }}
|
||||
</h1>
|
||||
<p style="margin:12px 0 0; font-size:15px; opacity:0.9;">
|
||||
{{ __('emails.purchase.subtitle') }}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:28px 32px 12px;">
|
||||
<h2 style="margin:0 0 12px; font-size:18px;">
|
||||
{{ __('emails.purchase.summary_title') }}
|
||||
</h2>
|
||||
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" style="border-collapse:collapse;">
|
||||
<tr>
|
||||
<td style="padding:10px 0; font-size:14px; color:#6b7280;">{{ __('emails.purchase.package_label') }}</td>
|
||||
<td style="padding:10px 0; font-size:14px; text-align:right; font-weight:600;">{{ $packageName }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:10px 0; font-size:14px; color:#6b7280;">{{ __('emails.purchase.type_label') }}</td>
|
||||
<td style="padding:10px 0; font-size:14px; text-align:right;">{{ $packageTypeLabel }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:10px 0; font-size:14px; color:#6b7280;">{{ __('emails.purchase.date_label') }}</td>
|
||||
<td style="padding:10px 0; font-size:14px; text-align:right;">{{ $purchaseDate }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:10px 0; font-size:14px; color:#6b7280;">{{ __('emails.purchase.provider_label') }}</td>
|
||||
<td style="padding:10px 0; font-size:14px; text-align:right;">{{ $providerLabel }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:10px 0; font-size:14px; color:#6b7280;">{{ __('emails.purchase.order_label') }}</td>
|
||||
<td style="padding:10px 0; font-size:14px; text-align:right;">{{ $orderId }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:10px 0; font-size:14px; color:#6b7280;">{{ __('emails.purchase.price_label') }}</td>
|
||||
<td style="padding:10px 0; font-size:16px; text-align:right; font-weight:700;">{{ $priceFormatted }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:0 32px 18px;">
|
||||
<div style="background-color:#f8fafc; border:1px solid #e2e8f0; border-radius:12px; padding:16px;">
|
||||
<p style="margin:0 0 6px; font-size:13px; text-transform:uppercase; letter-spacing:0.08em; color:#64748b;">
|
||||
{{ __('emails.purchase.activation_label') }}
|
||||
</p>
|
||||
<p style="margin:0; font-size:14px; color:#0f172a;">
|
||||
{{ __('emails.purchase.activation') }}
|
||||
</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@if (! empty($limits))
|
||||
<tr>
|
||||
<td style="padding:0 32px 18px;">
|
||||
<h3 style="margin:0 0 12px; font-size:16px;">{{ __('emails.purchase.limits_title') }}</h3>
|
||||
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" style="border-collapse:collapse;">
|
||||
@foreach ($limits as $limit)
|
||||
<tr>
|
||||
<td style="padding:6px 0; font-size:14px; color:#6b7280;">{{ $limit['label'] }}</td>
|
||||
<td style="padding:6px 0; font-size:14px; text-align:right; font-weight:600;">{{ $limit['value'] }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@if ($invoiceUrl)
|
||||
<tr>
|
||||
<td style="padding:0 32px 18px;">
|
||||
<h3 style="margin:0 0 8px; font-size:16px;">{{ __('emails.purchase.invoice_title') }}</h3>
|
||||
<p style="margin:0; font-size:14px; color:#6b7280;">
|
||||
<a href="{{ $invoiceUrl }}" style="color:#1d4ed8; text-decoration:none;">
|
||||
{{ __('emails.purchase.invoice_link') }}
|
||||
</a>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
<tr>
|
||||
<td style="padding:0 32px 32px;">
|
||||
<a href="{{ $ctaUrl }}" style="display:inline-block; background-color:#111827; color:#ffffff; text-decoration:none; padding:12px 20px; border-radius:999px; font-weight:600; font-size:14px;">
|
||||
{{ __('emails.purchase.cta') }}
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:0 32px 32px; font-size:12px; color:#6b7280;">
|
||||
{!! __('emails.purchase.footer') !!}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p style="margin:16px 0 0; font-size:12px; color:#94a3b8;">
|
||||
{{ __('emails.purchase.brand_footer') }}
|
||||
</p>
|
||||
</td>
|
||||
<td style="padding:10px 0; font-size:14px; color:#6b7280;">{{ __('emails.purchase.package_label') }}</td>
|
||||
<td style="padding:10px 0; font-size:14px; text-align:right; font-weight:600;">{{ $packageName }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:10px 0; font-size:14px; color:#6b7280;">{{ __('emails.purchase.type_label') }}</td>
|
||||
<td style="padding:10px 0; font-size:14px; text-align:right;">{{ $packageTypeLabel }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:10px 0; font-size:14px; color:#6b7280;">{{ __('emails.purchase.date_label') }}</td>
|
||||
<td style="padding:10px 0; font-size:14px; text-align:right;">{{ $purchaseDate }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:10px 0; font-size:14px; color:#6b7280;">{{ __('emails.purchase.provider_label') }}</td>
|
||||
<td style="padding:10px 0; font-size:14px; text-align:right;">{{ $providerLabel }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:10px 0; font-size:14px; color:#6b7280;">{{ __('emails.purchase.order_label') }}</td>
|
||||
<td style="padding:10px 0; font-size:14px; text-align:right;">{{ $orderId }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:10px 0; font-size:14px; color:#6b7280;">{{ __('emails.purchase.price_label') }}</td>
|
||||
<td style="padding:10px 0; font-size:16px; text-align:right; font-weight:700;">{{ $priceFormatted }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
<div style="margin-top:16px; background-color:#f8fafc; border:1px solid #e2e8f0; border-radius:12px; padding:16px;">
|
||||
<p style="margin:0 0 6px; font-size:13px; text-transform:uppercase; letter-spacing:0.08em; color:#64748b;">
|
||||
{{ __('emails.purchase.activation_label') }}
|
||||
</p>
|
||||
<p style="margin:0; font-size:14px; color:#0f172a;">
|
||||
{{ __('emails.purchase.activation') }}
|
||||
</p>
|
||||
</div>
|
||||
@if (! empty($limits))
|
||||
<h3 style="margin:18px 0 12px; font-size:16px;">{{ __('emails.purchase.limits_title') }}</h3>
|
||||
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" style="border-collapse:collapse;">
|
||||
@foreach ($limits as $limit)
|
||||
<tr>
|
||||
<td style="padding:6px 0; font-size:14px; color:#6b7280;">{{ $limit['label'] }}</td>
|
||||
<td style="padding:6px 0; font-size:14px; text-align:right; font-weight:600;">{{ $limit['value'] }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
@endif
|
||||
@if ($invoiceUrl)
|
||||
<h3 style="margin:18px 0 8px; font-size:16px;">{{ __('emails.purchase.invoice_title') }}</h3>
|
||||
<p style="margin:0; font-size:14px; color:#6b7280;">
|
||||
<a href="{{ $invoiceUrl }}" style="color:#1d4ed8; text-decoration:none;">
|
||||
{{ __('emails.purchase.invoice_link') }}
|
||||
</a>
|
||||
</p>
|
||||
@endif
|
||||
@endsection
|
||||
|
||||
@section('cta')
|
||||
<a href="{{ $ctaUrl }}" style="display:inline-block; background-color:#111827; color:#ffffff; text-decoration:none; padding:12px 20px; border-radius:999px; font-weight:600; font-size:14px;">
|
||||
{{ __('emails.purchase.cta') }}
|
||||
</a>
|
||||
@endsection
|
||||
|
||||
@section('footer')
|
||||
{!! __('emails.purchase.footer') !!}
|
||||
@endsection
|
||||
|
||||
29
resources/views/emails/verify-email.blade.php
Normal file
29
resources/views/emails/verify-email.blade.php
Normal file
@@ -0,0 +1,29 @@
|
||||
@extends('emails.partials.layout')
|
||||
|
||||
@section('title', __('emails.verification.subject'))
|
||||
@section('preheader', __('emails.verification.preheader'))
|
||||
@section('hero_title', __('emails.verification.hero_title', ['name' => $user->fullName ?? $user->name ?? $user->email]))
|
||||
@section('hero_subtitle', __('emails.verification.hero_subtitle'))
|
||||
|
||||
@section('content')
|
||||
<p style="margin:0 0 12px; font-size:15px; color:#1f2937;">
|
||||
{{ __('emails.verification.body') }}
|
||||
</p>
|
||||
<p style="margin:0 0 16px; font-size:14px; color:#1f2937;">
|
||||
{{ __('emails.verification.expires', ['minutes' => $expiresIn]) }}
|
||||
</p>
|
||||
<p style="margin:0; font-size:13px; color:#6b7280;">
|
||||
{{ __('emails.verification.link_fallback') }}<br>
|
||||
<span style="word-break:break-all;">{{ $verificationUrl }}</span>
|
||||
</p>
|
||||
@endsection
|
||||
|
||||
@section('cta')
|
||||
<a href="{{ $verificationUrl }}" style="display:inline-block; background-color:#111827; color:#ffffff; text-decoration:none; padding:12px 20px; border-radius:999px; font-weight:600; font-size:14px;">
|
||||
{{ __('emails.verification.cta') }}
|
||||
</a>
|
||||
@endsection
|
||||
|
||||
@section('footer')
|
||||
{!! __('emails.verification.footer') !!}
|
||||
@endsection
|
||||
@@ -1,14 +1,49 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>{{ __('emails.welcome.subject', ['name' => $user->fullName]) }}</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>{{ __('emails.welcome.greeting', ['name' => $user->fullName]) }}</h1>
|
||||
<p>{{ __('emails.welcome.body') }}</p>
|
||||
<p>{{ __('emails.welcome.username', ['username' => $user->username]) }}</p>
|
||||
<p>{{ __('emails.welcome.email', ['email' => $user->email]) }}</p>
|
||||
<p>{{ __('emails.welcome.verification') }}</p>
|
||||
<p>{!! __('emails.welcome.footer') !!}</p>
|
||||
</body>
|
||||
</html>
|
||||
@extends('emails.partials.layout')
|
||||
|
||||
@section('title', __('emails.welcome.subject', ['name' => $user->fullName]))
|
||||
@section('preheader', __('emails.welcome.subtitle'))
|
||||
@section('hero_title', __('emails.welcome.greeting', ['name' => $user->fullName]))
|
||||
@section('hero_subtitle', __('emails.welcome.subtitle'))
|
||||
|
||||
@section('content')
|
||||
<p style="margin:0 0 12px; font-size:15px; color:#1f2937;">
|
||||
{{ __('emails.welcome.body') }}
|
||||
</p>
|
||||
<div style="background-color:#f8fafc; border:1px solid #e2e8f0; border-radius:12px; padding:16px; margin-bottom:16px;">
|
||||
<p style="margin:0 0 6px; font-size:13px; text-transform:uppercase; letter-spacing:0.08em; color:#64748b;">
|
||||
{{ __('emails.welcome.account_label') }}
|
||||
</p>
|
||||
<p style="margin:0; font-size:14px; color:#0f172a;">
|
||||
{{ __('emails.welcome.username', ['username' => $user->username]) }}<br>
|
||||
{{ __('emails.welcome.email', ['email' => $user->email]) }}
|
||||
</p>
|
||||
</div>
|
||||
<p style="margin:0 0 16px; font-size:14px; color:#1f2937;">
|
||||
{{ __('emails.welcome.verification') }}
|
||||
</p>
|
||||
<h3 style="margin:0 0 10px; font-size:16px;">{{ __('emails.welcome.next_steps_title') }}</h3>
|
||||
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" style="border-collapse:collapse;">
|
||||
<tr>
|
||||
<td style="padding:6px 0; font-size:14px; color:#6b7280;">01</td>
|
||||
<td style="padding:6px 0; font-size:14px; color:#0f172a;">{{ __('emails.welcome.step_one') }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:6px 0; font-size:14px; color:#6b7280;">02</td>
|
||||
<td style="padding:6px 0; font-size:14px; color:#0f172a;">{{ __('emails.welcome.step_two') }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:6px 0; font-size:14px; color:#6b7280;">03</td>
|
||||
<td style="padding:6px 0; font-size:14px; color:#0f172a;">{{ __('emails.welcome.step_three') }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
@endsection
|
||||
|
||||
@section('cta')
|
||||
<a href="{{ url('/event-admin') }}" style="display:inline-block; background-color:#111827; color:#ffffff; text-decoration:none; padding:12px 20px; border-radius:999px; font-weight:600; font-size:14px;">
|
||||
{{ __('emails.welcome.cta') }}
|
||||
</a>
|
||||
@endsection
|
||||
|
||||
@section('footer')
|
||||
{!! __('emails.welcome.footer') !!}
|
||||
@endsection
|
||||
|
||||
Reference in New Issue
Block a user