Skip to content

Commit 495d18c

Browse files
committed
add resend + move integration into docs + fixes
1 parent ea6203e commit 495d18c

File tree

14 files changed

+116
-13
lines changed

14 files changed

+116
-13
lines changed
54.7 KB
Loading
57 KB
Loading

assets/integrations/resend.svg

Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
```python exec
2+
from pcweb.pages.integrations.integration import integration_page
3+
```
4+
5+
```python eval
6+
integration_page()
7+
```
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
---
2+
tags: Communication
3+
description: Send transactional and automated emails directly from your AI-generated applications using Resend.
4+
---
5+
# Resend Integration
6+
7+
The **Resend Integration** allows your AI-generated apps to send emails directly from workflows, user actions, or automated triggers — perfect for notifications, confirmations, or any email-based communication your app needs.
8+
9+
```python exec
10+
import reflex as rx
11+
from reflex_image_zoom import image_zoom
12+
```
13+
14+
```python eval
15+
rx.el.div(
16+
image_zoom(
17+
rx.image(
18+
src=rx.color_mode_cond(
19+
"/ai_builder/integrations/resend_light.webp",
20+
"/ai_builder/integrations/resend_dark.webp",
21+
),
22+
class_name="p-2 rounded-md h-auto",
23+
border=f"0.81px solid {rx.color('slate', 5)}",
24+
),
25+
class_name="rounded-md overflow-hidden",
26+
),
27+
class_name="w-full flex flex-col rounded-md cursor-pointer",
28+
)
29+
```
30+
31+
## What You Can Do
32+
33+
With the Resend Integration, your app can:
34+
- Send automated transactional emails
35+
- Notify users of important events (signups, job completions, etc.)
36+
- Integrate email sending into AI workflows
37+
- Use dynamic variables in your message body (e.g. user name, order ID)
38+
39+
## Step 1: Get Your Resend API Key
40+
41+
1. Go to [Resend](https://resend.com/).
42+
2. Log in or create a free account.
43+
3. Navigate to **API Keys** from the dashboard sidebar.
44+
4. Click **Create API Key**, give it a name (e.g. “AI Builder”), and copy it.
45+
- Example: `re_1234567890abcdefghijklmn`
46+
47+
## Step 2: Configure the Integration in Your App
48+
49+
1. Open your app in the **AI Builder**.
50+
2. Click the **Settings** gear icon and navigate to the **Integrations** tab.
51+
3. Find and enable the **Resend** integration.
52+
4. Paste your **API Key** in the input field.
53+
5. Click **Connect** to confirm the connection.

pcweb/components/docpage/sidebar/sidebar.py

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from pcweb.constants import ENTERPRISE_DOCS_URL
99
from pcweb.styles.colors import c_color
1010

11-
from .sidebar_items.ai import ai_builder_overview_items, mcp_items
11+
from .sidebar_items.ai import ai_builder_overview_items, mcp_items, ai_builder_integrations
1212
from .sidebar_items.component_lib import component_lib, graphing_libs
1313
from .sidebar_items.enterprise import (
1414
enterprise_items,
@@ -255,6 +255,7 @@ def append_to_items(items, flat_items):
255255
+ graphing_libs
256256
+ recipes
257257
+ ai_builder_overview_items
258+
+ ai_builder_integrations
258259
+ api_reference
259260
+ enterprise_items,
260261
flat_items,
@@ -390,6 +391,7 @@ def sidebar_comp(
390391
#
391392
cli_ref_index: list[int],
392393
ai_builder_overview_index: list[int],
394+
ai_builder_integrations_index: list[int],
393395
tutorials_index: list[int],
394396
width: str = "100%",
395397
):
@@ -432,9 +434,9 @@ def sidebar_comp(
432434
),
433435
sidebar_category(
434436
"Integrations",
435-
"/integrations",
437+
ai_builder_pages.integrations.overview.path,
436438
"codesandbox",
437-
3,
439+
2,
438440
),
439441
class_name="flex flex-col items-start gap-1 w-full list-none",
440442
),
@@ -533,6 +535,19 @@ def sidebar_comp(
533535
class_name="flex flex-col items-start gap-6 p-[0px_1rem_0px_0.5rem] w-full list-none list-style-none",
534536
),
535537
),
538+
(
539+
2,
540+
rx.el.ul(
541+
create_sidebar_section(
542+
"Integration",
543+
ai_builder_pages.integrations.overview.path,
544+
ai_builder_integrations,
545+
ai_builder_integrations_index,
546+
url,
547+
),
548+
class_name="flex flex-col items-start gap-6 p-[0px_1rem_0px_0.5rem] w-full list-none list-style-none",
549+
),
550+
),
536551
),
537552
rx.cond( # pyright: ignore [reportCallIssue]
538553
rx.State.router.page.path.startswith("/docs/"),
@@ -678,6 +693,7 @@ def sidebar(url=None, width: str = "100%") -> rx.Component:
678693

679694
cli_ref_index = calculate_index(cli_ref, url)
680695
ai_builder_overview_index = calculate_index(ai_builder_overview_items, url)
696+
ai_builder_integrations_index = calculate_index(ai_builder_integrations, url)
681697
mcp_index = calculate_index(mcp_items, url)
682698

683699
return rx.box(
@@ -694,9 +710,9 @@ def sidebar(url=None, width: str = "100%") -> rx.Component:
694710
enterprise_usage_index=enterprise_usage_index,
695711
enterprise_component_index=enterprise_component_index,
696712
ai_builder_overview_index=ai_builder_overview_index,
713+
ai_builder_integrations_index=ai_builder_integrations_index,
697714
cli_ref_index=cli_ref_index,
698715
mcp_index=mcp_index,
699-
#
700716
width=width,
701717
),
702718
on_mount=rx.call_script(Scrollable_SideBar),

pcweb/components/docpage/sidebar/sidebar_items/ai.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,37 @@ def get_sidebar_items_ai_builder_overview():
4242
ai_builder.app_lifecycle.share_app,
4343
],
4444
),
45+
# create_item(
46+
# "Integrations",
47+
# children=[
48+
# ai_builder.integrations.overview,
49+
# ai_builder.integrations.github,
50+
# ai_builder.integrations.database,
51+
# ai_builder.integrations.databricks,
52+
# ai_builder.integrations.azure_auth,
53+
# ai_builder.integrations.okta_auth,
54+
# ai_builder.integrations.google_auth,
55+
# ai_builder.integrations.open_ai,
56+
# ],
57+
# ),
58+
]
59+
60+
def get_ai_builder_integrations():
61+
from pcweb.pages.docs import ai_builder
62+
63+
return [
4564
create_item(
4665
"Integrations",
4766
children=[
67+
ai_builder.integrations.overview,
4868
ai_builder.integrations.github,
4969
ai_builder.integrations.database,
5070
ai_builder.integrations.databricks,
5171
ai_builder.integrations.azure_auth,
5272
ai_builder.integrations.okta_auth,
5373
ai_builder.integrations.google_auth,
5474
ai_builder.integrations.open_ai,
75+
ai_builder.integrations.resend,
5576
],
5677
),
5778
]
@@ -72,4 +93,5 @@ def get_sidebar_items_mcp():
7293

7394

7495
ai_builder_overview_items = get_sidebar_items_ai_builder_overview()
96+
ai_builder_integrations = get_ai_builder_integrations()
7597
mcp_items = get_sidebar_items_mcp()

pcweb/pages/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
from .demo.book_demo import book_demo as book_demo
2222
from .booked import booked as booked
2323
from .to_be_booked import to_be_booked as to_be_booked
24-
from .integrations.integration import integration_page
2524

2625
routes = [
2726
*[r for r in locals().values() if isinstance(r, Route) and r.add_as_page],

pcweb/pages/integrations/integration.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from .integration_header import integration_header
77
from .integration_gallery import integration_filters, integration_gallery, integration_request_form
88

9-
@mainpage(path="/integrations", title="Reflex · Integrations", meta=meta_tags)
9+
# @mainpage(path="/integrations", title="Reflex · Integrations", meta=meta_tags)
1010
def integration_page():
1111
return rx.el.div(
1212
integration_header(),

0 commit comments

Comments
 (0)