EventComposer

Primitive #1

🔍 Problem it solves

When you add an internal event handler (e.g., for analytics or logging) to a component, you accidentally override the user's own event handler. Both need to run, and the user's handler should be able to call preventDefault() to stop internal behavior.

✅ Solution

Composes multiple event handlers into one. User's handler runs first, internal handler runs second. Respects preventDefault() – if the user calls it, the internal handler is skipped.

🧩 Used by components

Button, DialogTrigger, DropdownTrigger, MenuItem, FormField, Toggle, Switch, TabTrigger

🎮 Interactive demo