redone 12.5
This commit is contained in:
parent
e557fb1104
commit
45f029a1db
|
|
@ -191,7 +191,7 @@ class MonthlyReportService
|
|||
],
|
||||
'datasets' => [[
|
||||
'data' => [$free, $paid],
|
||||
'backgroundColor' => ['#8AB357', '#A5C87A'],
|
||||
'backgroundColor' => ['#A68966', '#C4A882'],
|
||||
]],
|
||||
],
|
||||
'options' => [
|
||||
|
|
@ -249,8 +249,8 @@ class MonthlyReportService
|
|||
'datasets' => [[
|
||||
'label' => __('report.consultations', [], $locale),
|
||||
'data' => $data,
|
||||
'borderColor' => '#8AB357',
|
||||
'backgroundColor' => 'rgba(138, 179, 87, 0.1)',
|
||||
'borderColor' => '#A68966',
|
||||
'backgroundColor' => 'rgba(166, 137, 102, 0.1)',
|
||||
'fill' => true,
|
||||
'tension' => 0.3,
|
||||
]],
|
||||
|
|
|
|||
|
|
@ -152,13 +152,13 @@ $chartColors = [
|
|||
|
||||
## Dev Checklist
|
||||
|
||||
- [ ] Update `users-export.blade.php` colors
|
||||
- [ ] Update `consultations-export.blade.php` colors
|
||||
- [ ] Update `timelines-export.blade.php` colors
|
||||
- [ ] Update `monthly-report.blade.php` colors
|
||||
- [ ] Update `MonthlyReportService.php` chart colors
|
||||
- [ ] Review `monthly-report.blade.php` Livewire component
|
||||
- [ ] Update `PdfBrandColorsTest.php` color assertions
|
||||
- [x] Update `users-export.blade.php` colors
|
||||
- [x] Update `consultations-export.blade.php` colors
|
||||
- [x] Update `timelines-export.blade.php` colors
|
||||
- [x] Update `monthly-report.blade.php` colors
|
||||
- [x] Update `MonthlyReportService.php` chart colors
|
||||
- [x] Review `monthly-report.blade.php` Livewire component
|
||||
- [x] Update `PdfBrandColorsTest.php` color assertions
|
||||
- [ ] Test Users PDF export
|
||||
- [ ] Test Consultations PDF export
|
||||
- [ ] Test Timelines PDF export
|
||||
|
|
@ -182,27 +182,38 @@ $chartColors = [
|
|||
## Dev Agent Record
|
||||
|
||||
### Status
|
||||
Not Started - Ready for Implementation
|
||||
Ready for Review
|
||||
|
||||
### Agent Model Used
|
||||
(To be filled during implementation)
|
||||
Claude Opus 4.5 (claude-opus-4-5-20251101)
|
||||
|
||||
### File List
|
||||
|
||||
**To be modified:**
|
||||
- `resources/views/pdf/users-export.blade.php`
|
||||
- `resources/views/pdf/consultations-export.blade.php`
|
||||
- `resources/views/pdf/timelines-export.blade.php`
|
||||
- `resources/views/pdf/monthly-report.blade.php`
|
||||
- `app/Services/MonthlyReportService.php`
|
||||
- `resources/views/livewire/admin/reports/monthly-report.blade.php`
|
||||
- `tests/Feature/Admin/PdfBrandColorsTest.php`
|
||||
**Modified:**
|
||||
- `resources/views/pdf/users-export.blade.php` - Updated colors to new palette
|
||||
- `resources/views/pdf/consultations-export.blade.php` - Updated colors to new palette
|
||||
- `resources/views/pdf/timelines-export.blade.php` - Updated colors to new palette
|
||||
- `resources/views/pdf/monthly-report.blade.php` - Updated colors to new palette
|
||||
- `app/Services/MonthlyReportService.php` - Updated chart colors
|
||||
- `resources/views/livewire/admin/reports/monthly-report.blade.php` - Updated TOC number badge colors
|
||||
- `tests/Feature/Admin/PdfBrandColorsTest.php` - Updated color assertions
|
||||
|
||||
### Change Log
|
||||
|
||||
| Date | Change |
|
||||
|------|--------|
|
||||
| 2026-01-04 | Story updated with new Dark Charcoal & Warm Gold palette |
|
||||
| 2026-01-04 | Implementation complete: All PDF templates and service updated |
|
||||
|
||||
### Completion Notes
|
||||
(To be filled during implementation)
|
||||
- All 4 PDF templates updated with new color palette:
|
||||
- Dark Forest Green (#2D3624) for headers and table header backgrounds
|
||||
- Warm Gold (#A68966) for accent text and highlights
|
||||
- Gold Light (#C4A882) for borders
|
||||
- Warm Cream (#F4F1EA) for backgrounds
|
||||
- Forest Green (#2D322A) for body text
|
||||
- White (#FFFFFF) for table header text
|
||||
- MonthlyReportService chart colors updated (pie chart and trend line)
|
||||
- Livewire monthly-report component TOC badges updated
|
||||
- Test file updated with new color assertions - all 6 tests pass (44 assertions)
|
||||
- Manual testing of PDF exports and print preview still required
|
||||
|
|
|
|||
|
|
@ -87,27 +87,27 @@ new class extends Component
|
|||
<flux:heading size="sm" class="mb-4">{{ __('report.table_of_contents') }}</flux:heading>
|
||||
<div class="space-y-2 text-sm text-zinc-600 dark:text-zinc-400">
|
||||
<div class="flex items-center gap-2">
|
||||
<span class="flex h-6 w-6 items-center justify-center rounded-full bg-[#8AB357] text-xs text-white dark:bg-[#A5C87A] dark:text-zinc-900">1</span>
|
||||
<span class="flex h-6 w-6 items-center justify-center rounded-full bg-[#2D3624] text-xs text-white dark:bg-[#A68966] dark:text-zinc-900">1</span>
|
||||
<span>{{ __('report.executive_summary') }}</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-2">
|
||||
<span class="flex h-6 w-6 items-center justify-center rounded-full bg-[#8AB357] text-xs text-white dark:bg-[#A5C87A] dark:text-zinc-900">2</span>
|
||||
<span class="flex h-6 w-6 items-center justify-center rounded-full bg-[#2D3624] text-xs text-white dark:bg-[#A68966] dark:text-zinc-900">2</span>
|
||||
<span>{{ __('report.user_statistics') }}</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-2">
|
||||
<span class="flex h-6 w-6 items-center justify-center rounded-full bg-[#8AB357] text-xs text-white dark:bg-[#A5C87A] dark:text-zinc-900">3</span>
|
||||
<span class="flex h-6 w-6 items-center justify-center rounded-full bg-[#2D3624] text-xs text-white dark:bg-[#A68966] dark:text-zinc-900">3</span>
|
||||
<span>{{ __('report.consultation_statistics') }}</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-2">
|
||||
<span class="flex h-6 w-6 items-center justify-center rounded-full bg-[#8AB357] text-xs text-white dark:bg-[#A5C87A] dark:text-zinc-900">4</span>
|
||||
<span class="flex h-6 w-6 items-center justify-center rounded-full bg-[#2D3624] text-xs text-white dark:bg-[#A68966] dark:text-zinc-900">4</span>
|
||||
<span>{{ __('report.timeline_statistics') }}</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-2">
|
||||
<span class="flex h-6 w-6 items-center justify-center rounded-full bg-[#8AB357] text-xs text-white dark:bg-[#A5C87A] dark:text-zinc-900">5</span>
|
||||
<span class="flex h-6 w-6 items-center justify-center rounded-full bg-[#2D3624] text-xs text-white dark:bg-[#A68966] dark:text-zinc-900">5</span>
|
||||
<span>{{ __('report.post_statistics') }}</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-2">
|
||||
<span class="flex h-6 w-6 items-center justify-center rounded-full bg-[#8AB357] text-xs text-white dark:bg-[#A5C87A] dark:text-zinc-900">6</span>
|
||||
<span class="flex h-6 w-6 items-center justify-center rounded-full bg-[#2D3624] text-xs text-white dark:bg-[#A68966] dark:text-zinc-900">6</span>
|
||||
<span>{{ __('report.trends_chart') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
body {
|
||||
font-family: 'DejaVu Sans', sans-serif;
|
||||
font-size: 10px;
|
||||
color: #1A1A1A;
|
||||
color: #2D322A;
|
||||
direction: {{ $locale === 'ar' ? 'rtl' : 'ltr' }};
|
||||
}
|
||||
|
||||
|
|
@ -22,7 +22,7 @@
|
|||
left: 0;
|
||||
right: 0;
|
||||
height: 70px;
|
||||
border-bottom: 3px solid #A5C87A;
|
||||
border-bottom: 3px solid #C4A882;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
|
|
@ -47,7 +47,7 @@
|
|||
.brand-name {
|
||||
font-size: 22px;
|
||||
font-weight: bold;
|
||||
color: #8AB357;
|
||||
color: #2D3624;
|
||||
}
|
||||
|
||||
.brand-subtitle {
|
||||
|
|
@ -59,7 +59,7 @@
|
|||
.report-title {
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
color: #8AB357;
|
||||
color: #2D3624;
|
||||
}
|
||||
|
||||
footer {
|
||||
|
|
@ -68,7 +68,7 @@
|
|||
left: 0;
|
||||
right: 0;
|
||||
height: 50px;
|
||||
border-top: 2px solid #A5C87A;
|
||||
border-top: 2px solid #C4A882;
|
||||
padding-top: 10px;
|
||||
font-size: 9px;
|
||||
color: #666;
|
||||
|
|
@ -97,8 +97,8 @@
|
|||
}
|
||||
|
||||
.filters-section {
|
||||
background-color: #E8E4DC;
|
||||
border: 1px solid #A5C87A;
|
||||
background-color: #F4F1EA;
|
||||
border: 1px solid #C4A882;
|
||||
border-radius: 4px;
|
||||
padding: 10px 15px;
|
||||
margin-bottom: 20px;
|
||||
|
|
@ -106,7 +106,7 @@
|
|||
|
||||
.filters-title {
|
||||
font-weight: bold;
|
||||
color: #8AB357;
|
||||
color: #A68966;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
|
|
@ -118,11 +118,11 @@
|
|||
|
||||
.summary {
|
||||
margin-bottom: 15px;
|
||||
color: #8AB357;
|
||||
color: #2D3624;
|
||||
}
|
||||
|
||||
.summary strong {
|
||||
color: #8AB357;
|
||||
color: #A68966;
|
||||
}
|
||||
|
||||
table {
|
||||
|
|
@ -132,8 +132,8 @@
|
|||
}
|
||||
|
||||
th {
|
||||
background-color: #8AB357;
|
||||
color: #E8E4DC;
|
||||
background-color: #2D3624;
|
||||
color: #FFFFFF;
|
||||
padding: 10px 8px;
|
||||
text-align: {{ $locale === 'ar' ? 'right' : 'left' }};
|
||||
font-weight: bold;
|
||||
|
|
@ -143,17 +143,17 @@
|
|||
|
||||
td {
|
||||
padding: 8px;
|
||||
border-bottom: 1px solid #A5C87A;
|
||||
border-bottom: 1px solid #C4A882;
|
||||
text-align: {{ $locale === 'ar' ? 'right' : 'left' }};
|
||||
font-size: 9px;
|
||||
}
|
||||
|
||||
tr:nth-child(even) {
|
||||
background-color: #E8E4DC;
|
||||
background-color: #F4F1EA;
|
||||
}
|
||||
|
||||
tr:hover {
|
||||
background-color: #E8E4DC;
|
||||
background-color: #F4F1EA;
|
||||
}
|
||||
|
||||
.status-pending {
|
||||
|
|
@ -187,7 +187,7 @@
|
|||
}
|
||||
|
||||
.consultation-type {
|
||||
background-color: #E8E4DC;
|
||||
background-color: #F4F1EA;
|
||||
padding: 2px 6px;
|
||||
border-radius: 3px;
|
||||
font-size: 8px;
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
body {
|
||||
font-family: 'DejaVu Sans', sans-serif;
|
||||
font-size: 11px;
|
||||
color: #1A1A1A;
|
||||
color: #2D322A;
|
||||
direction: {{ $locale === 'ar' ? 'rtl' : 'ltr' }};
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
|
@ -23,7 +23,7 @@
|
|||
left: 0;
|
||||
right: 0;
|
||||
height: 70px;
|
||||
border-bottom: 3px solid #A5C87A;
|
||||
border-bottom: 3px solid #C4A882;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
|
|
@ -48,7 +48,7 @@
|
|||
.brand-name {
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
color: #8AB357;
|
||||
color: #2D3624;
|
||||
}
|
||||
|
||||
.brand-subtitle {
|
||||
|
|
@ -68,7 +68,7 @@
|
|||
left: 0;
|
||||
right: 0;
|
||||
height: 50px;
|
||||
border-top: 2px solid #A5C87A;
|
||||
border-top: 2px solid #C4A882;
|
||||
padding-top: 10px;
|
||||
font-size: 9px;
|
||||
color: #666;
|
||||
|
|
@ -105,7 +105,7 @@
|
|||
.cover-brand {
|
||||
font-size: 48px;
|
||||
font-weight: bold;
|
||||
color: #8AB357;
|
||||
color: #2D3624;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
|
|
@ -118,13 +118,13 @@
|
|||
.cover-title {
|
||||
font-size: 28px;
|
||||
font-weight: bold;
|
||||
color: #8AB357;
|
||||
color: #2D3624;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.cover-period {
|
||||
font-size: 22px;
|
||||
color: #8AB357;
|
||||
color: #A68966;
|
||||
margin-bottom: 60px;
|
||||
}
|
||||
|
||||
|
|
@ -141,8 +141,8 @@
|
|||
.section-title {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
color: #8AB357;
|
||||
border-bottom: 2px solid #A5C87A;
|
||||
color: #2D3624;
|
||||
border-bottom: 2px solid #C4A882;
|
||||
padding-bottom: 8px;
|
||||
margin-bottom: 20px;
|
||||
margin-top: 30px;
|
||||
|
|
@ -165,7 +165,7 @@
|
|||
display: table-cell;
|
||||
width: 30px;
|
||||
font-weight: bold;
|
||||
color: #8AB357;
|
||||
color: #A68966;
|
||||
}
|
||||
|
||||
.toc-title {
|
||||
|
|
@ -176,7 +176,7 @@
|
|||
display: table-cell;
|
||||
width: 40px;
|
||||
text-align: {{ $locale === 'ar' ? 'left' : 'right' }};
|
||||
color: #8AB357;
|
||||
color: #A68966;
|
||||
}
|
||||
|
||||
/* Stats Grid */
|
||||
|
|
@ -198,8 +198,8 @@
|
|||
}
|
||||
|
||||
.stat-box {
|
||||
background-color: #E8E4DC;
|
||||
border: 1px solid #A5C87A;
|
||||
background-color: #F4F1EA;
|
||||
border: 1px solid #C4A882;
|
||||
border-radius: 4px;
|
||||
padding: 15px;
|
||||
text-align: {{ $locale === 'ar' ? 'right' : 'left' }};
|
||||
|
|
@ -215,11 +215,11 @@
|
|||
.stat-value {
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
color: #8AB357;
|
||||
color: #2D3624;
|
||||
}
|
||||
|
||||
.stat-value-gold {
|
||||
color: #8AB357;
|
||||
color: #A68966;
|
||||
}
|
||||
|
||||
/* Data Table */
|
||||
|
|
@ -230,8 +230,8 @@
|
|||
}
|
||||
|
||||
.data-table th {
|
||||
background-color: #8AB357;
|
||||
color: #E8E4DC;
|
||||
background-color: #2D3624;
|
||||
color: #FFFFFF;
|
||||
padding: 10px 12px;
|
||||
text-align: {{ $locale === 'ar' ? 'right' : 'left' }};
|
||||
font-weight: bold;
|
||||
|
|
@ -241,18 +241,18 @@
|
|||
|
||||
.data-table td {
|
||||
padding: 10px 12px;
|
||||
border-bottom: 1px solid #A5C87A;
|
||||
border-bottom: 1px solid #C4A882;
|
||||
text-align: {{ $locale === 'ar' ? 'right' : 'left' }};
|
||||
}
|
||||
|
||||
.data-table tr:nth-child(even) {
|
||||
background-color: #E8E4DC;
|
||||
background-color: #F4F1EA;
|
||||
}
|
||||
|
||||
/* Highlights */
|
||||
.highlight-box {
|
||||
background-color: #E8E4DC;
|
||||
border: 1px solid #A5C87A;
|
||||
background-color: #F4F1EA;
|
||||
border: 1px solid #C4A882;
|
||||
border-radius: 4px;
|
||||
padding: 15px;
|
||||
margin-bottom: 20px;
|
||||
|
|
@ -260,7 +260,7 @@
|
|||
|
||||
.highlight-item {
|
||||
padding: 5px 0;
|
||||
border-bottom: 1px solid rgba(165, 200, 122, 0.5);
|
||||
border-bottom: 1px solid rgba(196, 168, 130, 0.5);
|
||||
}
|
||||
|
||||
.highlight-item:last-child {
|
||||
|
|
@ -268,7 +268,7 @@
|
|||
}
|
||||
|
||||
.highlight-bullet {
|
||||
color: #8AB357;
|
||||
color: #A68966;
|
||||
font-weight: bold;
|
||||
margin-{{ $locale === 'ar' ? 'left' : 'right' }}: 8px;
|
||||
}
|
||||
|
|
@ -294,14 +294,14 @@
|
|||
margin: 20px 0;
|
||||
padding: 15px;
|
||||
background-color: #fff;
|
||||
border: 1px solid #A5C87A;
|
||||
border: 1px solid #C4A882;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.chart-title {
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
color: #8AB357;
|
||||
color: #2D3624;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
|
|
@ -350,7 +350,7 @@
|
|||
text-align: center;
|
||||
padding: 30px;
|
||||
color: #666;
|
||||
background-color: #E8E4DC;
|
||||
background-color: #F4F1EA;
|
||||
border-radius: 4px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
body {
|
||||
font-family: 'DejaVu Sans', sans-serif;
|
||||
font-size: 10px;
|
||||
color: #1A1A1A;
|
||||
color: #2D322A;
|
||||
direction: {{ $locale === 'ar' ? 'rtl' : 'ltr' }};
|
||||
}
|
||||
|
||||
|
|
@ -22,7 +22,7 @@
|
|||
left: 0;
|
||||
right: 0;
|
||||
height: 70px;
|
||||
border-bottom: 3px solid #A5C87A;
|
||||
border-bottom: 3px solid #C4A882;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
|
|
@ -47,7 +47,7 @@
|
|||
.brand-name {
|
||||
font-size: 22px;
|
||||
font-weight: bold;
|
||||
color: #8AB357;
|
||||
color: #2D3624;
|
||||
}
|
||||
|
||||
.brand-subtitle {
|
||||
|
|
@ -59,7 +59,7 @@
|
|||
.report-title {
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
color: #8AB357;
|
||||
color: #2D3624;
|
||||
}
|
||||
|
||||
footer {
|
||||
|
|
@ -68,7 +68,7 @@
|
|||
left: 0;
|
||||
right: 0;
|
||||
height: 50px;
|
||||
border-top: 2px solid #A5C87A;
|
||||
border-top: 2px solid #C4A882;
|
||||
padding-top: 10px;
|
||||
font-size: 9px;
|
||||
color: #666;
|
||||
|
|
@ -97,8 +97,8 @@
|
|||
}
|
||||
|
||||
.filters-section {
|
||||
background-color: #E8E4DC;
|
||||
border: 1px solid #A5C87A;
|
||||
background-color: #F4F1EA;
|
||||
border: 1px solid #C4A882;
|
||||
border-radius: 4px;
|
||||
padding: 10px 15px;
|
||||
margin-bottom: 20px;
|
||||
|
|
@ -106,7 +106,7 @@
|
|||
|
||||
.filters-title {
|
||||
font-weight: bold;
|
||||
color: #8AB357;
|
||||
color: #A68966;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
|
|
@ -118,11 +118,11 @@
|
|||
|
||||
.summary {
|
||||
margin-bottom: 15px;
|
||||
color: #8AB357;
|
||||
color: #2D3624;
|
||||
}
|
||||
|
||||
.summary strong {
|
||||
color: #8AB357;
|
||||
color: #A68966;
|
||||
}
|
||||
|
||||
table {
|
||||
|
|
@ -132,8 +132,8 @@
|
|||
}
|
||||
|
||||
th {
|
||||
background-color: #8AB357;
|
||||
color: #E8E4DC;
|
||||
background-color: #2D3624;
|
||||
color: #FFFFFF;
|
||||
padding: 10px 8px;
|
||||
text-align: {{ $locale === 'ar' ? 'right' : 'left' }};
|
||||
font-weight: bold;
|
||||
|
|
@ -143,13 +143,13 @@
|
|||
|
||||
td {
|
||||
padding: 8px;
|
||||
border-bottom: 1px solid #A5C87A;
|
||||
border-bottom: 1px solid #C4A882;
|
||||
text-align: {{ $locale === 'ar' ? 'right' : 'left' }};
|
||||
font-size: 9px;
|
||||
}
|
||||
|
||||
tr:nth-child(even) {
|
||||
background-color: #E8E4DC;
|
||||
background-color: #F4F1EA;
|
||||
}
|
||||
|
||||
.status-active {
|
||||
|
|
@ -163,16 +163,16 @@
|
|||
}
|
||||
|
||||
.updates-section {
|
||||
background-color: #E8E4DC;
|
||||
background-color: #F4F1EA;
|
||||
padding: 10px;
|
||||
margin: 5px 0;
|
||||
border-{{ $locale === 'ar' ? 'right' : 'left' }}: 3px solid #8AB357;
|
||||
border-{{ $locale === 'ar' ? 'right' : 'left' }}: 3px solid #A68966;
|
||||
}
|
||||
|
||||
.update-entry {
|
||||
margin-bottom: 8px;
|
||||
padding-bottom: 8px;
|
||||
border-bottom: 1px dashed #A5C87A;
|
||||
border-bottom: 1px dashed #C4A882;
|
||||
}
|
||||
|
||||
.update-entry:last-child {
|
||||
|
|
@ -189,7 +189,7 @@
|
|||
|
||||
.update-text {
|
||||
font-size: 9px;
|
||||
color: #1A1A1A;
|
||||
color: #2D322A;
|
||||
}
|
||||
|
||||
.no-data {
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
body {
|
||||
font-family: 'DejaVu Sans', sans-serif;
|
||||
font-size: 10px;
|
||||
color: #1A1A1A;
|
||||
color: #2D322A;
|
||||
direction: {{ $locale === 'ar' ? 'rtl' : 'ltr' }};
|
||||
}
|
||||
|
||||
|
|
@ -22,7 +22,7 @@
|
|||
left: 0;
|
||||
right: 0;
|
||||
height: 70px;
|
||||
border-bottom: 3px solid #A5C87A;
|
||||
border-bottom: 3px solid #C4A882;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
|
|
@ -47,7 +47,7 @@
|
|||
.brand-name {
|
||||
font-size: 22px;
|
||||
font-weight: bold;
|
||||
color: #8AB357;
|
||||
color: #2D3624;
|
||||
}
|
||||
|
||||
.brand-subtitle {
|
||||
|
|
@ -59,7 +59,7 @@
|
|||
.report-title {
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
color: #8AB357;
|
||||
color: #2D3624;
|
||||
}
|
||||
|
||||
footer {
|
||||
|
|
@ -68,7 +68,7 @@
|
|||
left: 0;
|
||||
right: 0;
|
||||
height: 50px;
|
||||
border-top: 2px solid #A5C87A;
|
||||
border-top: 2px solid #C4A882;
|
||||
padding-top: 10px;
|
||||
font-size: 9px;
|
||||
color: #666;
|
||||
|
|
@ -97,8 +97,8 @@
|
|||
}
|
||||
|
||||
.filters-section {
|
||||
background-color: #E8E4DC;
|
||||
border: 1px solid #A5C87A;
|
||||
background-color: #F4F1EA;
|
||||
border: 1px solid #C4A882;
|
||||
border-radius: 4px;
|
||||
padding: 10px 15px;
|
||||
margin-bottom: 20px;
|
||||
|
|
@ -106,7 +106,7 @@
|
|||
|
||||
.filters-title {
|
||||
font-weight: bold;
|
||||
color: #8AB357;
|
||||
color: #A68966;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
|
|
@ -118,11 +118,11 @@
|
|||
|
||||
.summary {
|
||||
margin-bottom: 15px;
|
||||
color: #8AB357;
|
||||
color: #2D3624;
|
||||
}
|
||||
|
||||
.summary strong {
|
||||
color: #8AB357;
|
||||
color: #A68966;
|
||||
}
|
||||
|
||||
table {
|
||||
|
|
@ -132,8 +132,8 @@
|
|||
}
|
||||
|
||||
th {
|
||||
background-color: #8AB357;
|
||||
color: #E8E4DC;
|
||||
background-color: #2D3624;
|
||||
color: #FFFFFF;
|
||||
padding: 10px 8px;
|
||||
text-align: {{ $locale === 'ar' ? 'right' : 'left' }};
|
||||
font-weight: bold;
|
||||
|
|
@ -143,17 +143,17 @@
|
|||
|
||||
td {
|
||||
padding: 8px;
|
||||
border-bottom: 1px solid #A5C87A;
|
||||
border-bottom: 1px solid #C4A882;
|
||||
text-align: {{ $locale === 'ar' ? 'right' : 'left' }};
|
||||
font-size: 9px;
|
||||
}
|
||||
|
||||
tr:nth-child(even) {
|
||||
background-color: #E8E4DC;
|
||||
background-color: #F4F1EA;
|
||||
}
|
||||
|
||||
tr:hover {
|
||||
background-color: #E8E4DC;
|
||||
background-color: #F4F1EA;
|
||||
}
|
||||
|
||||
.status-active {
|
||||
|
|
@ -167,7 +167,7 @@
|
|||
}
|
||||
|
||||
.user-type {
|
||||
background-color: #E8E4DC;
|
||||
background-color: #F4F1EA;
|
||||
padding: 2px 6px;
|
||||
border-radius: 3px;
|
||||
font-size: 8px;
|
||||
|
|
|
|||
|
|
@ -4,87 +4,100 @@
|
|||
// PDF Template Brand Color Tests
|
||||
// ===========================================
|
||||
// Verifies that all PDF templates use the new brand colors:
|
||||
// - Olive Green: #8AB357 (primary/header background)
|
||||
// - Light Olive: #A5C87A (accent/borders)
|
||||
// - Light Background: #E8E4DC
|
||||
// - Deep Black: #1A1A1A (text)
|
||||
// - Dark Forest Green: #2D3624 (primary/header background)
|
||||
// - Warm Gold: #A68966 (accent/highlight)
|
||||
// - Gold Light: #C4A882 (borders/accents)
|
||||
// - Warm Cream: #F4F1EA (backgrounds)
|
||||
// - Forest Green: #2D322A (text)
|
||||
|
||||
test('users-export PDF template uses new brand colors', function () {
|
||||
$template = file_get_contents(resource_path('views/pdf/users-export.blade.php'));
|
||||
|
||||
// Should contain new olive green colors
|
||||
expect($template)->toContain('#8AB357'); // Olive Green
|
||||
expect($template)->toContain('#A5C87A'); // Light Olive
|
||||
expect($template)->toContain('#E8E4DC'); // Light Background
|
||||
expect($template)->toContain('#1A1A1A'); // Deep Black text
|
||||
// Should contain new Dark Forest Green and Warm Gold colors
|
||||
expect($template)->toContain('#2D3624'); // Dark Forest Green
|
||||
expect($template)->toContain('#A68966'); // Warm Gold
|
||||
expect($template)->toContain('#C4A882'); // Gold Light
|
||||
expect($template)->toContain('#F4F1EA'); // Warm Cream
|
||||
expect($template)->toContain('#2D322A'); // Forest Green text
|
||||
|
||||
// Should NOT contain old colors
|
||||
expect($template)->not->toContain('#4A4A42'); // Old Charcoal
|
||||
expect($template)->not->toContain('#C9C4BA'); // Old Warm Gray
|
||||
expect($template)->not->toContain('#8AB357'); // Old Olive Green
|
||||
expect($template)->not->toContain('#A5C87A'); // Old Light Olive
|
||||
expect($template)->not->toContain('#E8E4DC'); // Old Light Background
|
||||
expect($template)->not->toContain('#1A1A1A'); // Old Deep Black
|
||||
});
|
||||
|
||||
test('consultations-export PDF template uses new brand colors', function () {
|
||||
$template = file_get_contents(resource_path('views/pdf/consultations-export.blade.php'));
|
||||
|
||||
// Should contain new olive green colors
|
||||
expect($template)->toContain('#8AB357'); // Olive Green
|
||||
expect($template)->toContain('#A5C87A'); // Light Olive
|
||||
expect($template)->toContain('#E8E4DC'); // Light Background
|
||||
expect($template)->toContain('#1A1A1A'); // Deep Black text
|
||||
// Should contain new Dark Forest Green and Warm Gold colors
|
||||
expect($template)->toContain('#2D3624'); // Dark Forest Green
|
||||
expect($template)->toContain('#A68966'); // Warm Gold
|
||||
expect($template)->toContain('#C4A882'); // Gold Light
|
||||
expect($template)->toContain('#F4F1EA'); // Warm Cream
|
||||
expect($template)->toContain('#2D322A'); // Forest Green text
|
||||
|
||||
// Should NOT contain old colors
|
||||
expect($template)->not->toContain('#4A4A42'); // Old Charcoal
|
||||
expect($template)->not->toContain('#C9C4BA'); // Old Warm Gray
|
||||
expect($template)->not->toContain('#8AB357'); // Old Olive Green
|
||||
expect($template)->not->toContain('#A5C87A'); // Old Light Olive
|
||||
expect($template)->not->toContain('#E8E4DC'); // Old Light Background
|
||||
expect($template)->not->toContain('#1A1A1A'); // Old Deep Black
|
||||
});
|
||||
|
||||
test('timelines-export PDF template uses new brand colors', function () {
|
||||
$template = file_get_contents(resource_path('views/pdf/timelines-export.blade.php'));
|
||||
|
||||
// Should contain new olive green colors
|
||||
expect($template)->toContain('#8AB357'); // Olive Green
|
||||
expect($template)->toContain('#A5C87A'); // Light Olive
|
||||
expect($template)->toContain('#E8E4DC'); // Light Background
|
||||
expect($template)->toContain('#1A1A1A'); // Deep Black text
|
||||
// Should contain new Dark Forest Green and Warm Gold colors
|
||||
expect($template)->toContain('#2D3624'); // Dark Forest Green
|
||||
expect($template)->toContain('#A68966'); // Warm Gold
|
||||
expect($template)->toContain('#C4A882'); // Gold Light
|
||||
expect($template)->toContain('#F4F1EA'); // Warm Cream
|
||||
expect($template)->toContain('#2D322A'); // Forest Green text
|
||||
|
||||
// Should NOT contain old colors
|
||||
expect($template)->not->toContain('#4A4A42'); // Old Charcoal
|
||||
expect($template)->not->toContain('#C9C4BA'); // Old Warm Gray
|
||||
expect($template)->not->toContain('#8AB357'); // Old Olive Green
|
||||
expect($template)->not->toContain('#A5C87A'); // Old Light Olive
|
||||
expect($template)->not->toContain('#E8E4DC'); // Old Light Background
|
||||
expect($template)->not->toContain('#1A1A1A'); // Old Deep Black
|
||||
});
|
||||
|
||||
test('monthly-report PDF template uses new brand colors', function () {
|
||||
$template = file_get_contents(resource_path('views/pdf/monthly-report.blade.php'));
|
||||
|
||||
// Should contain new olive green colors
|
||||
expect($template)->toContain('#8AB357'); // Olive Green
|
||||
expect($template)->toContain('#A5C87A'); // Light Olive
|
||||
expect($template)->toContain('#E8E4DC'); // Light Background
|
||||
expect($template)->toContain('#1A1A1A'); // Deep Black text
|
||||
// Should contain new Dark Forest Green and Warm Gold colors
|
||||
expect($template)->toContain('#2D3624'); // Dark Forest Green
|
||||
expect($template)->toContain('#A68966'); // Warm Gold
|
||||
expect($template)->toContain('#C4A882'); // Gold Light
|
||||
expect($template)->toContain('#F4F1EA'); // Warm Cream
|
||||
expect($template)->toContain('#2D322A'); // Forest Green text
|
||||
|
||||
// Should NOT contain old colors
|
||||
expect($template)->not->toContain('#4A4A42'); // Old Charcoal
|
||||
expect($template)->not->toContain('#C9C4BA'); // Old Warm Gray
|
||||
expect($template)->not->toContain('#8AB357'); // Old Olive Green
|
||||
expect($template)->not->toContain('#A5C87A'); // Old Light Olive
|
||||
expect($template)->not->toContain('#E8E4DC'); // Old Light Background
|
||||
expect($template)->not->toContain('#1A1A1A'); // Old Deep Black
|
||||
});
|
||||
|
||||
test('MonthlyReportService uses new brand colors for charts', function () {
|
||||
$service = file_get_contents(app_path('Services/MonthlyReportService.php'));
|
||||
|
||||
// Should contain new olive green colors for charts
|
||||
expect($service)->toContain('#8AB357'); // Olive Green
|
||||
expect($service)->toContain('#A5C87A'); // Light Olive
|
||||
// Should contain new Warm Gold colors for charts
|
||||
expect($service)->toContain('#A68966'); // Warm Gold
|
||||
expect($service)->toContain('#C4A882'); // Gold Light
|
||||
|
||||
// Should NOT contain old colors
|
||||
expect($service)->not->toContain('#4A4A42'); // Old Charcoal
|
||||
expect($service)->not->toContain('#C9C4BA'); // Old Warm Gray
|
||||
expect($service)->not->toContain('#8AB357'); // Old Olive Green
|
||||
expect($service)->not->toContain('#A5C87A'); // Old Light Olive
|
||||
});
|
||||
|
||||
test('monthly-report Livewire component uses new brand colors', function () {
|
||||
$template = file_get_contents(resource_path('views/livewire/admin/reports/monthly-report.blade.php'));
|
||||
|
||||
// Should contain new olive green colors
|
||||
expect($template)->toContain('#8AB357'); // Olive Green
|
||||
expect($template)->toContain('#A5C87A'); // Light Olive
|
||||
// Should contain new Dark Forest Green and Warm Gold colors
|
||||
expect($template)->toContain('#2D3624'); // Dark Forest Green
|
||||
expect($template)->toContain('#A68966'); // Warm Gold
|
||||
|
||||
// Should NOT contain old colors
|
||||
expect($template)->not->toContain('#4A4A42'); // Old Charcoal
|
||||
expect($template)->not->toContain('#C9C4BA'); // Old Warm Gray
|
||||
expect($template)->not->toContain('#8AB357'); // Old Olive Green
|
||||
expect($template)->not->toContain('#A5C87A'); // Old Light Olive
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue