-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmenu.py
73 lines (59 loc) · 2.36 KB
/
menu.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
from typing import Optional
from nicegui import ui, app
import svg
def create_menu(page_title: str, menu: Optional[ui.left_drawer] = None) -> None:
pages = {
"Home": "/",
"About": "/about",
}
dark_mode = ui.dark_mode(
value=app.storage.browser.get("dark_mode"),
on_change=lambda e: ui.run_javascript(
f"""
fetch('/dark_mode', {{
method: 'POST',
headers: {{'Content-Type': 'application/json'}},
body: JSON.stringify({{value: {e.value}}}),
}});
"""
),
)
with ui.header().classes(
"items-center row duration-200 p-0 px-4 no-wrap"
) as header:
if menu:
ui.button(on_click=menu.toggle, icon="menu").props(
"flat color=white round"
).classes("lg:hidden")
ui.label("howis.jskherman.com").classes("text-md")
ui.space()
ui.label(page_title).classes("font-bold text-xl")
ui.space()
for page, url in pages.items():
ui.link(page, url).classes(
"p-2 text-white hover:text-white hover:bg-opacity-25 no-underline"
)
with ui.element().classes("max-[420px]:hidden").tooltip("Change theme"):
ui.button(
icon="dark_mode", on_click=lambda: dark_mode.set_value(None)
).props("flat fab-mini color=white").bind_visibility_from(
dark_mode, "value", value=True
)
ui.button(
icon="light_mode", on_click=lambda: dark_mode.set_value(True)
).props("flat fab-mini color=white").bind_visibility_from(
dark_mode, "value", value=False
)
ui.button(
icon="brightness_auto", on_click=lambda: dark_mode.set_value(False)
).props("flat fab-mini color=white").bind_visibility_from(
dark_mode, "value", lambda mode: mode is None
)
with ui.link(target="https://github.com/zauberzeug/nicegui/").classes(
"max-[365px]:hidden"
).tooltip("GitHub"):
svg.github().classes("fill-white scale-125 m-1")
# with ui.footer(value=False) as footer:
# ui.label("Footer")
# with ui.page_sticky(position="bottom-right", x_offset=20, y_offset=20):
# ui.button(on_click=footer.toggle, icon="contact_support").props("fab")