complete story 16.3
This commit is contained in:
parent
6d10abac1a
commit
9e13a77781
|
|
@ -207,16 +207,16 @@
|
|||
|
||||
## Dev Checklist
|
||||
|
||||
- [ ] Add values section to about.blade.php
|
||||
- [ ] Style section header with gold underline
|
||||
- [ ] Add intro text
|
||||
- [ ] Create 6 value cards with icons
|
||||
- [ ] Implement responsive grid (6 → 3 → 2 columns)
|
||||
- [ ] Add hover effects to cards
|
||||
- [ ] Add all English translations
|
||||
- [ ] Add all Arabic translations
|
||||
- [ ] Test RTL layout
|
||||
- [ ] Test responsive breakpoints
|
||||
- [x] Add values section to about.blade.php
|
||||
- [x] Style section header with gold underline
|
||||
- [x] Add intro text
|
||||
- [x] Create 6 value cards with icons
|
||||
- [x] Implement responsive grid (6 → 3 → 2 columns)
|
||||
- [x] Add hover effects to cards
|
||||
- [x] Add all English translations
|
||||
- [x] Add all Arabic translations
|
||||
- [x] Test RTL layout
|
||||
- [x] Test responsive breakpoints
|
||||
|
||||
## Estimation
|
||||
|
||||
|
|
@ -227,3 +227,31 @@
|
|||
|
||||
- Story 16.2 completed (mission section exists above)
|
||||
- Flux icons available
|
||||
|
||||
---
|
||||
|
||||
## Dev Agent Record
|
||||
|
||||
### Status
|
||||
Ready for Review
|
||||
|
||||
### Agent Model Used
|
||||
claude-opus-4-5-20251101
|
||||
|
||||
### Completion Notes
|
||||
- Added values section with 6 value cards following the exact HTML structure from technical notes
|
||||
- Implemented responsive grid: 2 cols mobile, 3 cols tablet, 6 cols desktop
|
||||
- Added all English and Arabic translations for values section
|
||||
- Used Flux icons: shield-check, scale, academic-cap, heart, briefcase, light-bulb
|
||||
- Added hover shadow effect on cards
|
||||
- All 19 new tests pass (52 total AboutPageTest tests pass)
|
||||
- RTL support works automatically with centered text and grid layout
|
||||
|
||||
### File List
|
||||
- `resources/views/livewire/pages/about.blade.php` (modified)
|
||||
- `lang/en/about.php` (modified)
|
||||
- `lang/ar/about.php` (modified)
|
||||
- `tests/Feature/Public/AboutPageTest.php` (modified)
|
||||
|
||||
### Change Log
|
||||
- 2026-01-11: Implemented Story 16.3 values section with all acceptance criteria met
|
||||
|
|
|
|||
|
|
@ -17,4 +17,14 @@ return [
|
|||
'mission_society_text' => 'تطمح ليبرا إلى إنشاء "منحة ليبرا للقانون والفنون الفلسطينية"، وإعادة ربط المجتمع بتاريخه وإرثه القانوني، والعمل كشريك موثوق للقضاء.',
|
||||
'mission_diaspora_title' => 'للفلسطينيين في الشتات',
|
||||
'mission_diaspora_text' => 'ليبرا منصة للاستماع إلى الفلسطينيين في الشتات وتعزيز ارتباطهم بالأرض الفلسطينية من خلال مساعدتهم في البحث والتحقيق في عائلاتهم وتاريخهم، والبحث في أراضيهم، وتوفير منصة للاستماع إلى آرائهم حول القضية الفلسطينية والمجتمعات الفلسطينية في الخارج.',
|
||||
|
||||
// Values Section
|
||||
'values_title' => 'قيمنا',
|
||||
'values_intro' => 'هذه القيم تبدأ من الميدان وتعود إلى الناس.',
|
||||
'value_integrity' => 'النزاهة',
|
||||
'value_justice' => 'العدالة',
|
||||
'value_knowledge' => 'المعرفة',
|
||||
'value_women' => 'تمكين المرأة',
|
||||
'value_professionalism' => 'الاحترافية',
|
||||
'value_innovation' => 'الابتكار الاجتماعي',
|
||||
];
|
||||
|
|
|
|||
|
|
@ -17,4 +17,14 @@ return [
|
|||
'mission_society_text' => 'Libra aspires to establish the "Libra Scholarship for Law and Palestinian Arts", reconnect society with its history and legal heritage, and serve as a trusted partner to the judiciary.',
|
||||
'mission_diaspora_title' => 'For Palestinians in the Diaspora',
|
||||
'mission_diaspora_text' => 'Libra is a platform for listening to Palestinians in the diaspora and strengthening their connection to the Palestinian land by helping them research and investigate their families and history, research and investigate their lands, and providing them with a platform to hear their views on the Palestinian issue and Palestinian communities abroad.',
|
||||
|
||||
// Values Section
|
||||
'values_title' => 'Our Values',
|
||||
'values_intro' => 'These values start in the field and return to the people.',
|
||||
'value_integrity' => 'Integrity',
|
||||
'value_justice' => 'Justice',
|
||||
'value_knowledge' => 'Knowledge',
|
||||
'value_women' => 'Women\'s Empowerment',
|
||||
'value_professionalism' => 'Professionalism',
|
||||
'value_innovation' => 'Social Innovation',
|
||||
];
|
||||
|
|
|
|||
|
|
@ -95,7 +95,80 @@ new #[Layout('components.layouts.public')] class extends Component
|
|||
</div>
|
||||
</section>
|
||||
|
||||
{{-- Values Section - Story 16.3 --}}
|
||||
{{-- Values Section --}}
|
||||
<section class="bg-white py-8 sm:py-12 lg:py-[60px]">
|
||||
<div class="container mx-auto px-4">
|
||||
<h2 class="text-2xl lg:text-3xl font-bold text-text text-center mb-2">
|
||||
{{ __('about.values_title') }}
|
||||
</h2>
|
||||
<div class="w-20 h-1 bg-accent mx-auto mb-4"></div>
|
||||
<p class="text-center text-text/70 max-w-xl mx-auto mb-12">
|
||||
{{ __('about.values_intro') }}
|
||||
</p>
|
||||
|
||||
<div class="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4 lg:gap-6">
|
||||
{{-- Integrity --}}
|
||||
<div class="bg-background rounded-xl p-6 text-center hover:shadow-md transition-shadow">
|
||||
<div class="text-accent mb-3">
|
||||
<flux:icon name="shield-check" class="w-10 h-10 mx-auto" />
|
||||
</div>
|
||||
<h4 class="font-semibold text-text">
|
||||
{{ __('about.value_integrity') }}
|
||||
</h4>
|
||||
</div>
|
||||
|
||||
{{-- Justice --}}
|
||||
<div class="bg-background rounded-xl p-6 text-center hover:shadow-md transition-shadow">
|
||||
<div class="text-accent mb-3">
|
||||
<flux:icon name="scale" class="w-10 h-10 mx-auto" />
|
||||
</div>
|
||||
<h4 class="font-semibold text-text">
|
||||
{{ __('about.value_justice') }}
|
||||
</h4>
|
||||
</div>
|
||||
|
||||
{{-- Knowledge --}}
|
||||
<div class="bg-background rounded-xl p-6 text-center hover:shadow-md transition-shadow">
|
||||
<div class="text-accent mb-3">
|
||||
<flux:icon name="academic-cap" class="w-10 h-10 mx-auto" />
|
||||
</div>
|
||||
<h4 class="font-semibold text-text">
|
||||
{{ __('about.value_knowledge') }}
|
||||
</h4>
|
||||
</div>
|
||||
|
||||
{{-- Women's Empowerment --}}
|
||||
<div class="bg-background rounded-xl p-6 text-center hover:shadow-md transition-shadow">
|
||||
<div class="text-accent mb-3">
|
||||
<flux:icon name="heart" class="w-10 h-10 mx-auto" />
|
||||
</div>
|
||||
<h4 class="font-semibold text-text">
|
||||
{{ __('about.value_women') }}
|
||||
</h4>
|
||||
</div>
|
||||
|
||||
{{-- Professionalism --}}
|
||||
<div class="bg-background rounded-xl p-6 text-center hover:shadow-md transition-shadow">
|
||||
<div class="text-accent mb-3">
|
||||
<flux:icon name="briefcase" class="w-10 h-10 mx-auto" />
|
||||
</div>
|
||||
<h4 class="font-semibold text-text">
|
||||
{{ __('about.value_professionalism') }}
|
||||
</h4>
|
||||
</div>
|
||||
|
||||
{{-- Social Innovation --}}
|
||||
<div class="bg-background rounded-xl p-6 text-center hover:shadow-md transition-shadow">
|
||||
<div class="text-accent mb-3">
|
||||
<flux:icon name="light-bulb" class="w-10 h-10 mx-auto" />
|
||||
</div>
|
||||
<h4 class="font-semibold text-text">
|
||||
{{ __('about.value_innovation') }}
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{{-- Goals Section - Story 16.4 --}}
|
||||
|
||||
|
|
|
|||
|
|
@ -246,3 +246,142 @@ test('about page mission cards have icons', function () {
|
|||
->assertOk()
|
||||
->assertSee('<svg', false); // Flux icons render as inline SVGs
|
||||
});
|
||||
|
||||
// Story 16.3: Values Section Tests
|
||||
|
||||
// AC1: Values Section Container
|
||||
test('about page has values section with white background', function () {
|
||||
$this->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('bg-white py-8 sm:py-12 lg:py-[60px]', false);
|
||||
});
|
||||
|
||||
// AC2: Values Section Header
|
||||
test('about page displays values title in English', function () {
|
||||
$this->withSession(['locale' => 'en'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('Our Values');
|
||||
});
|
||||
|
||||
test('about page displays values title in Arabic', function () {
|
||||
$this->withSession(['locale' => 'ar'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('قيمنا');
|
||||
});
|
||||
|
||||
// AC3: Values Introduction
|
||||
test('about page displays values intro in English', function () {
|
||||
$this->withSession(['locale' => 'en'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('These values start in the field and return to the people.');
|
||||
});
|
||||
|
||||
test('about page displays values intro in Arabic', function () {
|
||||
$this->withSession(['locale' => 'ar'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('هذه القيم تبدأ من الميدان وتعود إلى الناس.');
|
||||
});
|
||||
|
||||
// AC4: Six Value Cards - English
|
||||
test('about page displays integrity value in English', function () {
|
||||
$this->withSession(['locale' => 'en'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('Integrity');
|
||||
});
|
||||
|
||||
test('about page displays justice value in English', function () {
|
||||
$this->withSession(['locale' => 'en'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('Justice');
|
||||
});
|
||||
|
||||
test('about page displays knowledge value in English', function () {
|
||||
$this->withSession(['locale' => 'en'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('Knowledge');
|
||||
});
|
||||
|
||||
test('about page displays women empowerment value in English', function () {
|
||||
$this->withSession(['locale' => 'en'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee("Women's Empowerment");
|
||||
});
|
||||
|
||||
test('about page displays professionalism value in English', function () {
|
||||
$this->withSession(['locale' => 'en'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('Professionalism');
|
||||
});
|
||||
|
||||
test('about page displays social innovation value in English', function () {
|
||||
$this->withSession(['locale' => 'en'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('Social Innovation');
|
||||
});
|
||||
|
||||
// AC4: Six Value Cards - Arabic
|
||||
test('about page displays integrity value in Arabic', function () {
|
||||
$this->withSession(['locale' => 'ar'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('النزاهة');
|
||||
});
|
||||
|
||||
test('about page displays justice value in Arabic', function () {
|
||||
$this->withSession(['locale' => 'ar'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('العدالة');
|
||||
});
|
||||
|
||||
test('about page displays knowledge value in Arabic', function () {
|
||||
$this->withSession(['locale' => 'ar'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('المعرفة');
|
||||
});
|
||||
|
||||
test('about page displays women empowerment value in Arabic', function () {
|
||||
$this->withSession(['locale' => 'ar'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('تمكين المرأة');
|
||||
});
|
||||
|
||||
test('about page displays professionalism value in Arabic', function () {
|
||||
$this->withSession(['locale' => 'ar'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('الاحترافية');
|
||||
});
|
||||
|
||||
test('about page displays social innovation value in Arabic', function () {
|
||||
$this->withSession(['locale' => 'ar'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('الابتكار الاجتماعي');
|
||||
});
|
||||
|
||||
// AC5: Value Card Styling
|
||||
test('about page value cards have correct styling', function () {
|
||||
$this->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('bg-background rounded-xl p-6 text-center hover:shadow-md transition-shadow', false);
|
||||
});
|
||||
|
||||
// AC6: Responsive Grid
|
||||
test('about page value cards use responsive grid', function () {
|
||||
$this->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('grid-cols-2 md:grid-cols-3 lg:grid-cols-6', false);
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue