# Story 2.3: Create Resume Header & Main Content Components Status: done ## Story As a user, I want to see my photo, name, contact info, summary, and work experience prominently, so that recruiters see the most important information first. ## Acceptance Criteria ### ResumeHeader.vue 1. **AC1:** Given the header component renders, when it displays, then it shows profile photo on the left (if provided) 2. **AC2:** Full name in large bold text (2rem, font-bold) displayed on the right 3. **AC3:** Job title appears below name (1.25rem, text-gray-600) 4. **AC4:** Contact information (address, phone, email, website) displayed with proper formatting 5. **AC5:** All contact links are clickable (mailto:, tel:, https://) 6. **AC6:** Layout is horizontal: photo (left) + info block (right) ### ResumeSummary.vue 7. **AC7:** Given the summary component renders, when it displays, then it shows "SUMMARY" section header (blue, uppercase, with bottom border) 8. **AC8:** Professional summary paragraph is displayed 9. **AC9:** Line height is 1.6 for readability ### ResumeExperience.vue 10. **AC10:** Given the experience component renders, when it displays, then it shows "WORK EXPERIENCE" section header (blue, uppercase, with bottom border) 11. **AC11:** For each job: position title (bold, left), company name, date range (right-aligned: "Jan 2022 - Present"), bullet points for highlights (• character) 12. **AC12:** Jobs are sorted by date (most recent first) 13. **AC13:** "Present" is shown for current jobs (no endDate) ## Tasks / Subtasks - [x] Create ResumeHeader component (AC: #1-#6) - [x] Create `app/components/resume/ResumeHeader.vue` - [x] Accept props: `basics` (ResumeBasics) - includes name, label, email, phone, location, url, image - [x] Display profile photo (if provided) with proper sizing (150px max width) - [x] Display name with `text-3xl font-bold` (2rem) - [x] Display job title with `text-xl text-gray-600` (1.25rem) - [x] Display address, phone, email, website in structured format - [x] Make email, phone, website clickable with proper href attributes - [x] Use horizontal layout: photo left, info right - [x] Create ResumeSummary component (AC: #7-#9) - [x] Create `app/components/resume/ResumeSummary.vue` - [x] Accept props: `summary` (string) - [x] Add section header "SUMMARY" with blue, uppercase, bold styling - [x] Add blue bottom border to header: `border-b-2 border-blue-600` - [x] Display summary paragraph with `leading-relaxed` (line-height: 1.6) - [x] Use `text-sm text-gray-800` - [x] Create ResumeExperience component (AC: #10-#13) - [x] Create `app/components/resume/ResumeExperience.vue` - [x] Accept props: `work` (WorkExperience[]) - [x] Add section header "WORK EXPERIENCE" with blue, uppercase, bold styling - [x] Add blue bottom border to header: `border-b-2 border-blue-600` - [x] Sort jobs by startDate (most recent first) - [x] For each job, display: - Position title: `font-semibold text-gray-900` (left-aligned) - Company name: `text-gray-700` - Date range: Use `formatDate()` helper from composable (right-aligned) - Highlights: `