Input Text

Updated 2 months ago

When to use Text input

Use a text input to collect a single line of text from the user. Label every input — placeholder text is not a label substitute.

When to use

  • One-line text entry — name, email, search query, identifier.
  • Numeric entry where the format is text-shape (currency with symbol, formatted phone number).

When not to use

  • For multi-line text, use the textarea recipe (subsequent milestone).
  • For selection from a known list, use a select or combobox.
  • For booleans, use a checkbox or switch.

Anatomy

ElementPurpose
LabelAbove the input, always visible. utility-1 weight 600.
Input fieldThe text entry. 40px height, semantic border.
Helper textBelow the input. utility-1 weight 400. Used for guidance OR errors.

States

  • Default — neutral border, no focus ring.
  • Focus — primary border + 2px focus ring.
  • Disabled — surface-subtle background, ink-disabled text.
  • Error — critical border, critical helper text. Set aria-invalid="true" on the input.

Brand voice

Labels are nouns or noun phrases: Email address, Account identifier. Avoid imperatives in labels — Enter your email becomes the placeholder, the label is Email.

Helper text is one short sentence that completes the thought: We'll only use this for account recovery. not Please enter your email so we can send you a recovery link if necessary.

Error messages are direct and actionable: Email address is required. not Oops! Looks like you forgot something.

Important Information

Design System disclosure

This site provides open-source design tokens, documentation, and self-hostable software published by Woodfine Capital Projects Inc. Information here is for general reference only and does not constitute an offer, warranty, or a guarantee of fitness for any particular purpose. Statements regarding planned, intended, or targeted future features are forward-looking and subject to change without notice; they are not undertaken to be updated except as required by law.