TeachKit project

TeachKit / Design system

Documentation v0.1 · Released product

Design system contents

Components

Text fields and copyable values

Reuse the source input and textarea wrappers so labels, icons and focus treatments remain recognizable across course editing.

On this page

Purpose and usage

Reuse the source input and textarea wrappers so labels, icons and focus treatments remain recognizable across course editing.

Anatomy

Anatomy
PartContract
Persistent labelOwned by the composing form
IconOptional input icon; required textarea iconClass
Native inputStandard HTML attributes forwarded
FeedbackRead-only copy confirmation below field

Variants and configuration

Variants and configuration
Input or variantBehavior
FormFieldiconClass, boldText, noMargin, readOnly plus native props
TextareaFieldiconClass and native textarea props
Controlled valuesMissing value is normalized to empty string

State coverage

State coverage
StateImplemented behavior
EditableParent value/onChange
FocusPrimary border and three-pixel turquoise shadow
Read-onlyClick copies the string value
CopiedTwo-second local confirmation

Interaction and composition

  • Pair fields with label htmlFor and stable input IDs.
  • Use meaningful input types and persistent hints.
  • Read-only copying is a special behavior; do not silently apply it to every noneditable value.
  • Provide rejected clipboard and save feedback at the workflow level.

Accessibility and readiness

Input focus styling is implemented. Clipboard write is not awaited/caught by FormField, and its click handler replaces a forwarded onClick. Textarea boldText uses literal black. Error association, descriptions and clipboard announcements need explicit composition and verification.

Composition example

<label htmlFor="title">Course title</label>
<FormField id="title" value={title}
  onChange={event => setTitle(event.target.value)} />

Source references

Source references
FileResponsibility
src/components/forms/FormField.tsxNative input, icon, read-only copy
src/components/forms/TextareaField.tsxMultiline editor field

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.

Fields · Component detail · Light · Desktop · 1920 × 866 px
Fields · Component detail · Light · Desktop · Focus · 1920 × 922 px

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