complete story 16.2
This commit is contained in:
parent
877569e6e8
commit
6d10abac1a
|
|
@ -217,17 +217,17 @@
|
|||
|
||||
## Dev Checklist
|
||||
|
||||
- [ ] Add vision section to about.blade.php
|
||||
- [ ] Style vision header with gold underline
|
||||
- [ ] Add vision statement with decorative quotes
|
||||
- [ ] Add mission section with cream background
|
||||
- [ ] Style mission header with gold underline
|
||||
- [ ] Create 3 mission cards with icons
|
||||
- [ ] Implement responsive grid (3 cols → 2 cols → 1 col)
|
||||
- [ ] Add all English translations
|
||||
- [ ] Add all Arabic translations
|
||||
- [ ] Test RTL layout
|
||||
- [ ] Test responsive breakpoints
|
||||
- [x] Add vision section to about.blade.php
|
||||
- [x] Style vision header with gold underline
|
||||
- [x] Add vision statement with decorative quotes
|
||||
- [x] Add mission section with cream background
|
||||
- [x] Style mission header with gold underline
|
||||
- [x] Create 3 mission cards with icons
|
||||
- [x] Implement responsive grid (3 cols → 2 cols → 1 col)
|
||||
- [x] Add all English translations
|
||||
- [x] Add all Arabic translations
|
||||
- [x] Test RTL layout
|
||||
- [x] Test responsive breakpoints
|
||||
|
||||
## Estimation
|
||||
|
||||
|
|
@ -238,3 +238,37 @@
|
|||
|
||||
- Story 16.1 completed (page structure exists)
|
||||
- Flux icons available
|
||||
|
||||
---
|
||||
|
||||
## Dev Agent Record
|
||||
|
||||
### Status
|
||||
Ready for Review
|
||||
|
||||
### Agent Model Used
|
||||
claude-opus-4-5-20251101
|
||||
|
||||
### File List
|
||||
| File | Action |
|
||||
|------|--------|
|
||||
| `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
|
||||
- Added Vision section with white background, H2 header with gold underline, and decorative quote styling
|
||||
- Added Mission section with cream background, H2 header with gold underline
|
||||
- Implemented 3 mission cards (Institution, Society, Diaspora) with Flux icons
|
||||
- Added responsive grid: 3 cols desktop, 2 cols tablet, 1 col mobile
|
||||
- Added all English translations (vision_title, vision_text, mission_title, mission cards)
|
||||
- Added all Arabic translations
|
||||
- Added 17 new tests covering all acceptance criteria
|
||||
- All 33 About page tests pass
|
||||
|
||||
### Completion Notes
|
||||
- RTL support verified via existing layout tests (dir="rtl" applied correctly)
|
||||
- Responsive grid tested via CSS class assertions
|
||||
- Flux icons render as inline SVGs (test updated to check for SVG presence)
|
||||
- Pre-existing test failure in AuthBackgroundPatternTest (unrelated to this story)
|
||||
|
|
|
|||
|
|
@ -4,4 +4,17 @@ return [
|
|||
'title' => 'من نحن',
|
||||
'tagline' => 'ملتزمون بالعدالة – متجذرون بالكرامة – مدفوعون للدفاع',
|
||||
'identity' => 'مؤسسة قانونية منسوجة من نسيج المجتمع، تستخدم البحث كأداة قوة لخدمة العدالة.',
|
||||
|
||||
// Vision Section
|
||||
'vision_title' => 'رؤيتنا',
|
||||
'vision_text' => 'ليبرا منسوجة من نسيج المجتمع، تحقق في المشكلات، وتوثقها، وتكشف جذورها، وتقدم حلولاً لمعالجة الآلام الاجتماعية، حتى الصغيرة منها، من خلال التعاون وتطوير البحث الميداني المتجذر في التفاعل الحقيقي مع السوق.',
|
||||
|
||||
// Mission Section
|
||||
'mission_title' => 'مهمتنا',
|
||||
'mission_institution_title' => 'لمؤسستنا',
|
||||
'mission_institution_text' => 'تعمل ليبرا في قلب المجتمع ملتقطةً نبضه، محققةً في تحدياته، موثقةً إياها، ومحولةً لها إلى معرفة وحلول قانونية مبتكرة. نرافق الأفراد والمؤسسات بأمانة واحترافية، ساعين لتحقيق العدالة، وتمكين المرأة، وتعزيز بيئة أعمال صحية من خلال القانون والبحث والعمل الميداني.',
|
||||
'mission_society_title' => 'للمجتمع',
|
||||
'mission_society_text' => 'تطمح ليبرا إلى إنشاء "منحة ليبرا للقانون والفنون الفلسطينية"، وإعادة ربط المجتمع بتاريخه وإرثه القانوني، والعمل كشريك موثوق للقضاء.',
|
||||
'mission_diaspora_title' => 'للفلسطينيين في الشتات',
|
||||
'mission_diaspora_text' => 'ليبرا منصة للاستماع إلى الفلسطينيين في الشتات وتعزيز ارتباطهم بالأرض الفلسطينية من خلال مساعدتهم في البحث والتحقيق في عائلاتهم وتاريخهم، والبحث في أراضيهم، وتوفير منصة للاستماع إلى آرائهم حول القضية الفلسطينية والمجتمعات الفلسطينية في الخارج.',
|
||||
];
|
||||
|
|
|
|||
|
|
@ -4,4 +4,17 @@ return [
|
|||
'title' => 'About Us',
|
||||
'tagline' => 'Committed to Justice – Grounded in Dignity – Driven to Advocate',
|
||||
'identity' => 'A legal institution woven from the fabric of society, using research as a tool of power to serve justice.',
|
||||
|
||||
// Vision Section
|
||||
'vision_title' => 'Our Vision',
|
||||
'vision_text' => 'Libra is woven from the fabric of society, investigating problems, documenting them, uncovering their roots, and offering solutions to mend social pains, even the small ones, through collaboration and by developing field research rooted in real engagement with the market.',
|
||||
|
||||
// Mission Section
|
||||
'mission_title' => 'Our Mission',
|
||||
'mission_institution_title' => 'For Our Institution',
|
||||
'mission_institution_text' => 'Libra works at the heart of society capturing its pulse, investigating its challenges, documenting them, and transforming them into knowledge and innovative legal solutions. We accompany individuals and institutions with honesty and professionalism, striving to advance justice, empower women, and foster a healthy business environment through law, research, and fieldwork.',
|
||||
'mission_society_title' => 'For Society',
|
||||
'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.',
|
||||
];
|
||||
|
|
|
|||
|
|
@ -29,9 +29,71 @@ new #[Layout('components.layouts.public')] class extends Component
|
|||
</div>
|
||||
</section>
|
||||
|
||||
{{-- Vision Section - Story 16.2 --}}
|
||||
{{-- Vision 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.vision_title') }}
|
||||
</h2>
|
||||
<div class="w-20 h-1 bg-accent mx-auto mb-8"></div>
|
||||
<blockquote class="max-w-[900px] mx-auto text-center text-lg text-text/90">
|
||||
<span class="text-4xl text-accent leading-none align-top">"</span>
|
||||
<span class="italic">{{ __('about.vision_text') }}</span>
|
||||
<span class="text-4xl text-accent leading-none align-bottom">"</span>
|
||||
</blockquote>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{{-- Mission Section - Story 16.2 --}}
|
||||
{{-- Mission Section --}}
|
||||
<section class="bg-background 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.mission_title') }}
|
||||
</h2>
|
||||
<div class="w-20 h-1 bg-accent mx-auto mb-12"></div>
|
||||
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
|
||||
{{-- Card 1: For Institution --}}
|
||||
<div class="bg-white rounded-lg shadow-sm p-6">
|
||||
<div class="text-accent mb-4">
|
||||
<flux:icon name="building-office" class="w-12 h-12" />
|
||||
</div>
|
||||
<h3 class="text-xl font-bold text-text mb-3">
|
||||
{{ __('about.mission_institution_title') }}
|
||||
</h3>
|
||||
<p class="text-text/80">
|
||||
{{ __('about.mission_institution_text') }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{{-- Card 2: For Society --}}
|
||||
<div class="bg-white rounded-lg shadow-sm p-6">
|
||||
<div class="text-accent mb-4">
|
||||
<flux:icon name="user-group" class="w-12 h-12" />
|
||||
</div>
|
||||
<h3 class="text-xl font-bold text-text mb-3">
|
||||
{{ __('about.mission_society_title') }}
|
||||
</h3>
|
||||
<p class="text-text/80">
|
||||
{{ __('about.mission_society_text') }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{{-- Card 3: For Diaspora --}}
|
||||
<div class="bg-white rounded-lg shadow-sm p-6 md:col-span-2 lg:col-span-1">
|
||||
<div class="text-accent mb-4">
|
||||
<flux:icon name="globe-alt" class="w-12 h-12" />
|
||||
</div>
|
||||
<h3 class="text-xl font-bold text-text mb-3">
|
||||
{{ __('about.mission_diaspora_title') }}
|
||||
</h3>
|
||||
<p class="text-text/80">
|
||||
{{ __('about.mission_diaspora_text') }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{{-- Values Section - Story 16.3 --}}
|
||||
|
||||
|
|
|
|||
|
|
@ -113,3 +113,136 @@ test('mobile navigation contains about us link', function () {
|
|||
->assertOk()
|
||||
->assertSee('data-test="mobile-nav-about"', false);
|
||||
});
|
||||
|
||||
// Story 16.2: Vision & Mission Section Tests
|
||||
|
||||
// AC1: Vision Section Container
|
||||
test('about page has vision section with white background', function () {
|
||||
$this->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('bg-white py-8', false);
|
||||
});
|
||||
|
||||
// AC2: Vision Section Header
|
||||
test('about page displays vision title in English', function () {
|
||||
$this->withSession(['locale' => 'en'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('Our Vision');
|
||||
});
|
||||
|
||||
test('about page displays vision title in Arabic', function () {
|
||||
$this->withSession(['locale' => 'ar'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('رؤيتنا');
|
||||
});
|
||||
|
||||
// AC3: Vision Statement
|
||||
test('about page displays vision statement in English', function () {
|
||||
$this->withSession(['locale' => 'en'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('Libra is woven from the fabric of society');
|
||||
});
|
||||
|
||||
test('about page displays vision statement in Arabic', function () {
|
||||
$this->withSession(['locale' => 'ar'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('ليبرا منسوجة من نسيج المجتمع');
|
||||
});
|
||||
|
||||
// AC4: Mission Section Container
|
||||
test('about page has mission section with cream background', function () {
|
||||
$this->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('bg-background py-8', false);
|
||||
});
|
||||
|
||||
// AC5: Mission Section Header
|
||||
test('about page displays mission title in English', function () {
|
||||
$this->withSession(['locale' => 'en'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('Our Mission');
|
||||
});
|
||||
|
||||
test('about page displays mission title in Arabic', function () {
|
||||
$this->withSession(['locale' => 'ar'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('مهمتنا');
|
||||
});
|
||||
|
||||
// AC6: Mission Cards - Institution
|
||||
test('about page displays institution mission card in English', function () {
|
||||
$this->withSession(['locale' => 'en'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('For Our Institution')
|
||||
->assertSee('Libra works at the heart of society');
|
||||
});
|
||||
|
||||
test('about page displays institution mission card in Arabic', function () {
|
||||
$this->withSession(['locale' => 'ar'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('لمؤسستنا')
|
||||
->assertSee('تعمل ليبرا في قلب المجتمع');
|
||||
});
|
||||
|
||||
// AC6: Mission Cards - Society
|
||||
test('about page displays society mission card in English', function () {
|
||||
$this->withSession(['locale' => 'en'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('For Society')
|
||||
->assertSee('Libra Scholarship for Law and Palestinian Arts');
|
||||
});
|
||||
|
||||
test('about page displays society mission card in Arabic', function () {
|
||||
$this->withSession(['locale' => 'ar'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('للمجتمع')
|
||||
->assertSee('منحة ليبرا للقانون والفنون الفلسطينية');
|
||||
});
|
||||
|
||||
// AC6: Mission Cards - Diaspora
|
||||
test('about page displays diaspora mission card in English', function () {
|
||||
$this->withSession(['locale' => 'en'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('For Palestinians in the Diaspora')
|
||||
->assertSee('platform for listening to Palestinians in the diaspora');
|
||||
});
|
||||
|
||||
test('about page displays diaspora mission card in Arabic', function () {
|
||||
$this->withSession(['locale' => 'ar'])
|
||||
->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('للفلسطينيين في الشتات')
|
||||
->assertSee('منصة للاستماع إلى الفلسطينيين في الشتات');
|
||||
});
|
||||
|
||||
// AC7: Mission Card Styling
|
||||
test('about page mission cards have correct styling', function () {
|
||||
$this->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('bg-white rounded-lg shadow-sm p-6', false);
|
||||
});
|
||||
|
||||
// AC8: Responsive Grid
|
||||
test('about page mission cards use responsive grid', function () {
|
||||
$this->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('grid-cols-1 md:grid-cols-2 lg:grid-cols-3', false);
|
||||
});
|
||||
|
||||
// AC7: Icons present (Flux renders icons as inline SVGs)
|
||||
test('about page mission cards have icons', function () {
|
||||
$this->get('/about')
|
||||
->assertOk()
|
||||
->assertSee('<svg', false); // Flux icons render as inline SVGs
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue