Render a preview per bank question, client-side, from the source PDF cropped to the question's bounds — makes the bank visually browsable like the spike cockpit. bankCrops.ts: renders each template's PDF once (cached) via the existing pdf.js loader (already at the 780px coordinate space the bounds live in), then crops the page image to (bounds.x, bounds.y - pageTop, w, h) → a small PNG data-URL; decoded page images are cached too. QuestionBankPage: a lazy <QuestionCrop> at the top of each card (spinner → image, or "no preview" when a question has no bounds/PDF). No API/infra change. tsc clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Description
React 18 + TypeScript + TLDraw 3.6 frontend for Classroom Copilot — whiteboard, transcription panel, timetable, and graph views
Languages
TypeScript
96.1%
CSS
3.1%
JavaScript
0.5%
Dockerfile
0.2%
HTML
0.1%