Form Design Encyclopedia — Every Form Pattern
Mental model
Every field is a request for effort, and the user is deciding continuously
whether the thing they came for is still worth it. So the discipline is
subtraction: the best form change is almost always deleting a field.
- One column. Multi-column forms cause skipped fields and mis-scanning. The
exception is genuinely paired data — city and postcode, expiry and CVC.
- Labels above inputs. Fastest to scan, survives translation, survives
narrow screens. Placeholder-as-label is an accessibility failure and a memory
burden the moment someone starts typing.
- Validate on blur, not on keystroke. Validating while someone is still
typing tells them they are wrong before they have finished being right.
Re-validate on submit; show errors inline, next to the field, never only at
the top.
- An error message names the fix, not the failure. "Enter a date in the past"
beats "Invalid date".
- Every field earns its place. If nobody can name the decision a field
informs, it is decoration with a compliance cost.
Constants
Every input in the catalog implements these six states. A field missing focus or
error is not finished.
default · focus · filled · disabled · error · success
Touch target minimum 44x44px. Label-to-input gap 8px. Field-to-field gap 20-24px.
Error text sits directly beneath its field, never floating.
Index
| Need |
Reference |
| A specific input type — text, email, phone, date, file, OTP, rich text |
input-field-catalog.md |
| Password strength meter, masked input, currency, percentage |
input-field-catalog.md |
| The six field states as code |
input-field-catalog.md |
| Single column, two column, card-based, inline layouts |
form-layout-patterns.md |
| Login, signup, contact, payment, address, settings, survey forms |
form-layout-patterns.md |
| When to validate and what to say |
validation-error-patterns.md |
| 100+ ready error message templates |
validation-error-patterns.md |
| Splitting a long form into steps |
multi-step-form-patterns.md |
| Step indicators, back navigation, data persistence |
multi-step-form-patterns.md |
| Labels, required marking, error association, group labels |
form-accessibility-code.md |
| Why people abandon, and what to instrument |
form-analytics.md |
Reference architecture
| File |
Covers |
Lines |
references/form-layout-patterns.md |
19 layouts + specialized forms |
2344 |
references/input-field-catalog.md |
55 input types, all states |
1539 |
references/multi-step-form-patterns.md |
wizards, steppers, persistence |
1151 |
references/form-accessibility-code.md |
semantic HTML, ARIA, errors |
1025 |
references/validation-error-patterns.md |
timing, anatomy, 100+ templates |
780 |
references/form-analytics.md |
measuring form performance |
69 |
What every reference file contains
- When the pattern applies and when it does not
- Complete React plus CSS, with all six states rendered
- The ARIA wiring — label association, error announcement, group semantics
- Mobile behaviour: keyboard type, autocomplete token, target size
- The failure mode that pattern is known for
Routing
For a specific input — the field-state reference plus every input type from
text and icon-prefixed through to password strength meters: read
references/input-field-catalog.md.
For arranging a form — single column, two column, card-based and the rest of
the nineteen layouts, plus the specialized login, signup, contact, payment,
address, settings and survey forms: read references/form-layout-patterns.md.
For validation and errors — timing strategy, error message anatomy, 100+
message templates, and warning patterns: read
references/validation-error-patterns.md.
For multi-step flows — when to split at all, step indicators, navigation
between steps, and data persistence: read
references/multi-step-form-patterns.md.
For accessibility — semantic HTML foundations, label association methods,
required-field marking, error association and group labeling: read
references/form-accessibility-code.md.
For odds and ends — the patterns that had no home in the files above when this skill was converted to a router: read references/form-supplementary.md.
Cross-References
- component-patterns-code (React component implementations)
- micro-copy-intelligence (error messages, helper text, button labels)
- conversion-optimization-patterns (form conversion, CTA optimization)
- accessibility-inclusive-design (WCAG compliance, screen reader testing)
- mobile-ux-design (touch targets, mobile patterns)
- interaction-motion-design (form transitions, validation animations)
- performance-states-patterns (loading, empty, error states)
- navigation-pattern-encyclopedia (form navigation, multi-step flows)
1---2name: form-design-encyclopedia3description: 200+ form patterns covering every input type, layout, validation strategy, multi-step wizard, and error state, with production React and CSS, accessibility requirements, and mobile optimization. Use when building or fixing a form, choosing a validation approach, or reducing abandonment on signup and checkout.4---56# Form Design Encyclopedia — Every Form Pattern78## Mental model910Every field is a request for effort, and the user is deciding continuously11whether the thing they came for is still worth it. So the discipline is12subtraction: the best form change is almost always deleting a field.1314- **One column.** Multi-column forms cause skipped fields and mis-scanning. The15 exception is genuinely paired data — city and postcode, expiry and CVC.16- **Labels above inputs.** Fastest to scan, survives translation, survives17 narrow screens. Placeholder-as-label is an accessibility failure and a memory18 burden the moment someone starts typing.19- **Validate on blur, not on keystroke.** Validating while someone is still20 typing tells them they are wrong before they have finished being right.21 Re-validate on submit; show errors inline, next to the field, never only at22 the top.23- **An error message names the fix, not the failure.** "Enter a date in the past"24 beats "Invalid date".25- **Every field earns its place.** If nobody can name the decision a field26 informs, it is decoration with a compliance cost.2728## Constants2930Every input in the catalog implements these six states. A field missing focus or31error is not finished.3233```34default · focus · filled · disabled · error · success35```3637Touch target minimum 44x44px. Label-to-input gap 8px. Field-to-field gap 20-24px.38Error text sits directly beneath its field, never floating.3940## Index4142| Need | Reference |43|---|---|44| A specific input type — text, email, phone, date, file, OTP, rich text | `input-field-catalog.md` |45| Password strength meter, masked input, currency, percentage | `input-field-catalog.md` |46| The six field states as code | `input-field-catalog.md` |47| Single column, two column, card-based, inline layouts | `form-layout-patterns.md` |48| Login, signup, contact, payment, address, settings, survey forms | `form-layout-patterns.md` |49| When to validate and what to say | `validation-error-patterns.md` |50| 100+ ready error message templates | `validation-error-patterns.md` |51| Splitting a long form into steps | `multi-step-form-patterns.md` |52| Step indicators, back navigation, data persistence | `multi-step-form-patterns.md` |53| Labels, required marking, error association, group labels | `form-accessibility-code.md` |54| Why people abandon, and what to instrument | `form-analytics.md` |5556## Reference architecture5758| File | Covers | Lines |59|---|---|---|60| `references/form-layout-patterns.md` | 19 layouts + specialized forms | 2344 |61| `references/input-field-catalog.md` | 55 input types, all states | 1539 |62| `references/multi-step-form-patterns.md` | wizards, steppers, persistence | 1151 |63| `references/form-accessibility-code.md` | semantic HTML, ARIA, errors | 1025 |64| `references/validation-error-patterns.md` | timing, anatomy, 100+ templates | 780 |65| `references/form-analytics.md` | measuring form performance | 69 |6667## What every reference file contains68691. When the pattern applies and when it does not702. Complete React plus CSS, with all six states rendered713. The ARIA wiring — label association, error announcement, group semantics724. Mobile behaviour: keyboard type, autocomplete token, target size735. The failure mode that pattern is known for7475## Routing7677For **a specific input** — the field-state reference plus every input type from78text and icon-prefixed through to password strength meters: read79`references/input-field-catalog.md`.8081For **arranging a form** — single column, two column, card-based and the rest of82the nineteen layouts, plus the specialized login, signup, contact, payment,83address, settings and survey forms: read `references/form-layout-patterns.md`.8485For **validation and errors** — timing strategy, error message anatomy, 100+86message templates, and warning patterns: read87`references/validation-error-patterns.md`.8889For **multi-step flows** — when to split at all, step indicators, navigation90between steps, and data persistence: read91`references/multi-step-form-patterns.md`.9293For **accessibility** — semantic HTML foundations, label association methods,94required-field marking, error association and group labeling: read95`references/form-accessibility-code.md`.9697For **odds and ends** — the patterns that had no home in the files above when this skill was converted to a router: read `references/form-supplementary.md`.9899## Cross-References100- component-patterns-code (React component implementations)101- micro-copy-intelligence (error messages, helper text, button labels)102- conversion-optimization-patterns (form conversion, CTA optimization)103- accessibility-inclusive-design (WCAG compliance, screen reader testing)104- mobile-ux-design (touch targets, mobile patterns)105- interaction-motion-design (form transitions, validation animations)106- performance-states-patterns (loading, empty, error states)107- navigation-pattern-encyclopedia (form navigation, multi-step flows)