-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp_main.py
49 lines (36 loc) · 1.41 KB
/
app_main.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
from typing import Any
from reactpy import component, html, use_state
from reactpy.backend.hooks import use_location
from reactpy_router import route, browser_router
from reactpy_router.types import Route
from utils.logger import log
from utils.fast_server import run
from utils.server_options import TAILWIND_OPTIONS
from pages import Dashboard, NotFoundPage, ProductsPage, SignIn, SignUp, UsersPage, PageContainer
from pages.components import AppContext, AppState, DarkModeProvider
def page_route(path: str, page: Any) -> Route:
element = PageContainer(page)
return route(path, element)
@component
def AppMain():
settings, set_settings = use_state(AppState())
location = use_location()
log.info('location %s', location)
return AppContext(
DarkModeProvider(
html.div({'class_name': 'bg-gray-50 text-gray-800'},
browser_router(
page_route("/",Dashboard),
page_route("/users", UsersPage),
page_route("/products",ProductsPage),
route("/sign-in", SignIn()),
route("/sign-up", SignUp()),
route("{404:any}", NotFoundPage())
)
)
),
value = (settings, set_settings)
)
# python app_main.py
if __name__ == "__main__":
run(AppMain, options=TAILWIND_OPTIONS)