diff --git a/src/app/page.tsx b/src/app/page.tsx index 15b3c1f..6410269 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -37,6 +37,7 @@ import { TelehealthRoom } from '@/components/telehealth/TelehealthRoom'; import { WaitlistModal } from '@/components/waitlist/WaitlistModal'; import { CourtAuditVaultModal } from '@/components/compliance/CourtAuditVaultModal'; import { CommandPalette } from '@/components/ui/CommandPalette'; +import { InactivityLockoutModal } from '@/components/ui/InactivityLockoutModal'; import { ClinicalToastContainer, ToastMessage } from '@/components/ui/ClinicalToast'; import { clinicalAudio } from '@/lib/clinical-audio'; import { @@ -60,6 +61,7 @@ import { VolumeX, Sparkles, Scale, + Lock, } from 'lucide-react'; export default function Home() { @@ -90,6 +92,7 @@ export default function Home() { // Polish state: Command Palette, Toasts & Audio const [isCommandPaletteOpen, setIsCommandPaletteOpen] = useState(false); const [isCourtVaultOpen, setIsCourtVaultOpen] = useState(false); + const [isTerminalLocked, setIsTerminalLocked] = useState(false); const [toasts, setToasts] = useState([]); const [audioEnabled, setAudioEnabled] = useState(true); @@ -360,6 +363,20 @@ export default function Home() { Vault + {/* Quick Terminal Lockout Button (HIPAA 45 CFR § 164.312(a)(2)(iii)) */} + + {/* Clinic Dropdown */}
{ + setPin(e.target.value); + setError(false); + }} + placeholder="••••" + className={`w-full text-center text-xl tracking-widest px-4 py-2.5 bg-slate-50 border ${ + error ? 'border-red-500 bg-red-50 text-red-900' : 'border-slate-300 text-slate-900' + } rounded-xl focus:outline-none focus:border-sky-500 font-mono transition`} + /> + +
+ {error && ( +

+ Invalid PIN. Enter 1234 or authorized staff credentials. +

+ )} + + + + +
+ Hotkeys: Enter to unlock • Cmd+L to lock + +
+ + ) : ( + /* Emergency "Break-Glass" Access Mode (45 CFR § 164.312(a)(2)(ii)) */ +
+
+
+ + EMERGENCY ACCESS PROTOCOL (45 CFR § 164.312(a)(2)(ii)) +
+

+ Break-glass access overrides standard credential requirements for acute clinical emergencies. + This event is permanently recorded in the 21 CFR Part 11 audit ledger with timestamp, IP address, + and declared medical justification. +

+
+ +
+ +