Бутон в макет обикновено показва едно състояние: по подразбиране. В реалния продукт същият бутон се задържа, фокусира се с клавиатура, натиска се, дезактивира се, докато формулярът е незавършен, и се зарежда, докато се изпраща заявка. Всяко от тях е състояние на потребителския интерфейс и всяко се нуждае от дизайн.
Помага за разделянето на две групи. Състоянията на взаимодействие идват от потребителя: задържане, фокус, натиснат и деактивиран. Състоянията на данните идват от системата: зареждане, празни, частични данни, грешка и успех. Един екран със списък, например, се нуждае от дизайн за това кога се зарежда, когато няма елементи, когато има един елемент, когато има стотици и когато заявката е неуспешна.
Фокусните състояния заслужават специално внимание. Хората, които използват клавиатура или превключващо устройство, разчитат на видим индикатор за фокусиране, за да знаят къде се намират. Премахването на контура на фокуса на браузъра без замяна е един от най-честите проблеми с достъпността.
Промяната между състоянията също е част от дизайна. Кратък, ясен преход от подразбиране към натиснат потвърждава докосването. Състояние на зареждане, което плавно се превръща в успех, казва на хората, че техните действия са работили. Резките скокове или твърде бавната анимация правят интерфейса ненадежден.
Практичен начин да избегнете липсващите състояния е да ги изброите за всеки компонент преди проектиране или да моделирате компонента като машина за състояния: набор от състояния и събитията, които се движат между тях. ExodeUI, който произвеждаме, работи по този начин. Вие проектирате всяко състояние и преходите между тях в един файл и вашият код изпраща събитията, които превключват състоянията в реалното приложение.