Problem
The check-in flow references QR codes but no component exists to display the generated QR code for a session. The feature is implemented on the backend but invisible on the frontend.
Proposed Solution
Create frontend/cntr/QRCheckIn/QRCheckInDisplay.tsx. Props: qrDataUrl: string, workspaceName: string, expiresAt: string. Renders the workspace name, the QR code as <img src={qrDataUrl}>, and a countdown to expiry using the CountdownTimer component from frontend/cntr/CountdownTimer/. When the timer reaches zero, replaces the QR code with "QR code expired — request a new one." All implementation must live inside frontend/cntr/.
Acceptance Criteria
Problem
The check-in flow references QR codes but no component exists to display the generated QR code for a session. The feature is implemented on the backend but invisible on the frontend.
Proposed Solution
Create
frontend/cntr/QRCheckIn/QRCheckInDisplay.tsx. Props:qrDataUrl: string,workspaceName: string,expiresAt: string. Renders the workspace name, the QR code as<img src={qrDataUrl}>, and a countdown to expiry using theCountdownTimercomponent fromfrontend/cntr/CountdownTimer/. When the timer reaches zero, replaces the QR code with "QR code expired — request a new one." All implementation must live insidefrontend/cntr/.Acceptance Criteria
frontend/cntr/QRCheckIn/QRCheckInDisplay.tsx<img src={qrDataUrl} alt="Check-in QR Code">CountdownTimercomponent from../CountdownTimer/CountdownTimeronExpirecallback)frontend/cntr/QRCheckIn/QRCheckInDisplay.test.tsx