Skip to content

Commit c90852c

Browse files
authored
Merge branch 'main' into ahmad/upload-docs
2 parents ae37d55 + 2cde6ec commit c90852c

File tree

7 files changed

+104
-47
lines changed

7 files changed

+104
-47
lines changed

docs/ai_builder/overview/what_is_reflex_build.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
# What Is Reflex Build
22

3+
<div class="p-1 my-4 rounded-lg bg-slate-5">
4+
<iframe
5+
width="100%"
6+
height="400"
7+
src="https://www.youtube.com/embed/s-kr8v7827g "
8+
title="Reflex Build"
9+
frameborder="0"
10+
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
11+
allowfullscreen>
12+
</iframe>
13+
</div>
14+
15+
316
Reflex Build is an AI-powered platform that empowers users of all skill levels to create full-stack web applications
417
without writing any code—just by describing their ideas in plain English. Instead of hiring developers, users can
518
instantly generate web apps or websites, turning ideas into functional apps as quickly as possible.

pcweb/components/docpage/navbar/navbar.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,13 @@ def link_item(name: str, url: str, active_str: str = ""):
7474
elif active_str == "pricing":
7575
active = router_path.contains("pricing")
7676

77+
elif active_str == "framework":
78+
# Check if path contains "docs" but excludes ai-builder, cloud, and hosting
79+
is_docs = router_path.contains("docs")
80+
not_cloud = ~(router_path.contains("cloud") | router_path.contains("hosting"))
81+
not_ai_builder = ~router_path.contains("ai-builder")
82+
active = is_docs & not_cloud & not_ai_builder
83+
7784
elif active_str == "docs":
7885
active = rx.cond(
7986
router_path.contains("library"), False, router_path.contains("docs")
@@ -371,12 +378,12 @@ def new_menu_trigger(title: str, url: str = None, active_str: str = "") -> rx.Co
371378

372379
def logo() -> rx.Component:
373380
return rx.link(
374-
rx.color_mode_cond(
381+
rx.fragment(
375382
rx.image(
376-
src="/logos/light/reflex.svg", alt="Reflex Logo", class_name="shrink-0"
383+
src="/logos/light/reflex.svg", alt="Reflex Logo", class_name="shrink-0 block dark:hidden"
377384
),
378385
rx.image(
379-
src="/logos/dark/reflex.svg", alt="Reflex Logo", class_name="shrink-0"
386+
src="/logos/dark/reflex.svg", alt="Reflex Logo", class_name="shrink-0 hidden dark:block"
380387
),
381388
),
382389
class_name="flex shrink-0 mr-3",
@@ -438,7 +445,7 @@ def new_component_section() -> rx.Component:
438445
rx.el.div(
439446
nav_menu.item(
440447
link_item(
441-
"AI Builder", ai_builder_pages.overview.path, "builder"
448+
"AI Builder", ai_builder_pages.overview.what_is_reflex_build.path, "builder"
442449
),
443450
),
444451
nav_menu.item(

pcweb/components/docpage/sidebar/sidebar.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,6 @@ def sidebar_comp(
453453
create_sidebar_section(
454454
"Overview",
455455
ai_builder_pages.overview.what_is_reflex_build.path,
456-
# ai_builder_pages.overview.path,
457456
ai_builder_overview_items,
458457
ai_builder_overview_index,
459458
url,

pcweb/components/logo.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@
33

44
def logo(class_name: str = "") -> rx.Component:
55
return rx.link(
6-
rx.color_mode_cond(
6+
rx.fragment(
77
rx.image(
88
src="/logos/light/reflex.svg",
99
alt="Reflex Logo",
10-
class_name="shrink-0" + class_name,
10+
class_name="shrink-0 block dark:hidden" + class_name,
1111
),
1212
rx.image(
1313
src="/logos/dark/reflex.svg",
1414
alt="Reflex Logo",
15-
class_name="shrink-0" + class_name,
15+
class_name="shrink-0 hidden dark:block" + class_name,
1616
),
1717
),
1818
class_name="flex items-start shrink-0",

pcweb/pages/pricing/plan_cards.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,7 @@ def plan_cards() -> rx.Component:
271271
"Hobby",
272272
"Everything you need to get started.",
273273
[
274+
("frame", "Open Source Framework"),
274275
("brain", "AI App Builder (Limited Access)"),
275276
(
276277
"app-window",
@@ -279,7 +280,7 @@ def plan_cards() -> rx.Component:
279280
),
280281
("code", "Reflex Open Source"),
281282
("heart-handshake", "Discord/Github Support"),
282-
("building", rx.link("Reflex Enterprise", href="https://reflex.dev/docs/enterprise/overview/", class_name="!text-slate-11"), "Free-tier users can access Reflex Enterprise features, with a required 'Built with Reflex' badge displayed on their apps.")
283+
("building", rx.link("Reflex Enterprise", href="https://reflex.dev/docs/enterprise/overview/", class_name="!text-slate-11"), "Free-tier users can access Reflex Enterprise features, with a required 'Built with Reflex' badge displayed on their apps."),
283284
],
284285
"Start building for free",
285286
price="Free",

pcweb/pages/pricing/table.py

Lines changed: 62 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,6 @@
3838
("Team Size", "1", "1", "< 25", "Unlimited"),
3939
]
4040

41-
FRAMEWORK_SECTION = [
42-
("Open Source Framework", True, True, True, True),
43-
("Enterprise Components (AG Grid) *", True, True, True, True),
44-
("One Click Auth", False, False, True, True),
45-
("Single Port Deploy", False, False, True, True),
46-
("HTTP Fallback for Websockets", False, False, True, True),
47-
("Custom NPM Registry", False, False, True, True),
48-
]
4941

5042
AI_TEXT_SECTION = [
5143
(
@@ -58,61 +50,90 @@
5850
]
5951

6052
AI_BOOLEAN_SECTION = [
61-
("Purchase Extra AI Credits", False, True, True, True),
53+
("Image to App", True, True, True, True),
54+
("Web IDE", True, True, True, True),
55+
("Custom User Rules", True, True, True, True),
6256
("One Click Cloud Deploy", True, True, True, True),
6357
("Github Integration", True, True, True, True),
6458
("Database Integration", True, True, True, True),
6559
("Secrets Integration", True, True, True, True),
66-
("Web IDE", True, True, True, True),
60+
("Purchase Extra AI Credits", False, True, True, True),
6761
("Private Apps", False, True, True, True),
68-
("Connect AI Builder to your Data Sources", False, False, True, True),
6962
("Bring your own API Keys", False, False, False, True),
7063
]
7164

65+
ASTERIX_SECTION_ENTERPRISE = [
66+
(
67+
"* Enterprise components included for Hobby (with `Built with Reflex` badge) and Pro (if self-hosted).",
68+
"",
69+
"",
70+
"",
71+
"",
72+
),
73+
("", "", "", "", ""),
74+
]
75+
76+
77+
REFLEX_ENTERPRISE_BOOLEAN_SECTION = [
78+
("AG Grid *",True, True, True, True),
79+
("AG Charts *",True, True, True, True),
80+
("Map Component *",True, True, True, True),
81+
("Drag and Drop Component *",True, True, True, True),
82+
("Single Port Deploy *",True, True, True, True),
83+
("HTTP Fallback for Websockets",False, False, False, True),
84+
("Custom NPM Registry",False, False, False, True),
85+
("One Click Auth",False, False, True, True),
86+
]
7287

7388
HOSTING_TEXT_SECTION = [
7489
(
7590
"Compute",
7691
"20 hours/month",
77-
"$10 compute credits/month",
92+
"$10 credits/month",
7893
"$20 compute credits/user/month",
7994
"Custom",
8095
),
81-
("Regions", "Single", "Multiple", "Multiple", "Multiple"),
8296
("Build Logs", "1 day", "30 days", "90 days", "Custom"),
8397
("Runtime Logs", "1 hour", "1 day", "1 week", "Custom"),
8498
]
8599

86100
HOSTING_BOOLEAN_SECTION = [
101+
("Multiple Regions", False, True, True, True),
87102
("CPU / Memory Metrics", True, True, True, True),
88-
("CLI Deployments", True, True, True, True),
89-
("CI/CD Deploy Tokens", True, True, True, True),
90-
("Set Billing Limits", True, True, True, True),
91-
("Custom Domains", False, True, True, True),
92-
("Secret Manager", False, True, True, True),
93103
("User Analytics", False, False, True, True),
104+
("On Premise Deployments", False, False, False, True),
105+
("Custom Domains", False, True, True, True),
106+
107+
# ... the following were not in the notion docs
108+
# ("CLI Deployments", True, True, True, True),
109+
# ("CI/CD Deploy Tokens", True, True, True, True),
110+
# ("Set Billing Limits", True, True, True, True),
111+
]
112+
113+
FEATURES_SECTION = [
114+
("Secrets", True, True, True, True),
94115
("Custom Alerts", False, False, True, True),
95116
("Rollbacks", False, False, True, True),
96117
("Audit Log", False, False, True, True),
97-
("On Prem Deployments", False, False, False, True),
98118
]
99119

100120
SECURITY_SECTION = [
101121
("Web App Firewall", True, True, True, True),
102122
("HTTP/SSL", True, True, True, True),
103-
("DDos Protection", True, True, True, True),
123+
# ("DDos Protection", True, True, True, True),
104124
("Automatic CI/CD", False, True, True, True),
105125
("Security Audit Reports", False, False, True, True),
106126
("SSO", False, False, False, True),
107127
]
108128

109129
SUPPORT_TEXT_SECTION = [
110-
("Support", "Community", "Community", "Email Support", "Dedicated Support")
130+
("Support", "Community Support", "Community Support", "Email Support", "Dedicated Support")
111131
]
112132

113133
SUPPORT_BOOLEAN_SECTION = [
114134
("White Glove Onboarding", False, False, False, True),
115-
("SLAs Available", False, False, False, True),
135+
# ... not in the notion docs
136+
# ("SLAs Available", False, False, False, True),
116137
("", "", "", "", ""),
117138
]
118139

@@ -255,7 +276,7 @@ def table_body_oss() -> rx.Component:
255276
*[create_table_row(row) for row in PRICE_SECTION],
256277
),
257278
rx.table.header(
258-
create_table_row_header("AI"),
279+
create_table_row_header("Reflex Build"),
259280
class_name="relative",
260281
),
261282
create_table_body(
@@ -265,18 +286,19 @@ def table_body_oss() -> rx.Component:
265286
for feature, *checks in AI_BOOLEAN_SECTION
266287
],
267288
),
289+
#
268290
rx.table.header(
269-
create_table_row_header("FRAMEWORK"),
291+
create_table_row_header("Reflex Enterprise"),
270292
class_name="relative",
271293
),
272294
create_table_body(
273-
*[
274-
create_checkmark_row(feature, checks)
275-
for feature, *checks in FRAMEWORK_SECTION
276-
],
295+
*[
296+
create_checkmark_row(feature, checks)
297+
for feature, *checks in REFLEX_ENTERPRISE_BOOLEAN_SECTION
298+
],
277299
),
278300
create_table_body(
279-
*[create_table_row(row) for row in ASTERIX_SECTION],
301+
*[create_table_row(row) for row in ASTERIX_SECTION_ENTERPRISE],
280302
),
281303
class_name="w-full overflow-x-auto max-w-[69.125rem] -mt-[2rem]",
282304
)
@@ -300,7 +322,7 @@ def table_body_hosting() -> rx.Component:
300322
return rx.table.root(
301323
rx.el.style(TABLE_STYLE),
302324
rx.table.header(
303-
create_table_row_header("Hosting"),
325+
create_table_row_header("Reflex Cloud"),
304326
glow(),
305327
class_name="relative",
306328
),
@@ -311,6 +333,16 @@ def table_body_hosting() -> rx.Component:
311333
for feature, *checks in HOSTING_BOOLEAN_SECTION
312334
],
313335
),
336+
rx.table.header(
337+
create_table_row_header("Features"),
338+
class_name="relative",
339+
),
340+
create_table_body(
341+
*[
342+
create_checkmark_row(feature, checks)
343+
for feature, *checks in FEATURES_SECTION
344+
],
345+
),
314346
rx.table.header(
315347
create_table_row_header("Security"),
316348
class_name="relative",

pcweb/templates/docpage/docpage.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -613,14 +613,17 @@ def wrapper(*args, **kwargs) -> rx.Component:
613613

614614
show_right_sidebar = right_sidebar and len(toc) >= 2
615615

616-
main_content_width = " lg:w-[90%]" if show_right_sidebar else " lg:w-full"
616+
grid_cols_classes = "grid-cols-1"
617+
if show_right_sidebar:
618+
grid_cols_classes += " 2xl:grid-cols-[300px_1fr_16%]"
619+
grid_cols_classes += " lg:grid-cols-[300px_1fr]"
617620

618621
return rx.box(
619622
navbar(),
620623
rx.el.main(
621624
rx.box(
622625
sidebar,
623-
class_name="h-full shrink-0 desktop-only lg:w-[24%]"
626+
class_name="h-full shrink-0 desktop-only lg:block hidden"
624627
+ rx.cond(
625628
HostingBannerState.show_banner,
626629
" mt-[146px]",
@@ -630,7 +633,7 @@ def wrapper(*args, **kwargs) -> rx.Component:
630633
rx.box(
631634
rx.box(
632635
breadcrumb(path=path, nav_sidebar=nav_sidebar),
633-
class_name="px-0 lg:px-20 pt-0",
636+
class_name="px-0 xl:px-20 pt-0",
634637
),
635638
rx.box(
636639
rx.el.article(comp),
@@ -639,9 +642,10 @@ def wrapper(*args, **kwargs) -> rx.Component:
639642
class_name="flex flex-row gap-2 mt-8 lg:mt-10 mb-6 lg:mb-12",
640643
),
641644
docpage_footer(path=path.rstrip("/")),
642-
class_name="lg:mt-0 mt-6 px-4 lg:px-20",
645+
class_name="lg:mt-0 mt-6 px-4 xl:px-20",
643646
),
644-
class_name="h-full w-full" + main_content_width,
647+
class_name="h-full mx-auto max-w-2xl lg:col-start-2 lg:col-end-3 2xl:col-start-2 2xl:col-end-3 "
648+
+ (" xl:max-w-[60rem]" if show_right_sidebar else "xl:max-w-full"),
645649
),
646650
(
647651
# right-hand sidebar
@@ -700,7 +704,7 @@ def wrapper(*args, **kwargs) -> rx.Component:
700704
class_name="fixed flex flex-col justify-start gap-4 p-[0.875rem_0.5rem_0px_0.5rem] max-h-[80vh] overflow-y-auto",
701705
style={"width": "inherit"},
702706
),
703-
class_name="shrink-0 w-[16%]"
707+
class_name="shrink-0 2xl:col-start-3 2xl:col-end-4"
704708
+ rx.cond(
705709
HostingBannerState.show_banner,
706710
" mt-[146px]",
@@ -716,9 +720,10 @@ def wrapper(*args, **kwargs) -> rx.Component:
716720
if not pseudo_right_bar or show_right_sidebar
717721
else rx.el.div(class_name="hidden")
718722
),
719-
class_name="justify-center flex flex-row mx-auto mt-0 max-w-[94.5em] h-full min-h-screen w-full",
723+
class_name="grid justify-center mx-auto mt-0 max-w-[94.5em] h-full min-h-screen w-full "
724+
+ grid_cols_classes,
720725
),
721-
class_name="flex flex-col justify-center bg-slate-1 w-full",
726+
class_name="flex flex-col justify-center bg-slate-1 w-full mx-auto",
722727
on_mount=rx.call_script(right_sidebar_item_highlight()),
723728
)
724729

0 commit comments

Comments
 (0)