We are currently managing input state in 2 places, the parent component as well as the input component itself.
To keep 1 single source of truth and avoid bugs like #83. We need to remove all internal state in input components and force users to manage input states themselves using parent's component.
Acceptance criteria:
All input components' states need to be managed from the outside, there should be no side-effect inside the component that could alter the input state.