6.9 KiB
Reference: Tasks 12-15 — Bottom Tiles
Task 12: LastConsultation Tile
File: src/components/tiles/LastConsultationTile.tsx
Layout: Full-width card.
Content:
- CardHeader: green dot + "LAST CONSULTATION" + right text "Most recent role"
Header info row:
display: flex,flex-wrap: wrap,gap: 16pxmargin-bottom: 14px,padding-bottom: 14px,border-bottom: 1px solid var(--border-light)- Each field:
- Label: 10px, uppercase,
letter-spacing: 0.06em, text-tertiary - Value: 11.5px, 600 weight, text-primary
- Label: 10px, uppercase,
| Label | Value |
|---|---|
| Date | May 2025 |
| Organisation | NHS Norfolk & Waveney ICB |
| Type | Permanent · Full-time |
| Band | 8a |
Role title:
- "Interim Head, Population Health & Data Analysis"
- 13.5px, 600 weight,
color: var(--accent)(#0D6E6E) margin-bottom: 12px
Bullet list:
list-style: none, flex column,gap: 7px- Each bullet: 12.5px, text-primary,
padding-left: 16px,line-height: 1.5 - Pseudo
::before: 5px circle, accent color (#0D6E6E),opacity: 0.5, positioned left at top 7px
Bullets (from first consultation's examination array):
- Led a cross-functional team of 12 across data, analytics, and population health workstreams
- Oversaw £220M prescribing budget with full analytical accountability and reporting to ICB board
- Identified £14.6M in efficiency savings through data-driven prescribing interventions
- Designed and deployed Power BI dashboards used by 200+ clinicians and commissioners
- Spearheaded SQL analytics transformation, migrating legacy Access databases to modern data stack
- Established team data literacy programme, upskilling 30+ non-technical staff in data interpretation
Data: import { consultations } from '@/data/consultations' — use consultations[0] (the most recent).
Map consultation fields:
- date → Date field
- organization → Organisation field
- role → Role title
- examination array → Bullet points
Task 13: CareerActivity Tile
File: src/components/tiles/CareerActivityTile.tsx
Layout: Full-width card.
Content:
- CardHeader: teal dot + "CAREER ACTIVITY" + right text "Full timeline"
Activity grid:
display: grid,grid-template-columns: 1fr 1fr,gap: 10px- Below 900px:
grid-template-columns: 1fr(single column)
Each activity item:
display: flex,gap: 10pxpadding: 10px 12pxbackground: var(--bg)(#F0F5F4)border-radius: var(--radius-sm)(6px)border: 1px solid var(--border-light)- 12px font
transition: border-color 0.15s- Hover:
border-color: var(--accent-border)
Dot (left):
- 8px circle, flex-shrink-0,
margin-top: 2px(aligns with text) - Color by type:
- Role: teal (#0D6E6E)
- Project: amber (#D97706)
- Certification: green (#059669)
- Education: purple (#7C3AED)
Content (right):
- Title: 600 weight, text-primary,
line-height: 1.3 - Meta: 11px, text-secondary,
margin-top: 2px - Date: 10px, mono font, text-tertiary,
margin-top: 3px
Building the timeline data:
Merge entries from multiple data sources, sorted newest-first:
type ActivityType = 'role' | 'project' | 'cert' | 'edu'
interface ActivityEntry {
id: string
type: ActivityType
title: string
meta: string
date: string
sortYear: number // for sorting
}
Sources:
consultations→ type "role": title=role, meta=organization, date=durationinvestigations(selected key ones) → type "project": title=name, meta=short description, date=yeardocumentswhere type='Certificate' → type "cert": title=title, meta=source, date=datedocumentswhere type='Results' (MPharm) → type "edu": title=title, meta=source, date=date
Match the concept HTML entries:
| Type | Title | Meta | Date |
|---|---|---|---|
| role | Interim Head, Population Health & Data Analysis | NHS Norfolk & Waveney ICB | 2024 – 2025 |
| project | £220M Prescribing Budget Oversight | Lead analyst & budget owner | 2024 |
| role | Senior Data Analyst — Medicines Optimisation | NHS Norfolk & Waveney ICB | 2021 – 2024 |
| project | SQL Analytics Transformation | Legacy migration project lead | 2025 |
| cert | Power BI Data Analyst Associate | Microsoft Certified | 2023 |
| role | Prescribing Data Pharmacist | NHS Norwich CCG | 2018 – 2021 |
| cert | Clinical Pharmacy Diploma | Professional development | 2019 |
| role | Community Pharmacist | Boots UK | 2016 – 2018 |
| edu | MPharm (Hons) — 2:1 | University of East Anglia | 2011 – 2015 |
| cert | GPhC Registration | General Pharmaceutical Council | August 2016 |
Expansion prep: Activity items should accept onClick for Task 16 (expand to show full role/project detail).
Task 14: Education Tile
File: src/components/tiles/EducationTile.tsx
Layout: Full-width card, below Career Activity.
Content:
- CardHeader: purple dot (#7C3AED) + "EDUCATION"
Education entries: Vertical stack of education items.
Each item:
padding: 7px 10pxbackground: var(--surface)(#FFFFFF)border: 1px solid var(--border-light)border-radius: var(--radius-sm)(6px)- 11.5px, text-primary
Structure:
- Degree name: 600 weight,
display: block - Detail: text-secondary, 11px,
margin-top: 2px
Entries (from CV):
| Degree | Detail |
|---|---|
| MPharm (Hons) — 2:1 | University of East Anglia · 2015 |
| NHS Leadership Academy — Mary Seacole Programme | 2018 · 78% |
| A-Levels: Mathematics (A*), Chemistry (B), Politics (C) | Highworth Grammar School · 2009–2011 |
Data: Filter src/data/documents.ts for education entries, or hardcode from CV since the documents data may not have all education entries.
Note: The concept HTML only shows the MPharm entry. But the CV has more education. Include all CV education entries.
Task 15: Projects Tile
File: src/components/tiles/ProjectsTile.tsx
Layout: Full-width card, prominent position.
Content:
- CardHeader: amber dot + "ACTIVE PROJECTS"
Project entries: Vertical list, styled as interactive items.
Each project:
display: flex,align-items: flex-start,gap: 8pxpadding: 7px 10pxbackground: var(--surface),border: 1px solid var(--border-light)border-radius: var(--radius-sm)(6px)- 11.5px, text-primary
- Hover:
border-color: var(--accent-border) transition: border-color 0.15s
Structure:
- Status dot (7px circle, flex-shrink-0,
margin-top: 4px):- Complete: success (#059669)
- Ongoing: accent (#0D6E6E)
- Live: success with pulse animation
- Project name: text-primary, flex 1
- Year badge: 10px, mono font, text-tertiary,
margin-left: auto, flex-shrink-0
Data: import { investigations } from '@/data/investigations'
Map investigations to projects:
- name → Project name
- status → dot color
- requestedYear → Year badge
- resultSummary → Available for expansion (Task 16)
Expansion prep: Each item should accept onClick for Task 16 (expand to show methodology, tech stack, results).