Для определения состояния поля используйте псевдоклассы:
:foucus
:invalid
:valid
Для установки иконок внутри поля справа, используйте абсолютное позиционирование на сами иконки и селекторы соседей, чтобы выводить те или иные иконки с опорой на состояние полей.