@startuml button_state_diagram
[*] --> normal
[*] --> disabled
normal --> hovered : on mouse enter
hovered --> normal : on mouse leave
hovered --> tapped : on mouse click down
tapped --> hovered : on mouse click up in (the cursor is in button)
tapped --> normal : on mouse click up out (the cursor is out of button)
normal --> focused : on focus
focused --> normal : on unfocus
focused --> tapped : on enter press down
@enduml