From ac23075ef03d53e2e41cd4c2e465128919ecd1aa Mon Sep 17 00:00:00 2001 From: Alek Petuskey Date: Sun, 8 Oct 2023 20:41:52 -0700 Subject: [PATCH 01/13] Added base template --- .../.templates/apps/basetemplate/__init__.py | 0 .../apps/basetemplate/basetemplate.py | 72 ++++++++++ .../.templates/apps/basetemplate/sidebar.py | 124 ++++++++++++++++++ reflex/.templates/apps/basetemplate/state.py | 13 ++ reflex/.templates/apps/basetemplate/styles.py | 17 +++ .../components/graphing/recharts/recharts.py | 7 +- 6 files changed, 228 insertions(+), 5 deletions(-) create mode 100644 reflex/.templates/apps/basetemplate/__init__.py create mode 100644 reflex/.templates/apps/basetemplate/basetemplate.py create mode 100644 reflex/.templates/apps/basetemplate/sidebar.py create mode 100644 reflex/.templates/apps/basetemplate/state.py create mode 100644 reflex/.templates/apps/basetemplate/styles.py diff --git a/reflex/.templates/apps/basetemplate/__init__.py b/reflex/.templates/apps/basetemplate/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/reflex/.templates/apps/basetemplate/basetemplate.py b/reflex/.templates/apps/basetemplate/basetemplate.py new file mode 100644 index 0000000000..c5484249ff --- /dev/null +++ b/reflex/.templates/apps/basetemplate/basetemplate.py @@ -0,0 +1,72 @@ +"""Welcome to Reflex! This file outlines the steps to create a basic app.""" +import reflex as rx +from .state import State +from .sidebar import sidebar +from .styles import * + + +def content(): + return rx.box( + rx.vstack( + rx.heading( + "Dashboard", + size="3em", + ), + rx.text( + "Welcome to Reflex!", + ), + rx.text( + "You can use this template to get started with Reflex.", + ), + width="100%", + align_items="flex-start", + height="90%", + box_shadow="0px 0px 0px 1px rgba(84, 82, 95, 0.14)", + border_radius=border_radius, + padding="1em", + ), + height="100vh", + width="100%", + padding_top="5em", + padding_x="2em", + ) + + +def menu_button(): + return rx.box( + rx.menu( + rx.menu_button( + rx.icon( + tag="hamburger", + size="4em", + color=text_color, + ), + ), + rx.menu_list( + rx.menu_item("Home"), + rx.menu_divider(), + rx.menu_item("About"), + rx.menu_item("Contact"), + ), + ), + position="fixed", + right="1.5em", + top="1.5em", + z_index="500", + ) + + +def index() -> rx.Component: + return rx.hstack( + sidebar(), + content(), + rx.spacer(), + menu_button(), + align_items="flex-start", + ) + + +# Add state and page to the app. +app = rx.App(style=base_style) +app.add_page(index) +app.compile() diff --git a/reflex/.templates/apps/basetemplate/sidebar.py b/reflex/.templates/apps/basetemplate/sidebar.py new file mode 100644 index 0000000000..000de480be --- /dev/null +++ b/reflex/.templates/apps/basetemplate/sidebar.py @@ -0,0 +1,124 @@ +import reflex as rx +from .state import State +from .styles import * + + +def sidebar_item(text: str, icon: str, url: str) -> rx.Component: + return rx.hstack( + rx.image( + src=icon, + height="2.5em", + padding="0.5em", + ), + rx.text( + text, + ), + bg=rx.cond(State.current_page == text, accent_color, "transparent"), + color=rx.cond(State.current_page == text, accent_text_color, text_color), + border_radius=border_radius, + border="1px solid transparent", + width="100%", + padding_x="1em", + _hover={ + "box_shadow": box_shadow, + }, + on_click=lambda: State.set_page(text), + ) + + +def sidebar_header(): + return rx.hstack( + rx.image( + src="/icon.svg", + height="2em", + ), + rx.spacer(), + rx.link( + rx.center( + rx.image( + src="/github.svg", + height="3em", + padding="0.5em", + ), + box_shadow=box_shadow, + bg="transparent", + border_radius=border_radius, + _hover={ + "bg": "#F5EFFE", + }, + ), + href="https://github.com/reflex-dev/reflex", + ), + width="100%", + border_bottom=border, + padding="1em", + ) + + +def sidebar_footer(): + return rx.hstack( + rx.link( + rx.center( + rx.image( + src="/paneleft.svg", + height="2em", + padding="0.5em", + ), + bg="transparent", + border_radius=border_radius, + on_click=State.toggle_sidebar, + _hover={ + "bg": "#F5EFFE", + }, + ), + href="https://github.com/reflex-dev/reflex", + ), + rx.spacer(), + rx.link( + rx.text( + "Docs", + ), + href="https://reflex.dev/docs/getting-started/introduction/", + ), + rx.link( + rx.text( + "Blog", + ), + href="https://reflex.dev/blog/", + ), + width="100%", + border_top=border, + padding="1em", + ) + + +def sidebar(): + return rx.box( + rx.vstack( + sidebar_header(), + rx.vstack( + sidebar_item( + "Dashboard", + "/github.svg", + "docs_url", + ), + sidebar_item( + "Settings", + "/github.svg", + "docs_url", + ), + width="100%", + align_items="flex-start", + padding="1em", + ), + rx.spacer(), + sidebar_footer(), + height="100vh", + ), + min_width="20em", + width="25em", + height="100%", + left="0px", + top="0px", + border_right=border, + ) diff --git a/reflex/.templates/apps/basetemplate/state.py b/reflex/.templates/apps/basetemplate/state.py new file mode 100644 index 0000000000..e4004e4b6d --- /dev/null +++ b/reflex/.templates/apps/basetemplate/state.py @@ -0,0 +1,13 @@ +import reflex as rx + + +class State(rx.State): + show_sidebar: bool = False + + current_page: str = "Dashboard" + + def toggle_sidebar(self): + self.show_sidebar = not self.show_sidebar + + def set_page(self, page: str): + self.current_page = page diff --git a/reflex/.templates/apps/basetemplate/styles.py b/reflex/.templates/apps/basetemplate/styles.py new file mode 100644 index 0000000000..7dc3060b81 --- /dev/null +++ b/reflex/.templates/apps/basetemplate/styles.py @@ -0,0 +1,17 @@ +import reflex as rx + + +border_radius = ("0.375rem",) +box_shadow = ("0px 0px 0px 1px rgba(84, 82, 95, 0.14)",) +border = "1px solid #F4F3F6" +text_color = "black" +accent_text_color = "#1A1060" +accent_color = "#F5EFFE" + +base_style = { + rx.MenuItem: { + "_hover": { + "bg": accent_color, + }, + }, +} diff --git a/reflex/components/graphing/recharts/recharts.py b/reflex/components/graphing/recharts/recharts.py index 214829319d..c4c518ec88 100644 --- a/reflex/components/graphing/recharts/recharts.py +++ b/reflex/components/graphing/recharts/recharts.py @@ -8,14 +8,11 @@ class Recharts(Component): """A component that wraps a victory lib.""" - library = "recharts" + library = "recharts@2.8.0" - lib_dependencies: List[str] = ["recharts@2.8.0"] class RechartsCharts(NoSSRComponent): """A component that wraps a victory lib.""" - library = "recharts" - - lib_dependencies: List[str] = ["recharts@2.8.0"] + library = "recharts@2.8.0" From 9e8d9818e8addf16f50f16b7a6fde33931c446f5 Mon Sep 17 00:00:00 2001 From: Alek Petuskey Date: Mon, 9 Oct 2023 14:11:48 -0700 Subject: [PATCH 02/13] Improve templating code and add base template --- .../basetemplate}/assets/favicon.ico | Bin .../apps/basetemplate/assets/github.svg | 10 +++ .../apps/basetemplate/assets/icon.svg | 37 ++++++++++ .../apps/basetemplate/assets/logo.svg | 68 ++++++++++++++++++ .../apps/basetemplate/assets/paneleft.svg | 13 ++++ .../apps/basetemplate/{ => code}/__init__.py | 0 .../basetemplate/{ => code}/basetemplate.py | 0 .../apps/basetemplate/{ => code}/sidebar.py | 0 .../apps/basetemplate/{ => code}/state.py | 0 .../apps/basetemplate/{ => code}/styles.py | 0 .../apps/counter/assets/favicon.ico | Bin 0 -> 15086 bytes .../apps/counter/{ => code}/__init__.py | 0 .../apps/counter/{ => code}/counter.py | 0 .../apps/default/assets/favicon.ico | Bin 0 -> 15086 bytes .../apps/default/{ => code}/__init__.py | 0 .../apps/default/{ => code}/default.py | 0 .../components/graphing/recharts/recharts.py | 2 - reflex/constants/base.py | 11 ++- reflex/utils/prerequisites.py | 8 ++- 19 files changed, 139 insertions(+), 10 deletions(-) rename reflex/.templates/{ => apps/basetemplate}/assets/favicon.ico (100%) create mode 100644 reflex/.templates/apps/basetemplate/assets/github.svg create mode 100644 reflex/.templates/apps/basetemplate/assets/icon.svg create mode 100644 reflex/.templates/apps/basetemplate/assets/logo.svg create mode 100644 reflex/.templates/apps/basetemplate/assets/paneleft.svg rename reflex/.templates/apps/basetemplate/{ => code}/__init__.py (100%) rename reflex/.templates/apps/basetemplate/{ => code}/basetemplate.py (100%) rename reflex/.templates/apps/basetemplate/{ => code}/sidebar.py (100%) rename reflex/.templates/apps/basetemplate/{ => code}/state.py (100%) rename reflex/.templates/apps/basetemplate/{ => code}/styles.py (100%) create mode 100644 reflex/.templates/apps/counter/assets/favicon.ico rename reflex/.templates/apps/counter/{ => code}/__init__.py (100%) rename reflex/.templates/apps/counter/{ => code}/counter.py (100%) create mode 100644 reflex/.templates/apps/default/assets/favicon.ico rename reflex/.templates/apps/default/{ => code}/__init__.py (100%) rename reflex/.templates/apps/default/{ => code}/default.py (100%) diff --git a/reflex/.templates/assets/favicon.ico b/reflex/.templates/apps/basetemplate/assets/favicon.ico similarity index 100% rename from reflex/.templates/assets/favicon.ico rename to reflex/.templates/apps/basetemplate/assets/favicon.ico diff --git a/reflex/.templates/apps/basetemplate/assets/github.svg b/reflex/.templates/apps/basetemplate/assets/github.svg new file mode 100644 index 0000000000..61c9d791be --- /dev/null +++ b/reflex/.templates/apps/basetemplate/assets/github.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/reflex/.templates/apps/basetemplate/assets/icon.svg b/reflex/.templates/apps/basetemplate/assets/icon.svg new file mode 100644 index 0000000000..b9cc89da9a --- /dev/null +++ b/reflex/.templates/apps/basetemplate/assets/icon.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reflex/.templates/apps/basetemplate/assets/logo.svg b/reflex/.templates/apps/basetemplate/assets/logo.svg new file mode 100644 index 0000000000..94fe1f5119 --- /dev/null +++ b/reflex/.templates/apps/basetemplate/assets/logo.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reflex/.templates/apps/basetemplate/assets/paneleft.svg b/reflex/.templates/apps/basetemplate/assets/paneleft.svg new file mode 100644 index 0000000000..ac9c5040a1 --- /dev/null +++ b/reflex/.templates/apps/basetemplate/assets/paneleft.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/reflex/.templates/apps/basetemplate/__init__.py b/reflex/.templates/apps/basetemplate/code/__init__.py similarity index 100% rename from reflex/.templates/apps/basetemplate/__init__.py rename to reflex/.templates/apps/basetemplate/code/__init__.py diff --git a/reflex/.templates/apps/basetemplate/basetemplate.py b/reflex/.templates/apps/basetemplate/code/basetemplate.py similarity index 100% rename from reflex/.templates/apps/basetemplate/basetemplate.py rename to reflex/.templates/apps/basetemplate/code/basetemplate.py diff --git a/reflex/.templates/apps/basetemplate/sidebar.py b/reflex/.templates/apps/basetemplate/code/sidebar.py similarity index 100% rename from reflex/.templates/apps/basetemplate/sidebar.py rename to reflex/.templates/apps/basetemplate/code/sidebar.py diff --git a/reflex/.templates/apps/basetemplate/state.py b/reflex/.templates/apps/basetemplate/code/state.py similarity index 100% rename from reflex/.templates/apps/basetemplate/state.py rename to reflex/.templates/apps/basetemplate/code/state.py diff --git a/reflex/.templates/apps/basetemplate/styles.py b/reflex/.templates/apps/basetemplate/code/styles.py similarity index 100% rename from reflex/.templates/apps/basetemplate/styles.py rename to reflex/.templates/apps/basetemplate/code/styles.py diff --git a/reflex/.templates/apps/counter/assets/favicon.ico b/reflex/.templates/apps/counter/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..609f6abcbeb0fec5157b54a36d7b2aeb759f9e1b GIT binary patch literal 15086 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 Date: Mon, 9 Oct 2023 14:16:21 -0700 Subject: [PATCH 03/13] fix precommit checks --- reflex/.templates/apps/basetemplate/code/basetemplate.py | 2 +- reflex/.templates/apps/basetemplate/code/sidebar.py | 1 + reflex/.templates/apps/basetemplate/code/state.py | 8 ++++++++ reflex/.templates/apps/basetemplate/code/styles.py | 1 - 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/reflex/.templates/apps/basetemplate/code/basetemplate.py b/reflex/.templates/apps/basetemplate/code/basetemplate.py index c5484249ff..1c8df571dc 100644 --- a/reflex/.templates/apps/basetemplate/code/basetemplate.py +++ b/reflex/.templates/apps/basetemplate/code/basetemplate.py @@ -1,6 +1,6 @@ """Welcome to Reflex! This file outlines the steps to create a basic app.""" import reflex as rx -from .state import State + from .sidebar import sidebar from .styles import * diff --git a/reflex/.templates/apps/basetemplate/code/sidebar.py b/reflex/.templates/apps/basetemplate/code/sidebar.py index 000de480be..e0377de81e 100644 --- a/reflex/.templates/apps/basetemplate/code/sidebar.py +++ b/reflex/.templates/apps/basetemplate/code/sidebar.py @@ -1,4 +1,5 @@ import reflex as rx + from .state import State from .styles import * diff --git a/reflex/.templates/apps/basetemplate/code/state.py b/reflex/.templates/apps/basetemplate/code/state.py index e4004e4b6d..20045644c8 100644 --- a/reflex/.templates/apps/basetemplate/code/state.py +++ b/reflex/.templates/apps/basetemplate/code/state.py @@ -2,12 +2,20 @@ class State(rx.State): + """State for the app.""" + show_sidebar: bool = False current_page: str = "Dashboard" def toggle_sidebar(self): + """Toggle the sidebar.""" self.show_sidebar = not self.show_sidebar def set_page(self, page: str): + """Set the current page. + + Args: + page: The page to set. + """ self.current_page = page diff --git a/reflex/.templates/apps/basetemplate/code/styles.py b/reflex/.templates/apps/basetemplate/code/styles.py index 7dc3060b81..ed329e5315 100644 --- a/reflex/.templates/apps/basetemplate/code/styles.py +++ b/reflex/.templates/apps/basetemplate/code/styles.py @@ -1,6 +1,5 @@ import reflex as rx - border_radius = ("0.375rem",) box_shadow = ("0px 0px 0px 1px rgba(84, 82, 95, 0.14)",) border = "1px solid #F4F3F6" From dfad32e980f3593846876b499d07d34cb5c440a1 Mon Sep 17 00:00:00 2001 From: Alek Petuskey Date: Mon, 9 Oct 2023 14:27:24 -0700 Subject: [PATCH 04/13] Fix default init rename basetemplate to base --- reflex/reflex.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reflex/reflex.py b/reflex/reflex.py index 0fb65f2338..97d800a79c 100644 --- a/reflex/reflex.py +++ b/reflex/reflex.py @@ -54,7 +54,7 @@ def init( None, metavar="APP_NAME", help="The name of the app to initialize." ), template: constants.Templates.Kind = typer.Option( - constants.Templates.Kind.DEFAULT, + constants.Templates.Kind.DEFAULT.value, help="The template to initialize the app with.", ), loglevel: constants.LogLevel = typer.Option( From 2c01538edab703b66c0e6b5b9d871f29ef224225 Mon Sep 17 00:00:00 2001 From: Alek Petuskey Date: Mon, 9 Oct 2023 14:27:29 -0700 Subject: [PATCH 05/13] Fix default init rename basetemplate to base --- .../apps/{basetemplate => base}/assets/favicon.ico | Bin .../apps/{basetemplate => base}/assets/github.svg | 0 .../apps/{basetemplate => base}/assets/icon.svg | 0 .../apps/{basetemplate => base}/assets/logo.svg | 0 .../apps/{basetemplate => base}/assets/paneleft.svg | 0 .../apps/{basetemplate => base}/code/__init__.py | 0 .../code/basetemplate.py => base/code/base.py} | 0 .../apps/{basetemplate => base}/code/sidebar.py | 0 .../apps/{basetemplate => base}/code/state.py | 0 .../apps/{basetemplate => base}/code/styles.py | 0 10 files changed, 0 insertions(+), 0 deletions(-) rename reflex/.templates/apps/{basetemplate => base}/assets/favicon.ico (100%) rename reflex/.templates/apps/{basetemplate => base}/assets/github.svg (100%) rename reflex/.templates/apps/{basetemplate => base}/assets/icon.svg (100%) rename reflex/.templates/apps/{basetemplate => base}/assets/logo.svg (100%) rename reflex/.templates/apps/{basetemplate => base}/assets/paneleft.svg (100%) rename reflex/.templates/apps/{basetemplate => base}/code/__init__.py (100%) rename reflex/.templates/apps/{basetemplate/code/basetemplate.py => base/code/base.py} (100%) rename reflex/.templates/apps/{basetemplate => base}/code/sidebar.py (100%) rename reflex/.templates/apps/{basetemplate => base}/code/state.py (100%) rename reflex/.templates/apps/{basetemplate => base}/code/styles.py (100%) diff --git a/reflex/.templates/apps/basetemplate/assets/favicon.ico b/reflex/.templates/apps/base/assets/favicon.ico similarity index 100% rename from reflex/.templates/apps/basetemplate/assets/favicon.ico rename to reflex/.templates/apps/base/assets/favicon.ico diff --git a/reflex/.templates/apps/basetemplate/assets/github.svg b/reflex/.templates/apps/base/assets/github.svg similarity index 100% rename from reflex/.templates/apps/basetemplate/assets/github.svg rename to reflex/.templates/apps/base/assets/github.svg diff --git a/reflex/.templates/apps/basetemplate/assets/icon.svg b/reflex/.templates/apps/base/assets/icon.svg similarity index 100% rename from reflex/.templates/apps/basetemplate/assets/icon.svg rename to reflex/.templates/apps/base/assets/icon.svg diff --git a/reflex/.templates/apps/basetemplate/assets/logo.svg b/reflex/.templates/apps/base/assets/logo.svg similarity index 100% rename from reflex/.templates/apps/basetemplate/assets/logo.svg rename to reflex/.templates/apps/base/assets/logo.svg diff --git a/reflex/.templates/apps/basetemplate/assets/paneleft.svg b/reflex/.templates/apps/base/assets/paneleft.svg similarity index 100% rename from reflex/.templates/apps/basetemplate/assets/paneleft.svg rename to reflex/.templates/apps/base/assets/paneleft.svg diff --git a/reflex/.templates/apps/basetemplate/code/__init__.py b/reflex/.templates/apps/base/code/__init__.py similarity index 100% rename from reflex/.templates/apps/basetemplate/code/__init__.py rename to reflex/.templates/apps/base/code/__init__.py diff --git a/reflex/.templates/apps/basetemplate/code/basetemplate.py b/reflex/.templates/apps/base/code/base.py similarity index 100% rename from reflex/.templates/apps/basetemplate/code/basetemplate.py rename to reflex/.templates/apps/base/code/base.py diff --git a/reflex/.templates/apps/basetemplate/code/sidebar.py b/reflex/.templates/apps/base/code/sidebar.py similarity index 100% rename from reflex/.templates/apps/basetemplate/code/sidebar.py rename to reflex/.templates/apps/base/code/sidebar.py diff --git a/reflex/.templates/apps/basetemplate/code/state.py b/reflex/.templates/apps/base/code/state.py similarity index 100% rename from reflex/.templates/apps/basetemplate/code/state.py rename to reflex/.templates/apps/base/code/state.py diff --git a/reflex/.templates/apps/basetemplate/code/styles.py b/reflex/.templates/apps/base/code/styles.py similarity index 100% rename from reflex/.templates/apps/basetemplate/code/styles.py rename to reflex/.templates/apps/base/code/styles.py From 6e2167c379e489523751dfc58511acea54b71fd5 Mon Sep 17 00:00:00 2001 From: Alek Petuskey Date: Mon, 9 Oct 2023 14:30:18 -0700 Subject: [PATCH 06/13] Remove togglable sidebar state code --- reflex/.templates/apps/base/code/sidebar.py | 1 - reflex/.templates/apps/base/code/state.py | 6 ------ 2 files changed, 7 deletions(-) diff --git a/reflex/.templates/apps/base/code/sidebar.py b/reflex/.templates/apps/base/code/sidebar.py index e0377de81e..ce14175897 100644 --- a/reflex/.templates/apps/base/code/sidebar.py +++ b/reflex/.templates/apps/base/code/sidebar.py @@ -67,7 +67,6 @@ def sidebar_footer(): ), bg="transparent", border_radius=border_radius, - on_click=State.toggle_sidebar, _hover={ "bg": "#F5EFFE", }, diff --git a/reflex/.templates/apps/base/code/state.py b/reflex/.templates/apps/base/code/state.py index 20045644c8..defef88a6d 100644 --- a/reflex/.templates/apps/base/code/state.py +++ b/reflex/.templates/apps/base/code/state.py @@ -4,14 +4,8 @@ class State(rx.State): """State for the app.""" - show_sidebar: bool = False - current_page: str = "Dashboard" - def toggle_sidebar(self): - """Toggle the sidebar.""" - self.show_sidebar = not self.show_sidebar - def set_page(self, page: str): """Set the current page. From b48854a1aa7a928ec273a60e94acac8563aa6711 Mon Sep 17 00:00:00 2001 From: Alek Petuskey Date: Mon, 9 Oct 2023 14:40:30 -0700 Subject: [PATCH 07/13] Change favicon.co --- .../.templates/apps/base/assets/favicon.ico | Bin 15086 -> 4154 bytes .../apps/counter/assets/favicon.ico | Bin 15086 -> 4154 bytes .../apps/default/assets/favicon.ico | Bin 15086 -> 4154 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/reflex/.templates/apps/base/assets/favicon.ico b/reflex/.templates/apps/base/assets/favicon.ico index 609f6abcbeb0fec5157b54a36d7b2aeb759f9e1b..a22a7e0bd9bd1ddf4839e314f8ee912166d48030 100644 GIT binary patch literal 4154 zcmb7H3sjRw7M}S-+_Shs0*VAgP=wZ{$BJ8d8jy#Ao?TRY6cb*RRjOT%vdBXS5I_(g zv{gh8h^R#ul&-JpS-VuMvO*D$Rs|G`)v6F4QSwd*$iH`f2nIyg{W)Le&YgSjckj&n zGyDi)_;avFh@RaI60GZm7rPNzc>i3FD(K8!D1yof8Ss&L_f12`=)5$9!P;Vtp;I4vOo#{<6H zxf7R`mg1dz_u_*6`|-|#0$g(F5Wf7w54f$Z4R>~R;iRM_?Be2rPM<#gPX04z&Y+f- z7JLZ&_Z1f6oQw>dxn&C#9~Vc(Z`wq~`ubAh`SYnQk&#qFL zF*ul&5VqE2eMpE&7@yA;1O>C#ELgw}^YUg#E%alrnm3Ov@bqG@_w!>%f_}x^kJ)R3 zgV|A^hMBBiyT)X*FpMQy62#gh5KzTX)3-2>Jv}|+@{@VLa^(u%RZu{s#>B9a0~Sx% z;PlZ%q2q^UE2le{ubOJd3AMK8hT7P1mQUevmRkUv{Gz(NpbaL`<=D3b(Xz5?b(_!YA7}3oUJ&q3&MHY3K`ffr+EZx-+4&lbnWQ(po{$-#qf@Lz-4&+prZMS+2=xVf&T z(L4v z#yxh*beC8gM_$}VpZq?1aS*FaAi(8Ej^M_|#!)%^+}MbZLVjNaEjAHa+M1_);5vJ^ z-_j+yUV*D~Jp2XQJ^h8*9t3{j0AaTKLSc@le>jXmA7p5=KnFIU^Mf%zL9Tb;>fOG< z!Kt%9nJqBqnWqE=nH*fbnkp+P8O878}tCL6 zI+B*oRmtV`W9wshU_bWW{{`@n;nxE<0oh}(^(sa;)*txmPp4;bw|II`r%#?7#oqvX z@!!Xe;V73sQb*Fo7Am=-&fst0AT4NJcI`9(`BEp56FHgDmVE9$?^ z$l}KHy{YW&xp<^_5Xigm72Nl$LYGtJ=~;xop44lI&$Rvh3@4dm_45w85B7l`=C~iA zRVe9>#@qC>>o=IW(1We9FR4WhHJya|1-^Vrl$JJ%|9V3M7RAQmFmEsFL}m_`*c$sA zHabN#9ysY)Kx)jfv*pBxw?83 z|8}Uq1pYtS6ug+K6mRE(ZM}h$v?Lxup9bFJr_TZHbl2Txrsnn=x9HA0O(XlkV9T^d zbEr`$>(1unaW{vDQAbM;kK!k5aiXFE@5oHU=kg1v7WF*4DSF~U#u#=ay64b*gDM*%0mmyfSpz4`|K zOSv2glmCv-7wk3Hs8n^v{zM+)*V3}bzcICHp?)3IuahZgB9r>bm>$+>EI;vwd!g=M zUlp3K*_McpA3J8e{TaDODn-$$N%+Fo`^|{0fq!6_o5Uo0zT?&%1`=5RPI%u4h}?1O zE~6)VWPr>G*c;~oXVmrTuZzs8E|lX^_&yl#vGtyhst*)T0{;Ju@DIl^#M6;GQLdnM zN+kg9Is$nAhIA^1lUb8-_^%u&nY1rIV?1g`=NQ08my3>0fb~B9AFgQrVw-r4I z|1gh$=@01*c7}WnabW%barIEygj~_qxAK#L==s4&DU}Am+49s7gS3XY47VYNaax0& zv9DgId!~>|7rm2sc<^j~A$oqNiKTkk8vu9OH~K!^HOQqF&biuty}lOqJ)pl9_C@V0 zBal8BBR0gA_yF%!*fU2}y}kZFeg8e{P*T$Sq=35Her3KpTWf1go;KYzecse$+J5hz zX$Q27+|+E^(cEm>+1hH_4sFlFho;>G4<0c64$^{cXG@Fe{pxBH@@?~LQ`5NIFvdIs r2>HqovIm$yLFjis4uJ*j2*gIRvEEo7Yx4x+5RkY8I^ZA}L@4vW*wrfC literal 15086 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 literal 15086 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 literal 15086 zcmeHuX_QsvnJ&GYfI8zo`|LB%^IXHJd89_D2`CCEsA4LrpcrM4Nf8hcP!R>3VvKQ$ zL1Q|OiMATMO`OuLiJCSJF;Ua$q%+t_?!7B9_pUtm`Sv-dC<<`so7F2nE^9sPea_jt zzUOd(Exx?iD%gV|mVh`~F@fQMr!}uAw9U#nN9y}U|+ll{8{4MjI$nF1- z>pg@_>>@snMx*fge1x9}z)$%61q9*s2jK}u;7gSuP}zz=MJv3iT6ki0@T7X+EnNn0 zW{97A;0`sx9jJxNUjtX5o}b&`j?RWBu^688N@5k<$zix-g9N`zEQ2RG0(W8<&PYF; ze%|BFz~hO-jYwd>Klz~x-5?$W^hpc4;GsrW=9Z8vL3FEF*uu6!jfo%9B73pwHD^8V~{iZ zA$bR2v^K+Fu7yFahC!+0=XOZ$MKFanK~5imIr}BZ#b1CFIRIl|mwGg%ZiT7%%P_{S zhTgFd22&Q2DGAvWgUJ*j!Z67}NU|SZu8H7GjPKPzAVj{-9A^tTTl}zE1F+fzLa^E+ zusCC|q^UP^E`_^o6Ku&ID4`yhi?_nsbPtr`gD|<~L89y>xrV5QQLcqinE}Z@8z$c> zn3IQ~RNV_p&EG>#-NZGx0#f)e=Y9ue@CZz$cXO>)Q`XhwTmo566G@omI1%M}n7X3s zPhk$~QSi4>M{Ja})k^NRAZ&JiN8UDj9Ck+%HfIL5;@R*G-V9IILD)-I!J1wJYt6NA zbUz78$+eK}bE$vL9IJ`4Yb1D-n_*HqVR9^nIkX*?@-M^I`Ye>{hhR$H0#o8v$ffr| zY5FJPSxC{noV&QciuY!T68^n3ksxB^pFEAbSc^b_a<4l&0Vm`ov;d+x`=LA?ou(rJnTj%$ol-)`h%!DF0l5Y)B!SfO#mFJ&0 zlfR!ju2^8R*kHFh)Ok2K4+q!4NxgBnGO)NSDE|RCXB~mJ?Rt0{55ZY`4eWI%V5`3k z*5Fn+t&8C>5mFw;LD-E;h~=;uM_`fGK(?-jIk=Dd_C-~Pl++38rML;x2)& zdlxeM-bB^*H&M6Y6_l_30n(%IBD(6|;Hh~8PRDlGw5ws)j;XL|*1)D&4{OmTC`CIU z6~b5|E(?Ww*leQhGdW-0IqYkoU;I#%`OGrkZn|Llmrd^e6G5BZiM8nPRA+hEeL(+1L$i^_?BsYbSAQ|<12Dr}P@AWwOn+B4k%|oYN zD;W(u8u^_JBW-A;cP$p&_B_I~_Rw}NfQfcpY4`$?yMGT~^`o3~3ryM!LA#+XCQ6Ac zOqwc4ni|iGh3V6Jp*3$qc<4vS zT>N90quZd@^O>jTv&vwZz@1#A&&z+J{Pi$d45*%4i39g-LHnF~M7)0Z9rQgK_aeRb zBX}$BBmV@ndH#BxS)Gec6M{xl3%TSl{M_eK%`G_pq8ezXx51zvg}dV!lZoTR7(Dz`2<1TGaQ)$bUI{`pc0HI}r91!#86OQdg3H&3(}5 zQqbw#goE%xt4l(|XPBesad=1G#&qupil$W|Z0>`DzC&`|zac*Q0t~LD)SE12@1yL6 z-b|AHXXVfREfc5aA@~y}@^@-bKR<$lCx_5GzZ}I;2O_=<`R_(z|8L-{|0*>4QfT!d zB1j}qWT=O^`g-^`{2a!rYcX|tH4>H%gj{QAdw+n;mUm%JY=KT+L+)X67xrf2o-ORb z&nADty?}|f)FkVmxX6D&7zZC1#O#HYD2b83KLdaBrAS=)AGH7XL&Il&k*OvJsR{b% z#qh3q2e$slaiOsdQFA@YT=U`Yc#L}UOE?;iKx=HK>=Q5;=pP%b)SXlIa-#lzn*PYN zO=h7d0{Jy4tb@s{h2qhmVIlcHxE!+=)u1F{M$3u`Sw!+qS7?$R% zVQ#z*?&UATv+hTj=3550REZhxR`|O* z^W0D01Kbakzr{11^7rDcpI-lxLZYXu^l!%rV6FzeoO$BEI7v5IIO*L*Im@ z?;%*aAB45}4wN=*Lr+^X`ewz@J2QcvfjOvH^9`hSd5uS#RQ`GW5qr2W53z?&@ps^chdVH5Spw;D@=tpa>Kx<#{V6=X4oGW(LI1)yx)yh$dedVl+4lkS0arlJ zxJ@t74jJh`(S{l)_&uMMztA65hbHpp8kl4a{r{c?{_)Gh!t^gnP!2 zxQhHc?t^0%C>L*(;m`cu&V$#YQUPyQCyRJ1HsaO0zm=vxs%rdmca>!VLS zhUCGYz}tEo_hTua0rY`PQD~(w?Mnn2W1PNQ3AB!GSZ9BoYw`-(M*6V)k{DVS)uVR( zaa7*)Yq)38|6#1JXWqnMr0**H_S1Ao_;2U-pU=f#-3M|J`Co+AK^ZqaR)cvff+(pr zAzk4`boMGFujKx1zJFqMgK5kxLOIt zRc`VhL300FjE8R|cgo%9Q+W&SIsWwF7)NQ1Nfhb(U}^sz5?h}`?}kRq+fasz+4E7c z`z4fK^*VD|OX$ZH^FG>AK8Jy2I&I?hFF43fW?7h?nc8s<%YfaLa9(X^r)9ZQQ*+BFB+ zZO@|O`X4i&vI<(6wv=-h{0*ns(f@b;vzF-br6;3UJZeW>vk^5-ZlwB0P<-$m_?m7| z`D-NlZ_N8?jXbLQA5*y-P3^Fozroza`^ap29@PulP}RlfNZSHb?syTE$KGQuk1?|O zugJfkLzKVObpbk;>Tu_iAuL&CMMJBRa}fN8QGC^p5NP@$^JXoKT^R$LTOlhQ#4P50 z`WRU`Nf| zH|9M5uB95>^@JbGRwDfMqImzmB3Az%;(^yu8vh}xGH;=_>>bpVzsutX zs44vjwN1ZA_2_R=cFAjq%@{^1T?{vK!0Gm*Xgcvbq&GjQ+FC7hJ$m&S@K?|u%3th@ zQ~Zl?_Y+>M7?IIR{>{w_$`=eEd*D@M*8UvX6~9F7x{uJX^?#yi=O59$`;VAGH17Ui zsNervRBV3*rL(r7B2kTGq!GU4N>r_U5i`EX_`mylXzeYuKlFu!{iGjcFihOPA`U-y z{C?K`JFY)Puu*?{mKWjPCp{P$HDhMG0Ua$08agXcJa!Edqqicl@(v`&?nh?BqbS|{ z4=CIA4EN^KsMz=j%H|(KW%Ur65)CK|w;~i-g0h(>(R{=2P`2-7=AMV?Pgg)E<(^*# z`VfZCVSj|JEIhjk$8kS`_S5D*A9IF_aNkpIjE%|YnWaa2y$&svdQ@kv$d(6DR#}4b z+D6ni_M)z7G3pzap}uYzs>>FmBH4%9L>KCrx6W{%R?qwjS{OIf9seopGxqWM)=Jxx z;PWf*KhXA^vY+Dl`^om_T>K0AWAmJkd80*m;5ipI?~<@+s0ed*uyKk?? z=HvZXd;Kbm9NB>tN3O%N>%M};N575v$6iC<@gJl2h7Zwo^q1&5_7OU6{vBrA_;Zx( z`Zn{>yP$Q?BzNX0OpL*pZxg=TnZCnk^FIYwRo?l1t8&lJ!D71z_1)8O*%uV-y4{Y= zH&c&ph+@SxRaktm6Z5Ye!rcAq(Yyb0bR9T>nFmjz<(enablrE+aNWzOIr1{f_WvWI zYfr+_z7K}TLTKy_&?p)D9YOjWPV&yhU#I#1K9`ItGLnf{8R zux@83m;+M$&{^oWS>goqKuR9w7e>KsD zPSl;VotwBOYJNh*r?hiozX`oHN}Pwu%o?JFw!}ugW-iO*q?}#k%Ur17EHOtX3Eo2H z!cXIVrM)~&Zwj{abLfvMcV2%szUsaZ`ouL5zvuP|=aA>G&Ox<#wgJjM_ z@a4I>NBMkJWuD`Gy1fyy7jnr%%z@`;@t@WD>1p`~UOT>r#rcH!6y~7jh}7RW4<1cK zZY(jbu-gJ+9+M&LqCoz8F<({RC+LbQcm6#!<`sYU)Nhmci~8xCq6Xu2Gyk90pK*=_ z84H)^GMCph2VL?RK!!d8NPI_xbHeL4zj`!f5Al#&+M8wOc_Wb7PU z0=euUq|hh~tk3G%gJWP%j*&e$QuI=oGRGjruU30+jM0NIvYxE>UCi7aYs}2wNc06I z`X&7c=t; zvbhtoa~YKMQP^fYMGjwO9}@e18otf?|6}aWnxF4^DWi{TIb?l4SN}p{%$9n;O_G|dN zUu93o>j*Dk{6_<#M&Ylp9!(#`L?26Hk63o~ zwJ2YEFKi{7;cUMX(bXR^-?m=uTaa1zmszhh6*a>!y%$E$0l50#f+2MyrrX#Dk$oHq z=5%aH_P4PPXJYPH?U~^7KEyF6k3ZS3F|yC4ZEP*NM>ld!D&Q{Pj_Am{^vCD0e$PCF zj`1Xqde*`9QV;ugo`h6!6VAV|6-DwUga%(@?)3}IRj}tvtzYJ22l`Lv9-r}C!LL$` zn6thYi`VtBo*jn2iZw3gXeHKPbnG7xy#%7Btz{isslExe?kCu*0)X__wvJ&p7*^fwAHc?D|H8VwWR6@&>FWJ99OA(QiP%c3h^P zFn%F6C~z=4H0a+_g_W1IA{FNN^=lB__$K=eS23^9P0WL(<8D~yKE%GLW@LOrhz-8X z9>7}|dsVac%ic)FF*%*f`^uj%e!-tF)OO9ROV8h0iQ!Aykc_$zs9%ZD#y8+ybU&gy zUPfU3OK>wsCixek)Ygc2=R*h#JPn#Ir`riCaT?gUco0xNQ6=A_8 z#TedEk9fk0VB;Xie+9vHPs1_x7^bH;VX9{V0_F_LLaiuS{3t?8pQG(v&-t@nV-Pj7 z$@QAt8c){0g6}`B2V#8ZbS&DI#HvfHkjT(xG!Gzj@xLIn_FM37eh$W#8zEI+i&WJH zbT-wYr?U!8!-o-H&HlaOE!>l39ADJlMcut1|4$g7^A|h>2cZLI=QIp%k7D)iERv-P zBJBf+Z2A|tx{t6=>Q1-^?t*L1-SEtP6tM*lp<`h``Ulf!8av3G>q{`P=Abvm7zrWxHU>QQs~6V!z}S^KNv_@ZW0s5zZ|{|Vg_<4?>_D2}OEw$p>PdlD$F zl#%FKK>cSQmB>q}bqwYr*h{4~un&m(ZkhQA>Nj19`RhthIdTx0T`#d`l|93}R>YPQ z*WirxKgamPm)f!MiXiJLtZDVmM|{I~Ai3J|<9n%Rq6WnA_3SAvegvf(zk-=7%22*& zGs>=f9j5pouVLPG-2PDy&L;nfhUMlVyaWxoftGfXJ$n~&th-(fE=^F*wF z=(x5zDaH7|nmv_!5omk|C97{m`OFfO%)1N~2WczfL%dGx0})%F(!n$4pI`rpYhbZo zgw>bH*uLL^M%HAqeRGi7@O}Dx4y(+-OKpUB~Sj`<7uTOAi--CiRuztW0X zEvzZjF_%4q{UI&g%&#v)WzS|*_wGVf`z5F-8$w;Y6Qw2VQMdYel<$3oz8`Bg>=D&- z|DCFrokRa8$iHBRtr@PE(BaTY8+P9A#@b_L zSax_W7GAX$eFqMq=g>)XT>Bj~U-x~~U-KHWyPrc~A#GxO0qujxd3(9{nRlh^b9*m0 z_PNHNxc9~QA|K{pZQmQ63ODnqj*uRiM?qx2KzM(|5=vJ9!jT@9}5nj9YOl9IfO$Yo)>WH`@-+JV?gzHh0QAaEt#c!?_@LMtVYJDv)FIB7jp6%;way@S;km7&U`?Kewj1Umz6WF3!TA0WzW4A=_DtNxYm}V1?FZ?1a+6Ma(svLo{<{HLd zHv0N;$fbv&^K6E__DK3Ry=2{KoqZo4w>D};@ zT@735Huju~epAMx6Yf`dE@Bj$+kn2&EYb~g*}HTfEG<{TT7MYf)MmKZtD>h*Q1Cg= zdcTKp)mRd#<_-kcJ`LNVlW>V=X6q>8vyaigY3K7w#0{s9Z{hgDHrd@;EL;~t@vL@u z`)-1{VilCqjY#)ghMB8ZBGS)ywkUUDe;eW)9Hn04nv$aY+b$imy1TO$8S_Y3)}{GGgi zw-GCMxX?4&g7&c;Xj*dzs)kP@)_=45?wkHB@)P&x?7RjZe-XS91D|PpCylunIoilL zwvn~9NdCDcY%B8-yeB{ZKU!qwNcdUh!90ao Date: Tue, 10 Oct 2023 12:25:30 -0700 Subject: [PATCH 08/13] Change favicon --- .../.templates/apps/base/assets/favicon.ico | Bin 4154 -> 4286 bytes .../apps/counter/assets/favicon.ico | Bin 4154 -> 4286 bytes .../apps/default/assets/favicon.ico | Bin 4154 -> 4286 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/reflex/.templates/apps/base/assets/favicon.ico b/reflex/.templates/apps/base/assets/favicon.ico index a22a7e0bd9bd1ddf4839e314f8ee912166d48030..166ae995eaa63fc96771410a758282dc30e925cf 100644 GIT binary patch literal 4286 zcmeHL>rYc>81ELdEe;}zmYd}cUgmJRfwjUwD1`#s5KZP>mMqza#Viv|_7|8f+0+bX zHuqusuw-7Ca`DTu#4U4^o2bjO#K>4%N?Wdi*wZ3Vx%~Ef4}D1`U_EMRg3u z#2#M|V>}}q-@IaO@{9R}d*u7f&~5HfxSkmHVcazU#i30H zAGxQ5Spe!j9`KuGqR@aExK`-}sH1jvqoIp3C7Vm)9Tu=UPE;j^esN~a6^a$ZILngo;^ zGLXl(ZFyY&U!li`6}y-hUQ99v?s`U4O!kgog74FPw-9g+V)qs!jFGEQyvBf><U|E2vRmx|+(VI~S=lT?@~C5pvZOd`x{Q_+3tG6H=gtdWcf z)+7-Zp=UqH^J4sk^>_G-Ufn-2Hz z2mN12|C{5}U`^eCQuFz=F%wp@}SzA1MHEaM^CtJs<{}Tzu$bx2orTKiedgmtVGM{ zdd#vX`&cuiec|My_KW;y{Ryz2kFu9}=~us6hvx1ZqQCk(d+>HP>ks>mmHCjjDh{pe zKQkKpk0SeDX#XMqf$}QV{z=xrN!mQczJAvud@;zFqaU1ocq==Py)qsa=8UKrt!J7r z{RsTo^rgtZo%$rak)DN*D)!(Y^$@yL6Nd=#eu&?unzhH8yq>v{gkt8xcG3S%H)-y_ zqQ1|v|JT$0R~Y}omg2Y+nDvR+K|kzR5i^fmKF>j~N;A35Vr`JWh4yRqKl#P|qlx?` z@|CmBiP}ysYO%m2{eBG6&ix5 zr#u((F2{vb=W4jNmTQh3M^F2o80T49?w>*rv0mt)-o1y!{hRk`E#UVPdna6jnz`rw dKpn)r^--YJZpr;bYU`N~>#v3X5BRU&{{=gv-{1fM literal 4154 zcmb7H3sjRw7M}S-+_Shs0*VAgP=wZ{$BJ8d8jy#Ao?TRY6cb*RRjOT%vdBXS5I_(g zv{gh8h^R#ul&-JpS-VuMvO*D$Rs|G`)v6F4QSwd*$iH`f2nIyg{W)Le&YgSjckj&n zGyDi)_;avFh@RaI60GZm7rPNzc>i3FD(K8!D1yof8Ss&L_f12`=)5$9!P;Vtp;I4vOo#{<6H zxf7R`mg1dz_u_*6`|-|#0$g(F5Wf7w54f$Z4R>~R;iRM_?Be2rPM<#gPX04z&Y+f- z7JLZ&_Z1f6oQw>dxn&C#9~Vc(Z`wq~`ubAh`SYnQk&#qFL zF*ul&5VqE2eMpE&7@yA;1O>C#ELgw}^YUg#E%alrnm3Ov@bqG@_w!>%f_}x^kJ)R3 zgV|A^hMBBiyT)X*FpMQy62#gh5KzTX)3-2>Jv}|+@{@VLa^(u%RZu{s#>B9a0~Sx% z;PlZ%q2q^UE2le{ubOJd3AMK8hT7P1mQUevmRkUv{Gz(NpbaL`<=D3b(Xz5?b(_!YA7}3oUJ&q3&MHY3K`ffr+EZx-+4&lbnWQ(po{$-#qf@Lz-4&+prZMS+2=xVf&T z(L4v z#yxh*beC8gM_$}VpZq?1aS*FaAi(8Ej^M_|#!)%^+}MbZLVjNaEjAHa+M1_);5vJ^ z-_j+yUV*D~Jp2XQJ^h8*9t3{j0AaTKLSc@le>jXmA7p5=KnFIU^Mf%zL9Tb;>fOG< z!Kt%9nJqBqnWqE=nH*fbnkp+P8O878}tCL6 zI+B*oRmtV`W9wshU_bWW{{`@n;nxE<0oh}(^(sa;)*txmPp4;bw|II`r%#?7#oqvX z@!!Xe;V73sQb*Fo7Am=-&fst0AT4NJcI`9(`BEp56FHgDmVE9$?^ z$l}KHy{YW&xp<^_5Xigm72Nl$LYGtJ=~;xop44lI&$Rvh3@4dm_45w85B7l`=C~iA zRVe9>#@qC>>o=IW(1We9FR4WhHJya|1-^Vrl$JJ%|9V3M7RAQmFmEsFL}m_`*c$sA zHabN#9ysY)Kx)jfv*pBxw?83 z|8}Uq1pYtS6ug+K6mRE(ZM}h$v?Lxup9bFJr_TZHbl2Txrsnn=x9HA0O(XlkV9T^d zbEr`$>(1unaW{vDQAbM;kK!k5aiXFE@5oHU=kg1v7WF*4DSF~U#u#=ay64b*gDM*%0mmyfSpz4`|K zOSv2glmCv-7wk3Hs8n^v{zM+)*V3}bzcICHp?)3IuahZgB9r>bm>$+>EI;vwd!g=M zUlp3K*_McpA3J8e{TaDODn-$$N%+Fo`^|{0fq!6_o5Uo0zT?&%1`=5RPI%u4h}?1O zE~6)VWPr>G*c;~oXVmrTuZzs8E|lX^_&yl#vGtyhst*)T0{;Ju@DIl^#M6;GQLdnM zN+kg9Is$nAhIA^1lUb8-_^%u&nY1rIV?1g`=NQ08my3>0fb~B9AFgQrVw-r4I z|1gh$=@01*c7}WnabW%barIEygj~_qxAK#L==s4&DU}Am+49s7gS3XY47VYNaax0& zv9DgId!~>|7rm2sc<^j~A$oqNiKTkk8vu9OH~K!^HOQqF&biuty}lOqJ)pl9_C@V0 zBal8BBR0gA_yF%!*fU2}y}kZFeg8e{P*T$Sq=35Her3KpTWf1go;KYzecse$+J5hz zX$Q27+|+E^(cEm>+1hH_4sFlFho;>G4<0c64$^{cXG@Fe{pxBH@@?~LQ`5NIFvdIs r2>HqovIm$yLFjis4uJ*j2*gIRvEEo7Yx4x+5RkY8I^ZA}L@4vW*wrfC diff --git a/reflex/.templates/apps/counter/assets/favicon.ico b/reflex/.templates/apps/counter/assets/favicon.ico index a22a7e0bd9bd1ddf4839e314f8ee912166d48030..166ae995eaa63fc96771410a758282dc30e925cf 100644 GIT binary patch literal 4286 zcmeHL>rYc>81ELdEe;}zmYd}cUgmJRfwjUwD1`#s5KZP>mMqza#Viv|_7|8f+0+bX zHuqusuw-7Ca`DTu#4U4^o2bjO#K>4%N?Wdi*wZ3Vx%~Ef4}D1`U_EMRg3u z#2#M|V>}}q-@IaO@{9R}d*u7f&~5HfxSkmHVcazU#i30H zAGxQ5Spe!j9`KuGqR@aExK`-}sH1jvqoIp3C7Vm)9Tu=UPE;j^esN~a6^a$ZILngo;^ zGLXl(ZFyY&U!li`6}y-hUQ99v?s`U4O!kgog74FPw-9g+V)qs!jFGEQyvBf><U|E2vRmx|+(VI~S=lT?@~C5pvZOd`x{Q_+3tG6H=gtdWcf z)+7-Zp=UqH^J4sk^>_G-Ufn-2Hz z2mN12|C{5}U`^eCQuFz=F%wp@}SzA1MHEaM^CtJs<{}Tzu$bx2orTKiedgmtVGM{ zdd#vX`&cuiec|My_KW;y{Ryz2kFu9}=~us6hvx1ZqQCk(d+>HP>ks>mmHCjjDh{pe zKQkKpk0SeDX#XMqf$}QV{z=xrN!mQczJAvud@;zFqaU1ocq==Py)qsa=8UKrt!J7r z{RsTo^rgtZo%$rak)DN*D)!(Y^$@yL6Nd=#eu&?unzhH8yq>v{gkt8xcG3S%H)-y_ zqQ1|v|JT$0R~Y}omg2Y+nDvR+K|kzR5i^fmKF>j~N;A35Vr`JWh4yRqKl#P|qlx?` z@|CmBiP}ysYO%m2{eBG6&ix5 zr#u((F2{vb=W4jNmTQh3M^F2o80T49?w>*rv0mt)-o1y!{hRk`E#UVPdna6jnz`rw dKpn)r^--YJZpr;bYU`N~>#v3X5BRU&{{=gv-{1fM literal 4154 zcmb7H3sjRw7M}S-+_Shs0*VAgP=wZ{$BJ8d8jy#Ao?TRY6cb*RRjOT%vdBXS5I_(g zv{gh8h^R#ul&-JpS-VuMvO*D$Rs|G`)v6F4QSwd*$iH`f2nIyg{W)Le&YgSjckj&n zGyDi)_;avFh@RaI60GZm7rPNzc>i3FD(K8!D1yof8Ss&L_f12`=)5$9!P;Vtp;I4vOo#{<6H zxf7R`mg1dz_u_*6`|-|#0$g(F5Wf7w54f$Z4R>~R;iRM_?Be2rPM<#gPX04z&Y+f- z7JLZ&_Z1f6oQw>dxn&C#9~Vc(Z`wq~`ubAh`SYnQk&#qFL zF*ul&5VqE2eMpE&7@yA;1O>C#ELgw}^YUg#E%alrnm3Ov@bqG@_w!>%f_}x^kJ)R3 zgV|A^hMBBiyT)X*FpMQy62#gh5KzTX)3-2>Jv}|+@{@VLa^(u%RZu{s#>B9a0~Sx% z;PlZ%q2q^UE2le{ubOJd3AMK8hT7P1mQUevmRkUv{Gz(NpbaL`<=D3b(Xz5?b(_!YA7}3oUJ&q3&MHY3K`ffr+EZx-+4&lbnWQ(po{$-#qf@Lz-4&+prZMS+2=xVf&T z(L4v z#yxh*beC8gM_$}VpZq?1aS*FaAi(8Ej^M_|#!)%^+}MbZLVjNaEjAHa+M1_);5vJ^ z-_j+yUV*D~Jp2XQJ^h8*9t3{j0AaTKLSc@le>jXmA7p5=KnFIU^Mf%zL9Tb;>fOG< z!Kt%9nJqBqnWqE=nH*fbnkp+P8O878}tCL6 zI+B*oRmtV`W9wshU_bWW{{`@n;nxE<0oh}(^(sa;)*txmPp4;bw|II`r%#?7#oqvX z@!!Xe;V73sQb*Fo7Am=-&fst0AT4NJcI`9(`BEp56FHgDmVE9$?^ z$l}KHy{YW&xp<^_5Xigm72Nl$LYGtJ=~;xop44lI&$Rvh3@4dm_45w85B7l`=C~iA zRVe9>#@qC>>o=IW(1We9FR4WhHJya|1-^Vrl$JJ%|9V3M7RAQmFmEsFL}m_`*c$sA zHabN#9ysY)Kx)jfv*pBxw?83 z|8}Uq1pYtS6ug+K6mRE(ZM}h$v?Lxup9bFJr_TZHbl2Txrsnn=x9HA0O(XlkV9T^d zbEr`$>(1unaW{vDQAbM;kK!k5aiXFE@5oHU=kg1v7WF*4DSF~U#u#=ay64b*gDM*%0mmyfSpz4`|K zOSv2glmCv-7wk3Hs8n^v{zM+)*V3}bzcICHp?)3IuahZgB9r>bm>$+>EI;vwd!g=M zUlp3K*_McpA3J8e{TaDODn-$$N%+Fo`^|{0fq!6_o5Uo0zT?&%1`=5RPI%u4h}?1O zE~6)VWPr>G*c;~oXVmrTuZzs8E|lX^_&yl#vGtyhst*)T0{;Ju@DIl^#M6;GQLdnM zN+kg9Is$nAhIA^1lUb8-_^%u&nY1rIV?1g`=NQ08my3>0fb~B9AFgQrVw-r4I z|1gh$=@01*c7}WnabW%barIEygj~_qxAK#L==s4&DU}Am+49s7gS3XY47VYNaax0& zv9DgId!~>|7rm2sc<^j~A$oqNiKTkk8vu9OH~K!^HOQqF&biuty}lOqJ)pl9_C@V0 zBal8BBR0gA_yF%!*fU2}y}kZFeg8e{P*T$Sq=35Her3KpTWf1go;KYzecse$+J5hz zX$Q27+|+E^(cEm>+1hH_4sFlFho;>G4<0c64$^{cXG@Fe{pxBH@@?~LQ`5NIFvdIs r2>HqovIm$yLFjis4uJ*j2*gIRvEEo7Yx4x+5RkY8I^ZA}L@4vW*wrfC diff --git a/reflex/.templates/apps/default/assets/favicon.ico b/reflex/.templates/apps/default/assets/favicon.ico index a22a7e0bd9bd1ddf4839e314f8ee912166d48030..166ae995eaa63fc96771410a758282dc30e925cf 100644 GIT binary patch literal 4286 zcmeHL>rYc>81ELdEe;}zmYd}cUgmJRfwjUwD1`#s5KZP>mMqza#Viv|_7|8f+0+bX zHuqusuw-7Ca`DTu#4U4^o2bjO#K>4%N?Wdi*wZ3Vx%~Ef4}D1`U_EMRg3u z#2#M|V>}}q-@IaO@{9R}d*u7f&~5HfxSkmHVcazU#i30H zAGxQ5Spe!j9`KuGqR@aExK`-}sH1jvqoIp3C7Vm)9Tu=UPE;j^esN~a6^a$ZILngo;^ zGLXl(ZFyY&U!li`6}y-hUQ99v?s`U4O!kgog74FPw-9g+V)qs!jFGEQyvBf><U|E2vRmx|+(VI~S=lT?@~C5pvZOd`x{Q_+3tG6H=gtdWcf z)+7-Zp=UqH^J4sk^>_G-Ufn-2Hz z2mN12|C{5}U`^eCQuFz=F%wp@}SzA1MHEaM^CtJs<{}Tzu$bx2orTKiedgmtVGM{ zdd#vX`&cuiec|My_KW;y{Ryz2kFu9}=~us6hvx1ZqQCk(d+>HP>ks>mmHCjjDh{pe zKQkKpk0SeDX#XMqf$}QV{z=xrN!mQczJAvud@;zFqaU1ocq==Py)qsa=8UKrt!J7r z{RsTo^rgtZo%$rak)DN*D)!(Y^$@yL6Nd=#eu&?unzhH8yq>v{gkt8xcG3S%H)-y_ zqQ1|v|JT$0R~Y}omg2Y+nDvR+K|kzR5i^fmKF>j~N;A35Vr`JWh4yRqKl#P|qlx?` z@|CmBiP}ysYO%m2{eBG6&ix5 zr#u((F2{vb=W4jNmTQh3M^F2o80T49?w>*rv0mt)-o1y!{hRk`E#UVPdna6jnz`rw dKpn)r^--YJZpr;bYU`N~>#v3X5BRU&{{=gv-{1fM literal 4154 zcmb7H3sjRw7M}S-+_Shs0*VAgP=wZ{$BJ8d8jy#Ao?TRY6cb*RRjOT%vdBXS5I_(g zv{gh8h^R#ul&-JpS-VuMvO*D$Rs|G`)v6F4QSwd*$iH`f2nIyg{W)Le&YgSjckj&n zGyDi)_;avFh@RaI60GZm7rPNzc>i3FD(K8!D1yof8Ss&L_f12`=)5$9!P;Vtp;I4vOo#{<6H zxf7R`mg1dz_u_*6`|-|#0$g(F5Wf7w54f$Z4R>~R;iRM_?Be2rPM<#gPX04z&Y+f- z7JLZ&_Z1f6oQw>dxn&C#9~Vc(Z`wq~`ubAh`SYnQk&#qFL zF*ul&5VqE2eMpE&7@yA;1O>C#ELgw}^YUg#E%alrnm3Ov@bqG@_w!>%f_}x^kJ)R3 zgV|A^hMBBiyT)X*FpMQy62#gh5KzTX)3-2>Jv}|+@{@VLa^(u%RZu{s#>B9a0~Sx% z;PlZ%q2q^UE2le{ubOJd3AMK8hT7P1mQUevmRkUv{Gz(NpbaL`<=D3b(Xz5?b(_!YA7}3oUJ&q3&MHY3K`ffr+EZx-+4&lbnWQ(po{$-#qf@Lz-4&+prZMS+2=xVf&T z(L4v z#yxh*beC8gM_$}VpZq?1aS*FaAi(8Ej^M_|#!)%^+}MbZLVjNaEjAHa+M1_);5vJ^ z-_j+yUV*D~Jp2XQJ^h8*9t3{j0AaTKLSc@le>jXmA7p5=KnFIU^Mf%zL9Tb;>fOG< z!Kt%9nJqBqnWqE=nH*fbnkp+P8O878}tCL6 zI+B*oRmtV`W9wshU_bWW{{`@n;nxE<0oh}(^(sa;)*txmPp4;bw|II`r%#?7#oqvX z@!!Xe;V73sQb*Fo7Am=-&fst0AT4NJcI`9(`BEp56FHgDmVE9$?^ z$l}KHy{YW&xp<^_5Xigm72Nl$LYGtJ=~;xop44lI&$Rvh3@4dm_45w85B7l`=C~iA zRVe9>#@qC>>o=IW(1We9FR4WhHJya|1-^Vrl$JJ%|9V3M7RAQmFmEsFL}m_`*c$sA zHabN#9ysY)Kx)jfv*pBxw?83 z|8}Uq1pYtS6ug+K6mRE(ZM}h$v?Lxup9bFJr_TZHbl2Txrsnn=x9HA0O(XlkV9T^d zbEr`$>(1unaW{vDQAbM;kK!k5aiXFE@5oHU=kg1v7WF*4DSF~U#u#=ay64b*gDM*%0mmyfSpz4`|K zOSv2glmCv-7wk3Hs8n^v{zM+)*V3}bzcICHp?)3IuahZgB9r>bm>$+>EI;vwd!g=M zUlp3K*_McpA3J8e{TaDODn-$$N%+Fo`^|{0fq!6_o5Uo0zT?&%1`=5RPI%u4h}?1O zE~6)VWPr>G*c;~oXVmrTuZzs8E|lX^_&yl#vGtyhst*)T0{;Ju@DIl^#M6;GQLdnM zN+kg9Is$nAhIA^1lUb8-_^%u&nY1rIV?1g`=NQ08my3>0fb~B9AFgQrVw-r4I z|1gh$=@01*c7}WnabW%barIEygj~_qxAK#L==s4&DU}Am+49s7gS3XY47VYNaax0& zv9DgId!~>|7rm2sc<^j~A$oqNiKTkk8vu9OH~K!^HOQqF&biuty}lOqJ)pl9_C@V0 zBal8BBR0gA_yF%!*fU2}y}kZFeg8e{P*T$Sq=35Her3KpTWf1go;KYzecse$+J5hz zX$Q27+|+E^(cEm>+1hH_4sFlFho;>G4<0c64$^{cXG@Fe{pxBH@@?~LQ`5NIFvdIs r2>HqovIm$yLFjis4uJ*j2*gIRvEEo7Yx4x+5RkY8I^ZA}L@4vW*wrfC From 00d0d1a60a6ea3f5f807fb9ce52eae7018044dc3 Mon Sep 17 00:00:00 2001 From: Alek Petuskey Date: Fri, 13 Oct 2023 01:54:33 -0700 Subject: [PATCH 09/13] Fix pr comments + clean up code --- reflex/.templates/apps/base/code/__init__ .py | 1 + reflex/.templates/apps/base/code/__init__.py | 0 reflex/.templates/apps/base/code/base.py | 63 ++++++++--------- .../apps/base/code/pages/__init__.py | 4 ++ .../apps/base/code/pages/dashboard.py | 23 +++++++ .../.templates/apps/base/code/pages/home.py | 23 +++++++ .../apps/base/code/pages/settings.py | 23 +++++++ reflex/.templates/apps/base/code/sidebar.py | 69 +++++++++++-------- reflex/.templates/apps/base/code/state.py | 15 ++-- reflex/.templates/apps/base/code/styles.py | 25 +++++++ 10 files changed, 174 insertions(+), 72 deletions(-) create mode 100644 reflex/.templates/apps/base/code/__init__ .py delete mode 100644 reflex/.templates/apps/base/code/__init__.py create mode 100644 reflex/.templates/apps/base/code/pages/__init__.py create mode 100644 reflex/.templates/apps/base/code/pages/dashboard.py create mode 100644 reflex/.templates/apps/base/code/pages/home.py create mode 100644 reflex/.templates/apps/base/code/pages/settings.py diff --git a/reflex/.templates/apps/base/code/__init__ .py b/reflex/.templates/apps/base/code/__init__ .py new file mode 100644 index 0000000000..e1d2863467 --- /dev/null +++ b/reflex/.templates/apps/base/code/__init__ .py @@ -0,0 +1 @@ +"""Base template for Reflex.""" diff --git a/reflex/.templates/apps/base/code/__init__.py b/reflex/.templates/apps/base/code/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/reflex/.templates/apps/base/code/base.py b/reflex/.templates/apps/base/code/base.py index 1c8df571dc..460f95d855 100644 --- a/reflex/.templates/apps/base/code/base.py +++ b/reflex/.templates/apps/base/code/base.py @@ -1,39 +1,14 @@ """Welcome to Reflex! This file outlines the steps to create a basic app.""" +from typing import Callable import reflex as rx - +from .pages import dashboard_page, home_page, settings_page from .sidebar import sidebar from .styles import * -def content(): - return rx.box( - rx.vstack( - rx.heading( - "Dashboard", - size="3em", - ), - rx.text( - "Welcome to Reflex!", - ), - rx.text( - "You can use this template to get started with Reflex.", - ), - width="100%", - align_items="flex-start", - height="90%", - box_shadow="0px 0px 0px 1px rgba(84, 82, 95, 0.14)", - border_radius=border_radius, - padding="1em", - ), - height="100vh", - width="100%", - padding_top="5em", - padding_x="2em", - ) - - -def menu_button(): - return rx.box( +def template(main_content: Callable[[], rx.Component]) -> rx.Component: + """The template for each page of the app.""" + menu_button = rx.box( rx.menu( rx.menu_button( rx.icon( @@ -55,18 +30,36 @@ def menu_button(): z_index="500", ) - -def index() -> rx.Component: return rx.hstack( sidebar(), - content(), + main_content(), rx.spacer(), - menu_button(), + menu_button, align_items="flex-start", ) +@rx.page("/") +@template +def home(): + """Home page.""" + return home_page() + + +@rx.page("/settings") +@template +def settings(): + """Settings page.""" + return settings_page() + + +@rx.page("/dashboard") +@template +def dashboard(): + """Dashboard page.""" + return dashboard_page() + + # Add state and page to the app. app = rx.App(style=base_style) -app.add_page(index) app.compile() diff --git a/reflex/.templates/apps/base/code/pages/__init__.py b/reflex/.templates/apps/base/code/pages/__init__.py new file mode 100644 index 0000000000..b8bb99da97 --- /dev/null +++ b/reflex/.templates/apps/base/code/pages/__init__.py @@ -0,0 +1,4 @@ +"""The pages of the app.""" +from .dashboard import dashboard_page +from .home import home_page +from .settings import settings_page diff --git a/reflex/.templates/apps/base/code/pages/dashboard.py b/reflex/.templates/apps/base/code/pages/dashboard.py new file mode 100644 index 0000000000..7c791495a8 --- /dev/null +++ b/reflex/.templates/apps/base/code/pages/dashboard.py @@ -0,0 +1,23 @@ +"""The dashboard page for the template.""" +import reflex as rx +from ..styles import * + + +def dashboard_page(): + """The UI for the dashboard page.""" + return rx.box( + rx.vstack( + rx.heading( + "Dashboard", + size="3em", + ), + rx.text( + "Welcome to Reflex!", + ), + rx.text( + "You can use this template to get started with Reflex.", + ), + style=template_content_style, + ), + style=template_page_style, + ) diff --git a/reflex/.templates/apps/base/code/pages/home.py b/reflex/.templates/apps/base/code/pages/home.py new file mode 100644 index 0000000000..a2b0ab7110 --- /dev/null +++ b/reflex/.templates/apps/base/code/pages/home.py @@ -0,0 +1,23 @@ +"""The home page of the app.""" +import reflex as rx +from ..styles import * + + +def home_page(): + """The UI for the home page.""" + return rx.box( + rx.vstack( + rx.heading( + "Home", + size="3em", + ), + rx.text( + "Welcome to Reflex!", + ), + rx.text( + "You can use this template to get started with Reflex.", + ), + style=template_content_style, + ), + style=template_page_style, + ) diff --git a/reflex/.templates/apps/base/code/pages/settings.py b/reflex/.templates/apps/base/code/pages/settings.py new file mode 100644 index 0000000000..c424e07d47 --- /dev/null +++ b/reflex/.templates/apps/base/code/pages/settings.py @@ -0,0 +1,23 @@ +"""The settings page for the template.""" +import reflex as rx +from ..styles import * + + +def settings_page(): + """The UI for the settings page.""" + return rx.box( + rx.vstack( + rx.heading( + "Settings", + size="3em", + ), + rx.text( + "Welcome to Reflex!", + ), + rx.text( + "You can use this template to get started with Reflex.", + ), + style=template_content_style, + ), + style=template_page_style, + ) diff --git a/reflex/.templates/apps/base/code/sidebar.py b/reflex/.templates/apps/base/code/sidebar.py index ce14175897..1802d5422b 100644 --- a/reflex/.templates/apps/base/code/sidebar.py +++ b/reflex/.templates/apps/base/code/sidebar.py @@ -1,33 +1,12 @@ -import reflex as rx +"""Sidebar component for the app.""" +import reflex as rx from .state import State from .styles import * -def sidebar_item(text: str, icon: str, url: str) -> rx.Component: - return rx.hstack( - rx.image( - src=icon, - height="2.5em", - padding="0.5em", - ), - rx.text( - text, - ), - bg=rx.cond(State.current_page == text, accent_color, "transparent"), - color=rx.cond(State.current_page == text, accent_text_color, text_color), - border_radius=border_radius, - border="1px solid transparent", - width="100%", - padding_x="1em", - _hover={ - "box_shadow": box_shadow, - }, - on_click=lambda: State.set_page(text), - ) - - def sidebar_header(): + """Sidebar header.""" return rx.hstack( rx.image( src="/icon.svg", @@ -45,7 +24,7 @@ def sidebar_header(): bg="transparent", border_radius=border_radius, _hover={ - "bg": "#F5EFFE", + "bg": accent_color, }, ), href="https://github.com/reflex-dev/reflex", @@ -57,6 +36,7 @@ def sidebar_header(): def sidebar_footer(): + """Sidebar footer.""" return rx.hstack( rx.link( rx.center( @@ -68,7 +48,7 @@ def sidebar_footer(): bg="transparent", border_radius=border_radius, _hover={ - "bg": "#F5EFFE", + "bg": accent_color, }, ), href="https://github.com/reflex-dev/reflex", @@ -92,7 +72,40 @@ def sidebar_footer(): ) +def sidebar_item(text: str, icon: str, url: str) -> rx.Component: + """Sidebar item.""" + return rx.link( + rx.hstack( + rx.image( + src=icon, + height="2.5em", + padding="0.5em", + ), + rx.text( + text, + ), + bg=rx.cond( + State.origin_url == "/" + text.lower() + "/", + accent_color, + "transparent", + ), + color=rx.cond( + State.origin_url == "/" + text.lower() + "/", + accent_text_color, + text_color, + ), + border_radius=border_radius, + box_shadow=box_shadow, + width="100%", + padding_x="1em", + ), + href=url, + width="100%", + ) + + def sidebar(): + """Sidebar.""" return rx.box( rx.vstack( sidebar_header(), @@ -100,12 +113,12 @@ def sidebar(): sidebar_item( "Dashboard", "/github.svg", - "docs_url", + "/dashboard", ), sidebar_item( "Settings", "/github.svg", - "docs_url", + "/settings", ), width="100%", align_items="flex-start", diff --git a/reflex/.templates/apps/base/code/state.py b/reflex/.templates/apps/base/code/state.py index defef88a6d..461216659d 100644 --- a/reflex/.templates/apps/base/code/state.py +++ b/reflex/.templates/apps/base/code/state.py @@ -1,15 +1,12 @@ +"""Base state for the app.""" + import reflex as rx class State(rx.State): """State for the app.""" - current_page: str = "Dashboard" - - def set_page(self, page: str): - """Set the current page. - - Args: - page: The page to set. - """ - self.current_page = page + @rx.var + def origin_url(self) -> str: + """Get the url of the current page.""" + return self.router_data.get("asPath", "") diff --git a/reflex/.templates/apps/base/code/styles.py b/reflex/.templates/apps/base/code/styles.py index ed329e5315..0290d0bec7 100644 --- a/reflex/.templates/apps/base/code/styles.py +++ b/reflex/.templates/apps/base/code/styles.py @@ -1,3 +1,4 @@ +"""Styles for the app.""" import reflex as rx border_radius = ("0.375rem",) @@ -7,6 +8,30 @@ accent_text_color = "#1A1060" accent_color = "#F5EFFE" +template_page_style = { + "height": "100vh", + "width": "100%", + "padding_top": "5em", + "padding_x": "2em", +} + +template_content_style = { + "width": "100%", + "align_items": "flex-start", + "height": "90%", + "box_shadow": "0px 0px 0px 1px rgba(84, 82, 95, 0.14)", + "border_radius": border_radius, + "padding": "1em", +} + +link_style = { + "color": text_color, + "text_decoration": "none", + "_hover": { + "color": accent_color, + }, +} + base_style = { rx.MenuItem: { "_hover": { From 2308d0ff05fb0f9c24b7fc1ea5607c59c8cb898b Mon Sep 17 00:00:00 2001 From: Alek Petuskey Date: Fri, 13 Oct 2023 02:05:30 -0700 Subject: [PATCH 10/13] Added template and clean up code --- reflex/.templates/apps/base/code/base.py | 35 ++++++++++++++---- .../apps/base/code/pages/dashboard.py | 9 +++-- .../.templates/apps/base/code/pages/home.py | 9 +++-- .../apps/base/code/pages/settings.py | 9 +++-- reflex/.templates/apps/base/code/sidebar.py | 36 +++++++++++++++---- reflex/.templates/apps/base/code/state.py | 6 +++- 6 files changed, 83 insertions(+), 21 deletions(-) diff --git a/reflex/.templates/apps/base/code/base.py b/reflex/.templates/apps/base/code/base.py index 460f95d855..c8962917ee 100644 --- a/reflex/.templates/apps/base/code/base.py +++ b/reflex/.templates/apps/base/code/base.py @@ -1,13 +1,22 @@ """Welcome to Reflex! This file outlines the steps to create a basic app.""" from typing import Callable + import reflex as rx + from .pages import dashboard_page, home_page, settings_page from .sidebar import sidebar from .styles import * def template(main_content: Callable[[], rx.Component]) -> rx.Component: - """The template for each page of the app.""" + """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.box( rx.menu( rx.menu_button( @@ -41,22 +50,34 @@ def template(main_content: Callable[[], rx.Component]) -> rx.Component: @rx.page("/") @template -def home(): - """Home page.""" +def home() -> rx.Component: + """Home page. + + Returns: + rx.Component: The home page. + """ return home_page() @rx.page("/settings") @template -def settings(): - """Settings page.""" +def settings() -> rx.Component: + """Settings page. + + Returns: + rx.Component: The settings page. + """ return settings_page() @rx.page("/dashboard") @template -def dashboard(): - """Dashboard page.""" +def dashboard() -> rx.Component: + """Dashboard page. + + Returns: + rx.Component: The dashboard page. + """ return dashboard_page() diff --git a/reflex/.templates/apps/base/code/pages/dashboard.py b/reflex/.templates/apps/base/code/pages/dashboard.py index 7c791495a8..81beb4a74c 100644 --- a/reflex/.templates/apps/base/code/pages/dashboard.py +++ b/reflex/.templates/apps/base/code/pages/dashboard.py @@ -1,10 +1,15 @@ """The dashboard page for the template.""" import reflex as rx + from ..styles import * -def dashboard_page(): - """The UI for the dashboard page.""" +def dashboard_page() -> rx.Component: + """The UI for the dashboard page. + + Returns: + rx.Component: The UI for the dashboard page. + """ return rx.box( rx.vstack( rx.heading( diff --git a/reflex/.templates/apps/base/code/pages/home.py b/reflex/.templates/apps/base/code/pages/home.py index a2b0ab7110..aae7f1fb69 100644 --- a/reflex/.templates/apps/base/code/pages/home.py +++ b/reflex/.templates/apps/base/code/pages/home.py @@ -1,10 +1,15 @@ """The home page of the app.""" import reflex as rx + from ..styles import * -def home_page(): - """The UI for the home page.""" +def home_page() -> rx.Component: + """The UI for the home page. + + Returns: + rx.Component: The UI for the home page. + """ return rx.box( rx.vstack( rx.heading( diff --git a/reflex/.templates/apps/base/code/pages/settings.py b/reflex/.templates/apps/base/code/pages/settings.py index c424e07d47..fdd4eeb523 100644 --- a/reflex/.templates/apps/base/code/pages/settings.py +++ b/reflex/.templates/apps/base/code/pages/settings.py @@ -1,10 +1,15 @@ """The settings page for the template.""" import reflex as rx + from ..styles import * -def settings_page(): - """The UI for the settings page.""" +def settings_page() -> rx.Component: + """The UI for the settings page. + + Returns: + rx.Component: The UI for the settings page. + """ return rx.box( rx.vstack( rx.heading( diff --git a/reflex/.templates/apps/base/code/sidebar.py b/reflex/.templates/apps/base/code/sidebar.py index 1802d5422b..1ad9a7fc97 100644 --- a/reflex/.templates/apps/base/code/sidebar.py +++ b/reflex/.templates/apps/base/code/sidebar.py @@ -1,12 +1,17 @@ """Sidebar component for the app.""" import reflex as rx + from .state import State from .styles import * -def sidebar_header(): - """Sidebar header.""" +def sidebar_header() -> rx.Component: + """Sidebar header. + + Returns: + rx.Component: The sidebar header component. + """ return rx.hstack( rx.image( src="/icon.svg", @@ -35,8 +40,12 @@ def sidebar_header(): ) -def sidebar_footer(): - """Sidebar footer.""" +def sidebar_footer() -> rx.Component: + """Sidebar footer. + + Returns: + rx.Component: The sidebar footer component. + """ return rx.hstack( rx.link( rx.center( @@ -73,7 +82,16 @@ def sidebar_footer(): def sidebar_item(text: str, icon: str, url: str) -> rx.Component: - """Sidebar item.""" + """Sidebar item. + + Args: + text (str): The text of the item. + icon (str): The icon of the item. + url (str): The URL of the item. + + Returns: + rx.Component: The sidebar item component. + """ return rx.link( rx.hstack( rx.image( @@ -104,8 +122,12 @@ def sidebar_item(text: str, icon: str, url: str) -> rx.Component: ) -def sidebar(): - """Sidebar.""" +def sidebar() -> rx.Component: + """Sidebar. + + Returns: + rx.Component: The sidebar component. + """ return rx.box( rx.vstack( sidebar_header(), diff --git a/reflex/.templates/apps/base/code/state.py b/reflex/.templates/apps/base/code/state.py index 461216659d..573f12684e 100644 --- a/reflex/.templates/apps/base/code/state.py +++ b/reflex/.templates/apps/base/code/state.py @@ -8,5 +8,9 @@ class State(rx.State): @rx.var def origin_url(self) -> str: - """Get the url of the current page.""" + """Get the url of the current page. + + Returns: + str: The url of the current page. + """ return self.router_data.get("asPath", "") From 2e5842d92f5032d02d5dea11ba761a8310c72015 Mon Sep 17 00:00:00 2001 From: Alek Petuskey Date: Fri, 13 Oct 2023 02:16:15 -0700 Subject: [PATCH 11/13] Remove counter template --- .../apps/counter/assets/favicon.ico | Bin 4286 -> 0 bytes .../.templates/apps/counter/code/__init__.py | 0 .../.templates/apps/counter/code/counter.py | 53 ------------------ 3 files changed, 53 deletions(-) delete mode 100644 reflex/.templates/apps/counter/assets/favicon.ico delete mode 100644 reflex/.templates/apps/counter/code/__init__.py delete mode 100644 reflex/.templates/apps/counter/code/counter.py diff --git a/reflex/.templates/apps/counter/assets/favicon.ico b/reflex/.templates/apps/counter/assets/favicon.ico deleted file mode 100644 index 166ae995eaa63fc96771410a758282dc30e925cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmeHL>rYc>81ELdEe;}zmYd}cUgmJRfwjUwD1`#s5KZP>mMqza#Viv|_7|8f+0+bX zHuqusuw-7Ca`DTu#4U4^o2bjO#K>4%N?Wdi*wZ3Vx%~Ef4}D1`U_EMRg3u z#2#M|V>}}q-@IaO@{9R}d*u7f&~5HfxSkmHVcazU#i30H zAGxQ5Spe!j9`KuGqR@aExK`-}sH1jvqoIp3C7Vm)9Tu=UPE;j^esN~a6^a$ZILngo;^ zGLXl(ZFyY&U!li`6}y-hUQ99v?s`U4O!kgog74FPw-9g+V)qs!jFGEQyvBf><U|E2vRmx|+(VI~S=lT?@~C5pvZOd`x{Q_+3tG6H=gtdWcf z)+7-Zp=UqH^J4sk^>_G-Ufn-2Hz z2mN12|C{5}U`^eCQuFz=F%wp@}SzA1MHEaM^CtJs<{}Tzu$bx2orTKiedgmtVGM{ zdd#vX`&cuiec|My_KW;y{Ryz2kFu9}=~us6hvx1ZqQCk(d+>HP>ks>mmHCjjDh{pe zKQkKpk0SeDX#XMqf$}QV{z=xrN!mQczJAvud@;zFqaU1ocq==Py)qsa=8UKrt!J7r z{RsTo^rgtZo%$rak)DN*D)!(Y^$@yL6Nd=#eu&?unzhH8yq>v{gkt8xcG3S%H)-y_ zqQ1|v|JT$0R~Y}omg2Y+nDvR+K|kzR5i^fmKF>j~N;A35Vr`JWh4yRqKl#P|qlx?` z@|CmBiP}ysYO%m2{eBG6&ix5 zr#u((F2{vb=W4jNmTQh3M^F2o80T49?w>*rv0mt)-o1y!{hRk`E#UVPdna6jnz`rw dKpn)r^--YJZpr;bYU`N~>#v3X5BRU&{{=gv-{1fM diff --git a/reflex/.templates/apps/counter/code/__init__.py b/reflex/.templates/apps/counter/code/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/reflex/.templates/apps/counter/code/counter.py b/reflex/.templates/apps/counter/code/counter.py deleted file mode 100644 index 5bf2ab4ae2..0000000000 --- a/reflex/.templates/apps/counter/code/counter.py +++ /dev/null @@ -1,53 +0,0 @@ -"""Welcome to Reflex! This file creates a counter app.""" -import random - -import reflex as rx - - -class State(rx.State): - """The app state.""" - - count = 0 - - def increment(self): - """Increment the count.""" - self.count += 1 - - def decrement(self): - """Decrement the count.""" - self.count -= 1 - - def random(self): - """Randomize the count.""" - self.count = random.randint(0, 100) - - -def index() -> rx.Component: - return rx.center( - rx.vstack( - rx.heading(State.count), - rx.hstack( - rx.button("Decrement", on_click=State.decrement, color_scheme="red"), - rx.button( - "Randomize", - on_click=State.random, - background_image="linear-gradient(90deg, rgba(255,0,0,1) 0%, rgba(0,176,34,1) 100%)", - color="white", - ), - rx.button("Increment", on_click=State.increment, color_scheme="green"), - ), - padding="1em", - bg="#ededed", - border_radius="1em", - box_shadow="lg", - ), - padding_y="5em", - font_size="2em", - text_align="center", - ) - - -# Add state and page to the app. -app = rx.App() -app.add_page(index, title="Counter") -app.compile() From f2d1e0aa64a43f47098fb9a611dce109208dbc15 Mon Sep 17 00:00:00 2001 From: Alek Petuskey Date: Fri, 13 Oct 2023 02:25:50 -0700 Subject: [PATCH 12/13] Add menu examples --- reflex/.templates/apps/base/code/base.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/reflex/.templates/apps/base/code/base.py b/reflex/.templates/apps/base/code/base.py index c8962917ee..07f55e1c08 100644 --- a/reflex/.templates/apps/base/code/base.py +++ b/reflex/.templates/apps/base/code/base.py @@ -27,10 +27,10 @@ def template(main_content: Callable[[], rx.Component]) -> rx.Component: ), ), rx.menu_list( - rx.menu_item("Home"), + rx.menu_item(rx.link("Home", href="/", width="100%")), rx.menu_divider(), - rx.menu_item("About"), - rx.menu_item("Contact"), + rx.menu_item(rx.link("About", href="https://github.com/reflex-dev", width="100%")), + rx.menu_item(rx.link("Contact", href="mailto:founders@=reflex.dev", width="100%")), ), ), position="fixed", From fb12cc0c3eb20bc0ff8f8938f8e026aad4429392 Mon Sep 17 00:00:00 2001 From: Alek Petuskey Date: Sun, 15 Oct 2023 19:47:02 -0700 Subject: [PATCH 13/13] Fix precommit --- .../apps/base/code/{__init__ .py => __init__.py} | 0 reflex/.templates/apps/base/code/base.py | 8 ++++++-- reflex/.templates/apps/base/code/sidebar.py | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) rename reflex/.templates/apps/base/code/{__init__ .py => __init__.py} (100%) diff --git a/reflex/.templates/apps/base/code/__init__ .py b/reflex/.templates/apps/base/code/__init__.py similarity index 100% rename from reflex/.templates/apps/base/code/__init__ .py rename to reflex/.templates/apps/base/code/__init__.py diff --git a/reflex/.templates/apps/base/code/base.py b/reflex/.templates/apps/base/code/base.py index 07f55e1c08..a0f9654d9f 100644 --- a/reflex/.templates/apps/base/code/base.py +++ b/reflex/.templates/apps/base/code/base.py @@ -29,8 +29,12 @@ def template(main_content: Callable[[], rx.Component]) -> rx.Component: rx.menu_list( rx.menu_item(rx.link("Home", href="/", width="100%")), rx.menu_divider(), - rx.menu_item(rx.link("About", href="https://github.com/reflex-dev", width="100%")), - rx.menu_item(rx.link("Contact", href="mailto:founders@=reflex.dev", width="100%")), + rx.menu_item( + rx.link("About", href="https://github.com/reflex-dev", width="100%") + ), + rx.menu_item( + rx.link("Contact", href="mailto:founders@=reflex.dev", width="100%") + ), ), ), position="fixed", diff --git a/reflex/.templates/apps/base/code/sidebar.py b/reflex/.templates/apps/base/code/sidebar.py index 1ad9a7fc97..342d52633b 100644 --- a/reflex/.templates/apps/base/code/sidebar.py +++ b/reflex/.templates/apps/base/code/sidebar.py @@ -103,12 +103,12 @@ def sidebar_item(text: str, icon: str, url: str) -> rx.Component: text, ), bg=rx.cond( - State.origin_url == "/" + text.lower() + "/", + State.origin_url == f"/{text.lower()}/", accent_color, "transparent", ), color=rx.cond( - State.origin_url == "/" + text.lower() + "/", + State.origin_url == f"/{text.lower()}/", accent_text_color, text_color, ),