406 lines
10 KiB
Markdown
406 lines
10 KiB
Markdown
# Epic 9: Design & Branding Implementation
|
|
|
|
## Epic Goal
|
|
|
|
Implement the complete visual design system with professional branding, ensuring a polished, elegant, and accessible user experience across all pages and devices.
|
|
|
|
## Epic Description
|
|
|
|
### Business Context
|
|
|
|
Libra Law Firm requires a highly professional aesthetic that reflects legal excellence and attention to detail. The design must balance sophistication with usability, supporting bilingual (Arabic/English) audiences with proper RTL/LTR layouts.
|
|
|
|
### Technical Context
|
|
|
|
- **Colors:** Dark Navy Blue (#0A1F44) + Gold (#D4AF37)
|
|
- **Fonts:** Cairo/Tajawal (Arabic), Montserrat/Lato (English)
|
|
- **Framework:** Tailwind CSS 4, Flux UI Free
|
|
- **Accessibility:** WCAG AA compliance
|
|
- **Responsive:** Mobile-first design
|
|
|
|
### Success Criteria
|
|
|
|
- [ ] Brand colors consistently applied
|
|
- [ ] Logo properly integrated throughout
|
|
- [ ] Typography hierarchy implemented
|
|
- [ ] RTL/LTR layouts perfect
|
|
- [ ] Responsive on all breakpoints
|
|
- [ ] WCAG AA contrast compliance
|
|
- [ ] Professional, polished finish
|
|
- [ ] Smooth animations and transitions
|
|
|
|
---
|
|
|
|
## Stories
|
|
|
|
### Story 9.1: Color System Implementation
|
|
|
|
**Description:** Implement the complete color palette as Tailwind CSS theme.
|
|
|
|
**Acceptance Criteria:**
|
|
- [ ] **Primary Colors:**
|
|
- Dark Navy Blue: #0A1F44 (backgrounds, headers)
|
|
- Gold/Brass: #D4AF37 (accents, buttons, links)
|
|
- [ ] **Supporting Colors:**
|
|
- Light Gold: #F4E4B8 (hover states)
|
|
- Off-White/Cream: #F9F7F4 (text, cards)
|
|
- Charcoal Gray: #2C3E50 (secondary text)
|
|
- Success Green: #27AE60 (approved status)
|
|
- Warning Red: #E74C3C (rejected, errors)
|
|
- Pending Yellow: #F39C12 (pending status)
|
|
- [ ] Custom Tailwind colors configured
|
|
- [ ] Dark mode consideration (optional)
|
|
- [ ] Color variables for easy maintenance
|
|
|
|
**Technical Notes:**
|
|
- Configure in Tailwind CSS 4 @theme directive
|
|
- Create semantic color aliases (primary, accent, etc.)
|
|
|
|
---
|
|
|
|
### Story 9.2: Typography System
|
|
|
|
**Description:** Implement typography with proper font loading and hierarchy.
|
|
|
|
**Acceptance Criteria:**
|
|
- [ ] **Arabic Fonts:**
|
|
- Primary: Cairo or Tajawal (Google Fonts)
|
|
- Weights: Light (300), Regular (400), SemiBold (600), Bold (700)
|
|
- [ ] **English Fonts:**
|
|
- Primary: Montserrat or Lato
|
|
- Weights: Light (300), Regular (400), SemiBold (600), Bold (700)
|
|
- [ ] **Font Hierarchy:**
|
|
- H1: Bold, 2.5rem (40px)
|
|
- H2: SemiBold, 2rem (32px)
|
|
- H3: SemiBold, 1.5rem (24px)
|
|
- Body: Regular, 1rem (16px)
|
|
- Small: Regular, 0.875rem (14px)
|
|
- [ ] Line height: 1.6 body, 1.3 headings
|
|
- [ ] Font-display: swap for performance
|
|
- [ ] Preload critical fonts
|
|
- [ ] Consistent across all pages
|
|
|
|
**Technical Notes:**
|
|
- Import from Google Fonts
|
|
- Configure Tailwind font-family
|
|
- Use @font-face for fallbacks
|
|
|
|
---
|
|
|
|
### Story 9.3: Logo Integration
|
|
|
|
**Description:** Integrate Libra scales logo throughout the application.
|
|
|
|
**Acceptance Criteria:**
|
|
- [ ] **Logo Placement:**
|
|
- Navigation: Top left (desktop), centered (mobile)
|
|
- Footer: Smaller version
|
|
- Email templates: Header
|
|
- PDF exports: Header
|
|
- [ ] **Logo Specifications:**
|
|
- Minimum size: 120px (desktop), 80px (mobile)
|
|
- Clear space: 20px padding minimum
|
|
- [ ] **Format Support:**
|
|
- SVG primary (scalable)
|
|
- PNG fallback
|
|
- [ ] **Color Variations:**
|
|
- Full color (gold on navy)
|
|
- Reversed (navy on light)
|
|
- Monochrome gold
|
|
- [ ] Responsive sizing
|
|
- [ ] Accessible alt text
|
|
|
|
**Technical Notes:**
|
|
- Use SVG for scalability
|
|
- Blade component for reuse
|
|
- Dynamic color based on background
|
|
|
|
---
|
|
|
|
### Story 9.4: Component Styling - Buttons
|
|
|
|
**Description:** Style all button types per brand guidelines.
|
|
|
|
**Acceptance Criteria:**
|
|
- [ ] **Primary Button:**
|
|
- Background: Gold (#D4AF37)
|
|
- Text: Dark Navy Blue
|
|
- Hover: Light Gold (#F4E4B8)
|
|
- Border-radius: 6px
|
|
- Padding: 12px 24px
|
|
- [ ] **Secondary Button:**
|
|
- Background: Transparent
|
|
- Border: 2px solid Gold
|
|
- Text: Gold
|
|
- Hover: Gold background, Navy text
|
|
- [ ] **Disabled State:**
|
|
- Background: #CCCCCC
|
|
- Text: #666666
|
|
- No hover effect
|
|
- Cursor: not-allowed
|
|
- [ ] **Danger Button:**
|
|
- Background: #E74C3C
|
|
- Text: White
|
|
- [ ] Loading states with spinner
|
|
- [ ] Focus states for accessibility
|
|
- [ ] Flux UI button integration
|
|
|
|
**Technical Notes:**
|
|
- Extend Flux UI button component
|
|
- Create Tailwind component classes
|
|
- Ensure consistent sizing
|
|
|
|
---
|
|
|
|
### Story 9.5: Component Styling - Forms
|
|
|
|
**Description:** Style all form elements consistently.
|
|
|
|
**Acceptance Criteria:**
|
|
- [ ] **Input Fields:**
|
|
- Border: Charcoal Gray
|
|
- Focus: Gold border
|
|
- Border-radius: 6px
|
|
- Padding: 12px 16px
|
|
- [ ] **Textareas:**
|
|
- Same styling as inputs
|
|
- Minimum height: 120px
|
|
- [ ] **Select Dropdowns:**
|
|
- Custom styled (not native)
|
|
- Consistent with inputs
|
|
- [ ] **Checkboxes & Radios:**
|
|
- Custom styled with gold accent
|
|
- Clear checked state
|
|
- [ ] **Labels:**
|
|
- SemiBold weight
|
|
- Required indicator (*)
|
|
- [ ] **Error States:**
|
|
- Red border
|
|
- Error message below field
|
|
- [ ] RTL support for all fields
|
|
- [ ] Flux UI field integration
|
|
|
|
**Technical Notes:**
|
|
- Use Flux UI form components
|
|
- Ensure proper RTL alignment
|
|
- Validate error message positioning
|
|
|
|
---
|
|
|
|
### Story 9.6: Component Styling - Cards & Containers
|
|
|
|
**Description:** Style cards and container elements.
|
|
|
|
**Acceptance Criteria:**
|
|
- [ ] **Card Styling:**
|
|
- Background: Off-white/cream
|
|
- Box-shadow: 0 2px 8px rgba(0,0,0,0.1)
|
|
- Border-radius: 8px
|
|
- Padding: 24px
|
|
- [ ] **Gold Border Highlight:**
|
|
- Optional gold top/left border
|
|
- For featured/important cards
|
|
- [ ] **Hover States:**
|
|
- Subtle lift effect
|
|
- Shadow increase
|
|
- [ ] **Dashboard Stat Cards:**
|
|
- Icon with gold accent
|
|
- Large number display
|
|
- Trend indicator
|
|
- [ ] **List Cards:**
|
|
- Consistent item spacing
|
|
- Clear click targets
|
|
- [ ] Container max-width: 1200px
|
|
|
|
**Technical Notes:**
|
|
- Create Blade card component
|
|
- Variant props for different styles
|
|
|
|
---
|
|
|
|
### Story 9.7: Navigation & Footer Styling
|
|
|
|
**Description:** Style the navigation bar and footer.
|
|
|
|
**Acceptance Criteria:**
|
|
- [ ] **Navigation Bar:**
|
|
- Fixed top position
|
|
- Navy blue background
|
|
- Logo left (desktop), centered (mobile)
|
|
- Gold text for links
|
|
- Active link indicator
|
|
- Language toggle styled
|
|
- Responsive mobile menu
|
|
- [ ] **Mobile Menu:**
|
|
- Full-width dropdown/slide
|
|
- Navy background
|
|
- Clear touch targets (44px+)
|
|
- Smooth animation
|
|
- [ ] **Footer:**
|
|
- Navy blue background
|
|
- Logo and firm info
|
|
- Contact details
|
|
- Links to Terms/Privacy
|
|
- Social links (if any)
|
|
- Copyright notice
|
|
- [ ] Sticky footer (always at bottom)
|
|
|
|
**Technical Notes:**
|
|
- Use Flux navbar if available
|
|
- Alpine.js for mobile menu toggle
|
|
|
|
---
|
|
|
|
### Story 9.8: RTL/LTR Layout Perfection
|
|
|
|
**Description:** Ensure perfect RTL layout for Arabic and LTR for English.
|
|
|
|
**Acceptance Criteria:**
|
|
- [ ] **RTL (Arabic):**
|
|
- Text aligns right
|
|
- Navigation mirrors (logo right)
|
|
- Form labels on right
|
|
- Icons/arrows flip appropriately
|
|
- Margins/paddings swap
|
|
- [ ] **LTR (English):**
|
|
- Standard left-to-right layout
|
|
- Proper text alignment
|
|
- [ ] Seamless language toggle
|
|
- [ ] No layout breaks on switch
|
|
- [ ] Calendar RTL support
|
|
- [ ] Tables RTL support
|
|
- [ ] All components tested in both
|
|
|
|
**Technical Notes:**
|
|
- Use Tailwind RTL plugin
|
|
- dir="rtl" on html element
|
|
- Logical properties (start/end vs left/right)
|
|
|
|
---
|
|
|
|
### Story 9.9: Responsive Design Implementation
|
|
|
|
**Description:** Ensure all pages work perfectly on all device sizes.
|
|
|
|
**Acceptance Criteria:**
|
|
- [ ] **Breakpoints:**
|
|
- Mobile: < 576px
|
|
- Tablet: 576px - 991px
|
|
- Desktop: 992px - 1199px
|
|
- Large Desktop: >= 1200px
|
|
- [ ] **Mobile Optimizations:**
|
|
- Touch-friendly targets (44px+)
|
|
- Readable font sizes
|
|
- Single column layouts
|
|
- Collapsible sections
|
|
- [ ] **Tablet Optimizations:**
|
|
- Two-column where appropriate
|
|
- Sidebar collapsible
|
|
- [ ] **Desktop Optimizations:**
|
|
- Full layouts with sidebars
|
|
- Multi-column grids
|
|
- [ ] All forms usable on mobile
|
|
- [ ] Calendar usable on mobile
|
|
- [ ] Tables scroll horizontally
|
|
|
|
**Technical Notes:**
|
|
- Mobile-first approach
|
|
- Test on real devices
|
|
- Use responsive utilities
|
|
|
|
---
|
|
|
|
### Story 9.10: Accessibility Compliance
|
|
|
|
**Description:** Ensure WCAG AA accessibility compliance.
|
|
|
|
**Acceptance Criteria:**
|
|
- [ ] **Color Contrast:**
|
|
- Body text: 4.5:1 minimum
|
|
- Large text: 3:1 minimum
|
|
- UI elements: 3:1 minimum
|
|
- [ ] **Focus Indicators:**
|
|
- Visible focus outline (gold)
|
|
- Not just color change
|
|
- [ ] **Keyboard Navigation:**
|
|
- All interactive elements reachable
|
|
- Logical tab order
|
|
- Skip to main content link
|
|
- [ ] **Screen Readers:**
|
|
- Proper heading hierarchy
|
|
- Alt text for images
|
|
- ARIA labels where needed
|
|
- Form labels associated
|
|
- [ ] **Motion:**
|
|
- Respect prefers-reduced-motion
|
|
- No auto-playing animations
|
|
|
|
**Technical Notes:**
|
|
- Use accessibility testing tools
|
|
- Test with screen reader
|
|
- Document any exceptions
|
|
|
|
---
|
|
|
|
### Story 9.11: Animations & Micro-interactions
|
|
|
|
**Description:** Add subtle, professional animations and transitions.
|
|
|
|
**Acceptance Criteria:**
|
|
- [ ] **Transitions:**
|
|
- Button hover: 150ms ease
|
|
- Card hover: 200ms ease
|
|
- Modal open/close: 200ms
|
|
- Page transitions (optional)
|
|
- [ ] **Loading States:**
|
|
- Skeleton loaders for content
|
|
- Spinner for actions
|
|
- Progress indicators
|
|
- [ ] **Feedback Animations:**
|
|
- Success checkmark
|
|
- Error shake
|
|
- Toast slide-in
|
|
- [ ] **Hover Effects:**
|
|
- Links: Color transition
|
|
- Cards: Lift effect
|
|
- Buttons: Background transition
|
|
- [ ] All animations subtle, professional
|
|
- [ ] Respect reduced-motion preference
|
|
|
|
**Technical Notes:**
|
|
- Use Tailwind transition utilities
|
|
- Keep animations under 300ms
|
|
- Avoid distracting effects
|
|
|
|
---
|
|
|
|
## Dependencies
|
|
|
|
| Epic | Dependency |
|
|
|------|------------|
|
|
| Epic 1 | Base Tailwind/Flux setup |
|
|
| All Epics | This epic applies styling to all features |
|
|
|
|
## Risks & Mitigations
|
|
|
|
| Risk | Impact | Mitigation |
|
|
|------|--------|------------|
|
|
| Logo not provided in vector | Medium | Request SVG, create placeholder |
|
|
| RTL edge cases | Medium | Thorough testing, RTL checklist |
|
|
| Browser inconsistencies | Low | Cross-browser testing |
|
|
| Accessibility issues discovered late | Medium | Test early and often |
|
|
|
|
## Definition of Done
|
|
|
|
- [ ] All stories completed with acceptance criteria met
|
|
- [ ] Brand colors consistent throughout
|
|
- [ ] Typography proper and readable
|
|
- [ ] Logo integrated correctly
|
|
- [ ] All components styled
|
|
- [ ] RTL layout perfect
|
|
- [ ] Responsive on all breakpoints
|
|
- [ ] WCAG AA compliant
|
|
- [ ] Animations smooth and subtle
|
|
- [ ] Cross-browser tested
|
|
- [ ] Code formatted with Pint
|