refactor(forms): use errorStates and warningStates

Closes #736
Closes #706
Fixes #724