TeachKit project

TeachKit / Design system

Documentation v0.1 · Released product

Design system contents

Components

Messages, empty states and headings

Use simple guidance to explain an empty collection or product-wide status without inventing a success outcome.

On this page

Purpose and usage

Use simple guidance to explain an empty collection or product-wide status without inventing a success outcome.

Anatomy

Anatomy
PartContract
MessageFull-width source turquoise banner
EmptyEgg icon and Nothing here yet!
LoadingSpinner
HeadingTitle and optional subtitle

Variants and configuration

Variants and configuration
Input or variantBehavior
MessageBarmessage string
EmptyStateNo configurable copy in source
PageHeadingtitle and optional subtitle

State coverage

State coverage
StateImplemented behavior
MessageVisual status text
EmptyNo data in the owning collection
PendingSeparate loading state

Interaction and composition

  • Choose empty, loading, failed and unauthorized states deliberately.
  • Do not use an empty collection to hide a failed fetch.
  • Add an appropriate next action in the parent where the source generic empty message lacks one.

Accessibility and readiness

MessageBar has no live-region role; dynamic messages need explicit announcement semantics. EmptyState cannot accept contextual text. Spinner naming and reduced motion need review in the containing workflow.

Source references

Source references
FileResponsibility
src/components/MessageBar.tsxStriped status banner
src/components/EmptyState.tsxEmpty collection message
src/components/LoadingSpinner.tsxPending visual
src/components/PageHeading.tsxRoute heading

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.

Empty · Component detail · Light · Desktop · 1920 × 360 px
Message · Component detail · Light · Desktop · 1920 × 214 px

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