New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
React to pydata-sphinx-theme theme change #69
Comments
This can also be enabled with the |
Maybe jupyterlite/jupyterlite#525 could also be relevant and apply to more apps than just |
Another idea would be to have a JupyterLab extension honoring the Which is what most light / dark themes use nowadays to choose a default theme on page load. Edit: tracked in jupyterlab/jupyterlab#8777 Although this could be done separately and would not sync the theme when a user switches from light to dark by clicking on the button. |
I wanted to work on it from our theme side and I have few comments to add here
That won't be sufficient as theming is not natively supported by Sphinx so the few theme implementing it ( Also as they are all doing it a different way, I think the best way to proceed is to expose a JS handle that themes can switch when changing the theme. by doing so you will be compatible with any theme as long as their maintainers are happy to support your extention. We are willing to work on it from pydata-sphinx-theme (pydata/pydata-sphinx-theme#745) but we are missing this interface. |
looking down the web it seems that I'm not facing any cross-domain issues when manipulating the content of the iframe via javascript. I tried the following code and it worked like a charm: var frm = document.querySelectorAll(".jupyterlite_sphinx_iframe")
var cssLink = document.createElement("link");
cssLink.href = "style.css";
cssLink.rel = "stylesheet";
cssLink.type = "text/css";
frm.forEach( frame => {
frame.contentWindow.document.head.appendChild(cssLink);
}) I think the next step for me is to change the css when a theme changed is triggered in the page. 3 questions:
|
Problem
Somewhat related to pydata/pydata-sphinx-theme#745
pydata-sphinx-theme has a theme switch allowing to go from a light to a dark theme. We could have the embedded jupyterlite respect the current theme flavor.
In order to do this, we need to tell JupyterLab app which theme to use:
Proposed Solution
For replite
For replite it's quite straightforward, we can simply change the URL to pass the right query parameter
?theme=Jupyterlab Dark
.For JupyterLite and RetroLite
We can probably force JupyterLab to expose its app object with:
And then use the
iframe.contentWindow.jupyterapp
object to access the themeManager and make it switch to the theme flavor that is currently used in the docs?Pinging @jtpio in case you have some ideas
The text was updated successfully, but these errors were encountered: