Fix transfer share links and redesign recipient download email.
Deploy Ladill Transfer / deploy (push) Successful in 36s

Use transfer.ladill.com share URLs in notifications and APIs, add the email
logo, and show file details with a prominent download button.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-06-08 15:56:06 +00:00
co-authored by Cursor
parent a0fce19402
commit c396c97ce2
7 changed files with 61 additions and 20 deletions
@@ -367,7 +367,11 @@
<div class="email-container">
{{-- Header with Logo --}}
<div class="email-header">
<img src="{{ config('app.url') }}/images/logo/ladill-logo-white.png" alt="Ladill" class="email-logo">
@hasSection('email-header')
@yield('email-header')
@else
<img src="{{ config('app.url') }}/images/logo/ladill-logo-white.png" alt="Ladill" class="email-logo">
@endif
</div>
@hasSection('icon-header')
@@ -1,25 +1,34 @@
@extends('mail.notifications.layout')
@section('email-header')
<img src="{{ config('app.url') }}/images/logo/ladilltransfer-logo-email.png" alt="Ladill Transfer" class="email-logo" style="max-height:44px;">
@endsection
@section('content')
@php
$fileCount = $transfer->files->count();
$availableUntil = $transfer->isInGracePeriod()
? $transfer->grace_ends_at
: $transfer->paid_until;
@endphp
$fmtBytes = function (int $bytes) {
if ($bytes >= 1048576) {
return number_format($bytes / 1048576, 1).' MB';
}
if ($bytes >= 1024) {
return number_format($bytes / 1024, 0).' KB';
}
<div class="highlight-box highlight-box-success">
<p class="highlight-box-text">📁 File transfer</p>
<p class="highlight-box-subtext">{{ $transfer->title }}</p>
</div>
return $bytes.' B';
};
@endphp
@if($milestone === 'created')
<h1 class="email-title">You have files to download</h1>
<p class="email-text">
@if($senderName)
<strong>{{ $senderName }}</strong> shared {{ $fileCount === 1 ? 'a file' : $fileCount.' files' }} with you via Ladill Transfer.
<strong>{{ $senderName }}</strong> shared {{ $fileCount === 1 ? 'a file' : $fileCount.' files' }} with you through Ladill Transfer.
@else
Someone shared {{ $fileCount === 1 ? 'a file' : $fileCount.' files' }} with you via Ladill Transfer.
Someone shared {{ $fileCount === 1 ? 'a file' : $fileCount.' files' }} with you through Ladill Transfer.
@endif
</p>
@elseif($milestone === 'grace')
@@ -47,34 +56,54 @@
</p>
@endif
<div class="email-details" style="margin-top:20px;">
<p class="email-details-title">Transfer</p>
<div class="email-details-row">
<p class="email-details-label">Title</p>
<p class="email-details-value">{{ $transfer->title }}</p>
</div>
<div class="email-details-row">
<p class="email-details-label">Files</p>
<p class="email-details-value">{{ $fileCount }} {{ $fileCount === 1 ? 'file' : 'files' }} · {{ $fmtBytes($transfer->storage_bytes) }}</p>
</div>
@foreach($transfer->files as $file)
<div class="email-details-row">
<p class="email-details-label">{{ $file->original_name }}</p>
<p class="email-details-value" style="font-weight:500;color:#475569;">{{ $fmtBytes($file->size_bytes) }}</p>
</div>
@endforeach
</div>
@if($transfer->message)
<p class="email-text" style="background:#f8fafc;border-radius:10px;padding:14px 16px;color:#475569;">
<p class="email-text" style="background:#f8fafc;border-radius:10px;padding:14px 16px;color:#475569;border-left:4px solid #4f46e5;">
<span style="display:block;font-size:12px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:0.04em;margin-bottom:6px;">Message from sender</span>
{{ $transfer->message }}
</p>
@endif
@if($transfer->isPasswordProtected())
<p class="email-text" style="font-size:13px;color:#b45309;">
This transfer is password protected. The sender will need to share the password with you separately.
<p class="email-text" style="font-size:13px;color:#b45309;background:#fffbeb;border-radius:10px;padding:12px 14px;border:1px solid #fde68a;">
This transfer is password protected. The sender will share the password with you separately.
</p>
@endif
<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%" style="margin:24px 0;">
<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%" style="margin:28px 0 20px;">
<tr>
<td align="center">
<a href="{{ $publicUrl }}" class="email-button" style="display:inline-block;background:#4f46e5;color:#ffffff;text-decoration:none;padding:12px 28px;border-radius:10px;font-size:14px;font-weight:600;">
Download files
<a href="{{ $publicUrl }}" class="email-button" style="display:inline-block;background:linear-gradient(135deg,#4f46e5 0%,#7c3aed 100%);color:#ffffff;text-decoration:none;padding:16px 36px;border-radius:12px;font-size:16px;font-weight:700;box-shadow:0 8px 24px rgba(79,70,229,0.35);">
Download {{ $fileCount === 1 ? 'file' : 'files' }}
</a>
</td>
</tr>
</table>
<p class="email-text" style="font-size:13px;color:#6b7280;">
Or open this link: <a href="{{ $publicUrl }}" style="color:#4f46e5;">{{ $publicUrl }}</a>
<p class="email-text" style="font-size:13px;color:#6b7280;text-align:center;">
Or copy this link into your browser:<br>
<a href="{{ $publicUrl }}" style="color:#4f46e5;word-break:break-all;">{{ $publicUrl }}</a>
</p>
@if($availableUntil && $milestone !== 'grace')
<p class="email-text" style="font-size:13px;color:#6b7280;">
<p class="email-text" style="font-size:13px;color:#6b7280;text-align:center;">
Available until {{ $availableUntil->format('F j, Y') }}.
</p>
@endif