feat: implement client-side stateful overlays Closes #1027 and #1026 See merge request inject/frontend!875