the reason for that is that we cant effectively detect when a transition has ended. Animations fire a animationstartevent which we can listen for and that way maintain a nice workflow of properly adding/removing classes on time.
One of the reason we sticked with this is that it provides the bare minimum, that is also supported by ancient browsers. More modern approaches would be likely starting to use the web animations API, which sadly though still isn’t that supported as it should be after all those years. Also the css animator is a bare minimum implementation for simple anims. If you’re looking for other implementations take a look at Velocity or try creating your own adapter for other libraries such as GSAP etc.
@brandonseydel what you described would be great although doesnt fit the current solution, which merely adds/removes classes at given timeslots. Your advised solution would have to be baked into templating and binding and offer a proper animation lifecycle. Which frankly would be cool. Im just not dealing with anims at all the last few months so I cant put time aside for that. I’d be super happy if somebody volunteers to take over the animation part of Aurelia. I can do the best to offer ideas and hints then