From 7285ea8f455880a79f07b77ec8861400acdf0d5a Mon Sep 17 00:00:00 2001 From: Andy Charlwood Date: Sat, 14 Feb 2026 18:02:46 +0000 Subject: [PATCH] feat: US-006 - Create Patient Pathway parent section with constellation graph --- src/components/DashboardLayout.tsx | 35 +++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/src/components/DashboardLayout.tsx b/src/components/DashboardLayout.tsx index bd9a0de..5bdca7b 100644 --- a/src/components/DashboardLayout.tsx +++ b/src/components/DashboardLayout.tsx @@ -8,11 +8,14 @@ import { DetailPanel } from './DetailPanel' import { PatientSummaryTile } from './tiles/PatientSummaryTile' import { CoreSkillsTile } from './tiles/CoreSkillsTile' import { LastConsultationTile } from './tiles/LastConsultationTile' -import { CareerActivityTile } from './tiles/CareerActivityTile' import { EducationTile } from './tiles/EducationTile' import { ProjectsTile } from './tiles/ProjectsTile' +import { ParentSection } from './ParentSection' +import CareerConstellation from './CareerConstellation' import { useActiveSection } from '@/hooks/useActiveSection' import { useDetailPanel } from '@/contexts/DetailPanelContext' +import { consultations } from '@/data/consultations' +import { skills } from '@/data/skills' import type { PaletteAction } from '@/lib/search' const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches @@ -67,6 +70,27 @@ export function DashboardLayout() { // SubNav handles scrolling internally }, []) + // Constellation graph handlers + const handleRoleClick = useCallback( + (roleId: string) => { + const consultation = consultations.find((c) => c.id === roleId) + if (consultation) { + openPanel({ type: 'career-role', consultation }) + } + }, + [openPanel], + ) + + const handleSkillClick = useCallback( + (skillId: string) => { + const skill = skills.find((s) => s.id === skillId) + if (skill) { + openPanel({ type: 'skill', skill }) + } + }, + [openPanel], + ) + // Global Ctrl+K listener to open command palette useEffect(() => { function handleKeyDown(e: KeyboardEvent) { @@ -176,8 +200,13 @@ export function DashboardLayout() { {/* LastConsultationTile — full width */} - {/* CareerActivityTile — full width */} - + {/* Patient Pathway — parent section with constellation graph */} + + + {/* EducationTile — full width */}