actually, 0ad has docks. You should look how those work and if their behavior can be replicated.
In general, I would think most if not all of these mechanics would require adding JS components to the game or at least editing them. What we have is less flexible than you may think.
Also, adding buttons is no joke either. Unfortunately, it's a completely independent programming task.
I whish we had better tutorials for this stuff, honestly I couldn't even start by creating a new dummy component without asking here for a reproducible example.