No, 1 widget, 1 button, 1 layout. Use this widget in the component and feed it data. This way you have x individual instances of the same widget that behave the same way but each has unique data you can modify without even opening the widget - you do it directly in the scene.
This may or may not be relevant to the widgets currently blocking one another here, but it would, at least, make debugging and maintenance possible. I think the components are blocking one another somehow. I’ll try to post something a bit later.