General structural abstractions for Bagel UI components