The same you always have? With HTML/CSS. Copy and paste sounds a bit derogatory, but it's pretty much what you're doing. You can also "templatize" things depending on your backend (card partial/template, etc).
What I like about my tech stack (go, tailwind, htmx, alpinejs) is the fact I can work entirely in HTML and Go. It keeps the work very focused and simple.
I render HTML from Go. I style it with Tailwind. If I remove styles from HTML then Tailwind culls the unused styles (I don't need to manage CSS). I use HTMX for some dynamic behavior (active search, lazy loading content/modals/slide overs/product details/etc). I use Alpine for client side state (drop downs, slide overs, toggles, etc).