Components
Lesson links and downloads
Keep supporting references attached to the lesson, using visible labels and separate link/download semantics.
On this page
Purpose and usage
Keep supporting references attached to the lesson, using visible labels and separate link/download semantics.
Anatomy
| Part | Contract |
|---|---|
| Section heading | Links or Downloads |
| Icon region | Turquoise segment |
| Label | Explicit label or source fallback |
| Destination | URL and appropriate navigation intent |
Variants and configuration
| Input or variant | Behavior |
|---|---|
| Links | links with label/url |
| Downloads | files with label/url |
| Empty | Missing or empty URLs are omitted |
State coverage
| State | Implemented behavior |
|---|---|
| Populated | Resource pills |
| Empty | Section returns null |
| Missing label | Hostname or cleaned filename fallback |
Interaction and composition
- Prefer an explicit descriptive label.
- Links open a new tab with noopener noreferrer.
- Downloads append a download query marker and use the download attribute.
- Keep sanitization in the editor/server boundary; trimming nonempty strings is not URL-protocol validation.
Accessibility and readiness
Review long labels, destination safety and downloads across origins. Cross-origin download behavior depends on browser/server headers. No transfer or signed-file access is performed by capture preparation.
Composition example
<LinksList links={lesson.links} />
<DownloadsList files={lesson.downloads} />Source references
| File | Responsibility |
|---|---|
| src/components/courses-public/logged-in/LinksList.tsx | Labeled outbound references |
| src/components/courses-public/logged-in/DownloadsList.tsx | Download intent and file label fallback |
Examples from the app
Actual TeachKit UI with Thomas McGee’s course content. Session, progress and connection specimens are simulated; no student data or live changes. Captured at 2× resolution or higher. Select an image to inspect it full size.
Related topics
Source audit: 2026-10-07 · Revision d8cf23d0a329 · Documentation v0.1