Forms overview
A field is the component: label + control + hint + error, one unit that knows about itself. Every control is exactly as tall as a button, so forms and actions line up without shimming.
Where the build log lands. One send a week.
.field > .label + .input + .hint — the unit
Add a domain after the @ to finish this address.
error state — aria-invalid + aria-describedby drive the styling, never a class alone
| Class | Does |
|---|---|
.field | label + control + hint/error stack |
.label / .label-optional | the name; optional marks itself, required doesn't |
.hint / .error-text | one line under the control — never both at once |
.fieldset | grouped controls with a legend |
.form-row | side-by-side fields that stack on small screens |