Forms
Field .
Label + input/textarea com min-height 48px, ids automáticos e a11y de required.
Field — sub-component
Label + input/textarea: 8px label→control gap, min-height 48px, 16px font-size.
Required carries * indicator (not color-only) + native required attr.
Hint text wired with aria-describedby.
Focus ring: var(--focus-ring) — surface-aware, no raw hex.
type="text" · required
type="email" · required · with hint
Used only to reply to your message.
type="textarea" · optional
A11y checklist
- Every input: <label for> wired to <input id> — always associated
- Required: native required attr + visible * (not color-only)
- Hint text: aria-describedby wires hint to its input
- font-size:16px on all inputs — prevents iOS auto-zoom
- :focus-visible ring — visible on all surfaces, keyboard reachable