import dash_mantine_components as dmc
from dash_iconify import DashIconify
from dash import Dash, Input, Output, State, callback, _dash_renderer, html, clientside_callback
_dash_renderer._set_react_version("18.2.0")
theme_toggle = dmc.Switch(
offLabel=DashIconify(icon="radix-icons:sun", width=15, color=dmc.DEFAULT_THEME["colors"]["yellow"][8]),
onLabel=DashIconify(icon="radix-icons:moon", width=15, color=dmc.DEFAULT_THEME["colors"]["yellow"][6]),
id="color-scheme-switch",
# persistence=True,
color="grey",
)
app = Dash(external_stylesheets=dmc.styles.ALL)
app.layout = dmc.MantineProvider(
[theme_toggle, dmc.Text("Your page content")],
)
clientside_callback(
"""
(switchOn) => {
document.documentElement.setAttribute('data-mantine-color-scheme', switchOn ? 'dark' : 'light');
return window.dash_clientside.no_update
}
""",
Output("color-scheme-switch", "id"),
Input("color-scheme-switch", "checked"),
)
if __name__ == "__main__":
app.run(debug=True)