complete story 10.3
This commit is contained in:
parent
44f291fbc3
commit
8cdb554ea0
|
|
@ -113,22 +113,22 @@ php artisan make:mail TestEmail --markdown=emails.test
|
||||||
|
|
||||||
## Dev Checklist
|
## Dev Checklist
|
||||||
|
|
||||||
- [ ] Update `default.css` header background color
|
- [x] Update `default.css` header background color
|
||||||
- [ ] Update `default.css` link colors
|
- [x] Update `default.css` link colors
|
||||||
- [ ] Update `default.css` heading colors
|
- [x] Update `default.css` heading colors
|
||||||
- [ ] Update `default.css` button colors (`.button-primary`)
|
- [x] Update `default.css` button colors (`.button-primary`)
|
||||||
- [ ] Update `default.css` table header colors
|
- [x] Update `default.css` table header colors
|
||||||
- [ ] Update `default.css` panel border color
|
- [x] Update `default.css` panel border color
|
||||||
- [ ] Update `default.css` footer link colors
|
- [x] Update `default.css` footer link colors
|
||||||
- [ ] Review `header.blade.php` for inline styles
|
- [x] Review `header.blade.php` for inline styles
|
||||||
- [ ] Review `footer.blade.php` for inline styles
|
- [x] Review `footer.blade.php` for inline styles
|
||||||
- [ ] Review `button.blade.php` for inline styles
|
- [x] Review `button.blade.php` for inline styles
|
||||||
- [ ] Review `panel.blade.php` for inline styles
|
- [x] Review `panel.blade.php` for inline styles
|
||||||
- [ ] Test Welcome email appearance
|
- [x] Test Welcome email appearance
|
||||||
- [ ] Test Booking emails appearance
|
- [x] Test Booking emails appearance
|
||||||
- [ ] Test Reminder emails appearance
|
- [x] Test Reminder emails appearance
|
||||||
- [ ] Test Timeline update email appearance
|
- [x] Test Timeline update email appearance
|
||||||
- [ ] Verify RTL email layout (Arabic)
|
- [x] Verify RTL email layout (Arabic)
|
||||||
|
|
||||||
## Estimation
|
## Estimation
|
||||||
|
|
||||||
|
|
@ -138,3 +138,58 @@ php artisan make:mail TestEmail --markdown=emails.test
|
||||||
## Dependencies
|
## Dependencies
|
||||||
|
|
||||||
- Story 10.5 (Logo Update) should be completed for email logo consistency
|
- Story 10.5 (Logo Update) should be completed for email logo consistency
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Dev Agent Record
|
||||||
|
|
||||||
|
### Status
|
||||||
|
|
||||||
|
Ready for Review
|
||||||
|
|
||||||
|
### Agent Model Used
|
||||||
|
|
||||||
|
Claude Opus 4.5 (claude-opus-4-5-20251101)
|
||||||
|
|
||||||
|
### File List
|
||||||
|
|
||||||
|
**Modified:**
|
||||||
|
- `resources/views/vendor/mail/html/themes/default.css` - Updated all color references from old Navy/Gold to new Charcoal/Warm Gray palette
|
||||||
|
- `resources/views/vendor/mail/html/header.blade.php` - Updated inline background-color from #0A1F44 to #4A4A42
|
||||||
|
- `resources/views/vendor/mail/html/footer.blade.php` - Updated inline link colors from #D4AF37 to #C9C4BA
|
||||||
|
|
||||||
|
**Created:**
|
||||||
|
- `tests/Feature/Mail/EmailTemplateColorsTest.php` - 16 tests verifying new brand colors in email templates
|
||||||
|
|
||||||
|
**Reviewed (No Changes Needed):**
|
||||||
|
- `resources/views/vendor/mail/html/button.blade.php` - Uses CSS classes, no inline colors
|
||||||
|
- `resources/views/vendor/mail/html/panel.blade.php` - Uses CSS classes, no inline colors
|
||||||
|
- `resources/views/vendor/mail/html/layout.blade.php` - No color references
|
||||||
|
|
||||||
|
### Change Log
|
||||||
|
|
||||||
|
| File | Change |
|
||||||
|
|------|--------|
|
||||||
|
| `default.css` | Links: #0A1F44 → #4A4A42 |
|
||||||
|
| `default.css` | h1, h2, h3: #0A1F44 → #4A4A42 |
|
||||||
|
| `default.css` | .header bg: #0A1F44 → #4A4A42 |
|
||||||
|
| `default.css` | .footer a: #D4AF37 → #C9C4BA |
|
||||||
|
| `default.css` | .table th: #0A1F44 → #4A4A42 |
|
||||||
|
| `default.css` | .button-primary: bg #D4AF37 → #4A4A42, text #0A1F44 → #E8E4DC |
|
||||||
|
| `default.css` | .panel: border #D4AF37 → #C9C4BA |
|
||||||
|
| `header.blade.php` | inline bg: #0A1F44 → #4A4A42 |
|
||||||
|
| `footer.blade.php` | inline link colors: #D4AF37 → #C9C4BA |
|
||||||
|
|
||||||
|
### Completion Notes
|
||||||
|
|
||||||
|
- All email template CSS and inline styles updated to new brand colors
|
||||||
|
- 16 unit tests created to verify color changes
|
||||||
|
- 145 email-related tests pass (including new tests)
|
||||||
|
- button.blade.php and panel.blade.php use CSS classes from default.css, no inline changes needed
|
||||||
|
- layout.blade.php contains no color references
|
||||||
|
- Plain text templates unaffected (no colors in text templates)
|
||||||
|
- AC6 (Logo Update) depends on Story 10.5
|
||||||
|
|
||||||
|
### Debug Log References
|
||||||
|
|
||||||
|
N/A - No issues encountered
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,10 @@
|
||||||
Ramallah, Palestine | رام الله، فلسطين
|
Ramallah, Palestine | رام الله، فلسطين
|
||||||
</p>
|
</p>
|
||||||
<p style="color: #a1a1aa; font-size: 11px; margin-bottom: 4px;">
|
<p style="color: #a1a1aa; font-size: 11px; margin-bottom: 4px;">
|
||||||
<a href="mailto:info@libra.ps" style="color: #D4AF37;">info@libra.ps</a>
|
<a href="mailto:info@libra.ps" style="color: #C9C4BA;">info@libra.ps</a>
|
||||||
</p>
|
</p>
|
||||||
<p style="color: #a1a1aa; font-size: 11px;">
|
<p style="color: #a1a1aa; font-size: 11px;">
|
||||||
<a href="{{ config('app.url') }}" style="color: #D4AF37;">{{ config('app.url') }}</a>
|
<a href="{{ config('app.url') }}" style="color: #C9C4BA;">{{ config('app.url') }}</a>
|
||||||
</p>
|
</p>
|
||||||
{{ Illuminate\Mail\Markdown::parse($slot) }}
|
{{ Illuminate\Mail\Markdown::parse($slot) }}
|
||||||
</td>
|
</td>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
@props(['url'])
|
@props(['url'])
|
||||||
<tr>
|
<tr>
|
||||||
<td class="header" style="background-color: #0A1F44; padding: 25px; text-align: center;">
|
<td class="header" style="background-color: #4A4A42; padding: 25px; text-align: center;">
|
||||||
<a href="{{ $url }}" style="display: inline-block;">
|
<a href="{{ $url }}" style="display: inline-block;">
|
||||||
@if (trim($slot) === 'Laravel')
|
@if (trim($slot) === 'Laravel')
|
||||||
<img src="{{ asset('images/logo-email.png') }}" class="logo" alt="Libra Law Firm" style="height: 45px;">
|
<img src="{{ asset('images/logo-email.png') }}" class="logo" alt="Libra Law Firm" style="height: 45px;">
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ blockquote {
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: #0A1F44;
|
color: #4A4A42;
|
||||||
}
|
}
|
||||||
|
|
||||||
a img {
|
a img {
|
||||||
|
|
@ -38,7 +38,7 @@ a img {
|
||||||
/* Typography */
|
/* Typography */
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
color: #0A1F44;
|
color: #4A4A42;
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
|
|
@ -46,7 +46,7 @@ h1 {
|
||||||
}
|
}
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
color: #0A1F44;
|
color: #4A4A42;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
|
|
@ -54,7 +54,7 @@ h2 {
|
||||||
}
|
}
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
color: #0A1F44;
|
color: #4A4A42;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
|
|
@ -100,7 +100,7 @@ img {
|
||||||
/* Header */
|
/* Header */
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
background-color: #0A1F44;
|
background-color: #4A4A42;
|
||||||
padding: 25px 0;
|
padding: 25px 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
@ -184,7 +184,7 @@ img {
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer a {
|
.footer a {
|
||||||
color: #D4AF37;
|
color: #C9C4BA;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -200,7 +200,7 @@ img {
|
||||||
|
|
||||||
.table th {
|
.table th {
|
||||||
border-bottom: 1px solid #e4e4e7;
|
border-bottom: 1px solid #e4e4e7;
|
||||||
color: #0A1F44;
|
color: #4A4A42;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding-bottom: 8px;
|
padding-bottom: 8px;
|
||||||
}
|
}
|
||||||
|
|
@ -242,12 +242,12 @@ img {
|
||||||
|
|
||||||
.button-blue,
|
.button-blue,
|
||||||
.button-primary {
|
.button-primary {
|
||||||
background-color: #D4AF37;
|
background-color: #4A4A42;
|
||||||
border-bottom: 8px solid #D4AF37;
|
border-bottom: 8px solid #4A4A42;
|
||||||
border-left: 18px solid #D4AF37;
|
border-left: 18px solid #4A4A42;
|
||||||
border-right: 18px solid #D4AF37;
|
border-right: 18px solid #4A4A42;
|
||||||
border-top: 8px solid #D4AF37;
|
border-top: 8px solid #4A4A42;
|
||||||
color: #0A1F44;
|
color: #E8E4DC;
|
||||||
}
|
}
|
||||||
|
|
||||||
.button-green,
|
.button-green,
|
||||||
|
|
@ -271,7 +271,7 @@ img {
|
||||||
/* Panels */
|
/* Panels */
|
||||||
|
|
||||||
.panel {
|
.panel {
|
||||||
border-left: #D4AF37 solid 4px;
|
border-left: #C9C4BA solid 4px;
|
||||||
margin: 21px 0;
|
margin: 21px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,105 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\File;
|
||||||
|
|
||||||
|
test('default.css uses new charcoal color for links', function () {
|
||||||
|
$css = File::get(resource_path('views/vendor/mail/html/themes/default.css'));
|
||||||
|
|
||||||
|
expect($css)->toContain('a {')
|
||||||
|
->and($css)->toContain('color: #4A4A42;');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('default.css uses new charcoal color for h1 headings', function () {
|
||||||
|
$css = File::get(resource_path('views/vendor/mail/html/themes/default.css'));
|
||||||
|
|
||||||
|
expect($css)->toMatch('/h1\s*\{[^}]*color:\s*#4A4A42;/');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('default.css uses new charcoal color for h2 headings', function () {
|
||||||
|
$css = File::get(resource_path('views/vendor/mail/html/themes/default.css'));
|
||||||
|
|
||||||
|
expect($css)->toMatch('/h2\s*\{[^}]*color:\s*#4A4A42;/');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('default.css uses new charcoal color for h3 headings', function () {
|
||||||
|
$css = File::get(resource_path('views/vendor/mail/html/themes/default.css'));
|
||||||
|
|
||||||
|
expect($css)->toMatch('/h3\s*\{[^}]*color:\s*#4A4A42;/');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('default.css uses new charcoal color for header background', function () {
|
||||||
|
$css = File::get(resource_path('views/vendor/mail/html/themes/default.css'));
|
||||||
|
|
||||||
|
expect($css)->toMatch('/\.header\s*\{[^}]*background-color:\s*#4A4A42;/');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('default.css uses new warm gray color for footer links', function () {
|
||||||
|
$css = File::get(resource_path('views/vendor/mail/html/themes/default.css'));
|
||||||
|
|
||||||
|
expect($css)->toMatch('/\.footer a\s*\{[^}]*color:\s*#C9C4BA;/');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('default.css uses new charcoal color for table headers', function () {
|
||||||
|
$css = File::get(resource_path('views/vendor/mail/html/themes/default.css'));
|
||||||
|
|
||||||
|
expect($css)->toMatch('/\.table th\s*\{[^}]*color:\s*#4A4A42;/');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('default.css uses new charcoal background for primary buttons', function () {
|
||||||
|
$css = File::get(resource_path('views/vendor/mail/html/themes/default.css'));
|
||||||
|
|
||||||
|
expect($css)->toMatch('/\.button-primary\s*\{[^}]*background-color:\s*#4A4A42;/');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('default.css uses new off-white text for primary buttons', function () {
|
||||||
|
$css = File::get(resource_path('views/vendor/mail/html/themes/default.css'));
|
||||||
|
|
||||||
|
expect($css)->toMatch('/\.button-primary\s*\{[^}]*color:\s*#E8E4DC;/');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('default.css uses new warm gray color for panel border', function () {
|
||||||
|
$css = File::get(resource_path('views/vendor/mail/html/themes/default.css'));
|
||||||
|
|
||||||
|
expect($css)->toMatch('/\.panel\s*\{[^}]*border-left:\s*#C9C4BA/');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('header.blade.php uses new charcoal background color', function () {
|
||||||
|
$header = File::get(resource_path('views/vendor/mail/html/header.blade.php'));
|
||||||
|
|
||||||
|
expect($header)->toContain('background-color: #4A4A42;');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('header.blade.php does not use old navy color', function () {
|
||||||
|
$header = File::get(resource_path('views/vendor/mail/html/header.blade.php'));
|
||||||
|
|
||||||
|
expect($header)->not->toContain('#0A1F44');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('footer.blade.php uses new warm gray color for links', function () {
|
||||||
|
$footer = File::get(resource_path('views/vendor/mail/html/footer.blade.php'));
|
||||||
|
|
||||||
|
expect($footer)->toContain('color: #C9C4BA;');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('footer.blade.php does not use old gold color', function () {
|
||||||
|
$footer = File::get(resource_path('views/vendor/mail/html/footer.blade.php'));
|
||||||
|
|
||||||
|
expect($footer)->not->toContain('#D4AF37');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('default.css does not use old navy color for headings and links', function () {
|
||||||
|
$css = File::get(resource_path('views/vendor/mail/html/themes/default.css'));
|
||||||
|
|
||||||
|
// Check that old navy color is not used in headings
|
||||||
|
expect($css)->not->toMatch('/h1\s*\{[^}]*color:\s*#0A1F44;/')
|
||||||
|
->and($css)->not->toMatch('/h2\s*\{[^}]*color:\s*#0A1F44;/')
|
||||||
|
->and($css)->not->toMatch('/h3\s*\{[^}]*color:\s*#0A1F44;/');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('default.css does not use old gold color for buttons and panels', function () {
|
||||||
|
$css = File::get(resource_path('views/vendor/mail/html/themes/default.css'));
|
||||||
|
|
||||||
|
// Check that old gold color is not used in buttons
|
||||||
|
expect($css)->not->toMatch('/\.button-primary\s*\{[^}]*background-color:\s*#D4AF37;/')
|
||||||
|
->and($css)->not->toMatch('/\.panel\s*\{[^}]*border-left:\s*#D4AF37/');
|
||||||
|
});
|
||||||
Loading…
Reference in New Issue