It sounds like you made things work with a hack instead of learning and implementing the proper way to do what you’d like. It’s hard to advise you how to deal with your technical debt since you aren’t sharing your code. Plus, it sounds like it may be more than a few changes. I’d suggest looking at the Voila gallery and find an example similar to what you’d like to do and then refactor your code to match that. Or at least an example that has a some of the elements you’d like. ipywidgets has a lot of interactivity to connect changes. Since you mention markdown and plots, I can offer the example I have linked here that includes those two elements where I also refer to other resources used in development. Also I saw a really cool example related to content here, I think. This link launches one of them in Voila. If adjust the URL after launch so you replace voila/render/exp2_sim.ipynb
and everything after with tree, you can use the dashboard to see the code.
Potentially you could fix your issue with an extension in JupyterLab perhaps? This discussion looks pertinent.
A different, related issue: I’m not understanding why you are now concerned with Voila or JupyterLab? You can use the classic interface or specify your users use it?