Task 5: Build ClinicalSidebar with navigation and search

- Create ClinicalSidebar component with 7 navigation items
- NHS blue active state with 3px left border
- Search input with basic filtering (fuse.js integration pending)
- Keyboard shortcuts Alt+1-7 for navigation
- URL hash routing (#summary, #consultations, etc.)
- Session footer with current time
- Create PMRInterface container component
- Update App.tsx to use 'pmr' phase instead of 'content'
This commit is contained in:
2026-02-11 01:16:19 +00:00
parent 65fc23e79b
commit 4434c6e437
4 changed files with 276 additions and 30 deletions
+4 -29
View File
@@ -3,20 +3,13 @@ import type { Phase } from './types'
import { BootSequence } from './components/BootSequence'
import { ECGAnimation } from './components/ECGAnimation'
import { LoginScreen } from './components/LoginScreen'
import { FloatingNav } from './components/FloatingNav'
import { Hero } from './components/Hero'
import { Skills } from './components/Skills'
import { Experience } from './components/Experience'
import { Education } from './components/Education'
import { Projects } from './components/Projects'
import { Contact } from './components/Contact'
import { Footer } from './components/Footer'
import { PMRInterface } from './components/PMRInterface'
function App() {
const [phase, setPhase] = useState<Phase>('boot')
return (
<div className="min-h-screen bg-white">
<div className="min-h-screen">
{phase === 'boot' && (
<BootSequence onComplete={() => setPhase('ecg')} />
)}
@@ -26,28 +19,10 @@ function App() {
)}
{phase === 'login' && (
<LoginScreen onComplete={() => setPhase('content')} />
<LoginScreen onComplete={() => setPhase('pmr')} />
)}
{phase === 'content' && (
<>
<FloatingNav />
<main className="max-w-[1000px] mx-auto px-5 xs:px-6 md:px-8">
<Hero />
<Skills />
<Experience />
<Education />
<Projects />
<Contact />
</main>
<Footer />
</>
)}
{phase === 'pmr' && <PMRInterface />}
</div>
)
}