Yeah, this is probably similar to how I would structure it. Ultimately it seems the merger of the two was conceptually a higher element, Event, which then contains an internal action.
One of the good things about associated values is it lets you create better abstractions by finding the "wider grouping". I tend to encourage junior devs to think "what is the general thing I'm working with, define that, and then define its internal components". It tends to work better to define the overall abstraction first, and then associate details with it, than to try and compose a set of discrete elements that may not even need to exist, eg your Category type.
That isn't to say that composition is wrong by any means, merely that by trying to define the problem correctly, you work out what composition helps you, and what is overkill.