I'm thinking something similar using a web component library could be good. Maybe material or fluent based.