
* upgrade to latest ruff * try to fix dep review * try to fix dep review (2) * upgrade black * upgrade black (2) * update allowed dependencies * update allowed dependencies (2) * update allowed dependencies (3) * wait between interim and final in yield test * remove previous commit, increase delay between yield * forgot to save on the time.sleep(1) removal * fix integration (maybe?) * fix pyi? * what even is going on * what is realityi? * test another fix for app harness * try to wait even longer? * force uvloop to be optional * downpin fastapi < 0.111, remove changes to test
128 lines
2.9 KiB
Python
128 lines
2.9 KiB
Python
"""Welcome to Reflex! This file outlines the steps to create a basic app."""
|
|
|
|
from typing import Callable
|
|
|
|
import reflex as rx
|
|
|
|
from .pages import chatapp_page, datatable_page, forms_page, graphing_page, home_page
|
|
from .sidebar import sidebar
|
|
from .state import State
|
|
from .styles import *
|
|
|
|
meta = [
|
|
{
|
|
"name": "viewport",
|
|
"content": "width=device-width, shrink-to-fit=no, initial-scale=1",
|
|
},
|
|
]
|
|
|
|
|
|
def template(main_content: Callable[[], rx.Component]) -> rx.Component:
|
|
"""The template for each page of the app.
|
|
|
|
Args:
|
|
main_content (Callable[[], rx.Component]): The main content of the page.
|
|
|
|
Returns:
|
|
rx.Component: The template for each page of the app.
|
|
"""
|
|
menu_button = rx.chakra.box(
|
|
rx.chakra.menu(
|
|
rx.chakra.menu_button(
|
|
rx.chakra.icon(
|
|
tag="hamburger",
|
|
size="4em",
|
|
color=text_color,
|
|
),
|
|
),
|
|
rx.chakra.menu_list(
|
|
rx.chakra.menu_item(rx.chakra.link("Home", href="/", width="100%")),
|
|
rx.chakra.menu_divider(),
|
|
rx.chakra.menu_item(
|
|
rx.chakra.link(
|
|
"About", href="https://github.com/reflex-dev", width="100%"
|
|
)
|
|
),
|
|
rx.chakra.menu_item(
|
|
rx.chakra.link(
|
|
"Contact", href="mailto:founders@reflex.dev", width="100%"
|
|
)
|
|
),
|
|
),
|
|
),
|
|
position="fixed",
|
|
right="1.5em",
|
|
top="1.5em",
|
|
z_index="500",
|
|
)
|
|
|
|
return rx.chakra.hstack(
|
|
sidebar(),
|
|
main_content(),
|
|
rx.chakra.spacer(),
|
|
menu_button,
|
|
align_items="flex-start",
|
|
transition="left 0.5s, width 0.5s",
|
|
position="relative",
|
|
left=rx.cond(State.sidebar_displayed, "0px", f"-{sidebar_width}"),
|
|
)
|
|
|
|
|
|
@rx.page("/", meta=meta)
|
|
@template
|
|
def home() -> rx.Component:
|
|
"""Home page.
|
|
|
|
Returns:
|
|
rx.Component: The home page.
|
|
"""
|
|
return home_page()
|
|
|
|
|
|
@rx.page("/forms", meta=meta)
|
|
@template
|
|
def forms() -> rx.Component:
|
|
"""Forms page.
|
|
|
|
Returns:
|
|
rx.Component: The settings page.
|
|
"""
|
|
return forms_page()
|
|
|
|
|
|
@rx.page("/graphing", meta=meta)
|
|
@template
|
|
def graphing() -> rx.Component:
|
|
"""Graphing page.
|
|
|
|
Returns:
|
|
rx.Component: The graphing page.
|
|
"""
|
|
return graphing_page()
|
|
|
|
|
|
@rx.page("/datatable", meta=meta)
|
|
@template
|
|
def datatable() -> rx.Component:
|
|
"""Data Table page.
|
|
|
|
Returns:
|
|
rx.Component: The chatapp page.
|
|
"""
|
|
return datatable_page()
|
|
|
|
|
|
@rx.page("/chatapp", meta=meta)
|
|
@template
|
|
def chatapp() -> rx.Component:
|
|
"""Chatapp page.
|
|
|
|
Returns:
|
|
rx.Component: The chatapp page.
|
|
"""
|
|
return chatapp_page()
|
|
|
|
|
|
# Create the app.
|
|
app = rx.App(style=base_style)
|