This actually feels like a very sane use-case for Web Components. Interesting journey from Vanilla JS to raw Web Components to tooling + Web Components.