TeachKit project

TeachKit / Design system

Documentation v0.1 · Released product

Design system contents

Components

Course imagery and asset normalization

Use the real cover/avatar assets and the shared normalization boundary rather than a second image pipeline.

On this page

Purpose and usage

Use the real cover/avatar assets and the shared normalization boundary rather than a second image pipeline.

Anatomy

Anatomy
PartContract
InputString or static image import
NormalizationString source passes through ensureAssetHost
RenderNext Image receives remaining props

Variants and configuration

Variants and configuration
Input or variantBehavior
ImagePropsExisting Next Image API forwarded
CoverCourseCard uses fill and aspect-video parent
Provider logoConnection panel uses contain treatment

State coverage

State coverage
StateImplemented behavior
LoadedActual normalized source
Missing sourceOwning component chooses fallback
Failed requestMust be inspected, not silently replaced with invented artwork

Interaction and composition

  • Use object-cover for a cover, object-contain for a provider logo.
  • Preserve intrinsic ratio in documentation images.
  • Review alt text in the owning component.
  • Keep actual source image dimensions separate from screenshot dimensions.

Accessibility and readiness

Host normalization does not itself prove file accessibility or safety. Captures allow only GET asset/font/video requests and local mocked APIs. Do not claim B2 write, upload or provider reliability was tested.

Source references

Source references
FileResponsibility
src/components/AssetImage.tsxNext Image wrapper
src/utils/asset-url.tsHost normalization

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.

Course Card · Component detail · Light · Desktop · 1920 × 880 px
Connections · Component detail · Light · Desktop · 1920 × 514 px

Source audit: 2026-10-07 · Revision d8cf23d0a329 · Documentation v0.1