History

Add fresh Google Workspace homepage (#1638)

Rhys Sullivan committed 2 months ago

Commit 7f5151e1 parent ffb28cc3 files · +195 −0Browse files

Unified · Split

3 files
  1. apps/cloud/src/edge/marketing.test.ts +1 −0
  2. apps/cloud/src/edge/marketing.ts +1 −0
  3. apps/marketing/src/pages/google-workspace.astro +193 −0
apps/cloud/src/edge/marketing.test.ts+1−0
@@ -13,6 +13,7 @@ describe("isMarketingPath", () => { · 12 unmodified lines
1313 "/privacy",
1414 "/terms",
1515 "/google-oauth",
16+ "/google-workspace",
1617 "/blog",
1718 "/blog/",
1819 "/blog/some-post",
apps/cloud/src/edge/marketing.ts+1−0
@@ -15,6 +15,7 @@ const MARKETING_PATHS = [ · 14 unmodified lines
1515 "/privacy",
1616 "/terms",
1717 "/google-oauth",
18+ "/google-workspace",
1819 "/blog",
1920 "/llms.txt",
2021 "/api/detect",
apps/marketing/src/pages/google-workspace.astro+193−0
@@ -0,0 +1,193 @@
1+---
2+const services = [
3+ {
4+ name: "Google Calendar",
5+ description:
6+ "Read calendars and events, and create, update, or remove events when you ask an agent to manage your schedule.",
7+ },
8+ {
9+ name: "Gmail",
10+ description:
11+ "Read, search, compose, send, label, archive, or move messages to trash when you ask an agent to work with your email.",
12+ },
13+ {
14+ name: "Google Sheets",
15+ description:
16+ "Read spreadsheet data and update cells, ranges, or worksheets when you ask an agent to work with a spreadsheet.",
17+ },
18+] as const;
19+---
20+
21+<!doctype html>
22+<html lang="en">
23+ <head>
24+ <meta charset="UTF-8" />
25+ <meta name="viewport" content="width=device-width" />
26+ <meta name="robots" content="index, follow" />
27+ <meta
28+ name="description"
29+ content="Executor connects AI agents to Google Calendar, Gmail, and Google Sheets with your permission."
30+ />
31+ <link rel="canonical" href="https://executor.sh/google-workspace" />
32+ <title>Executor</title>
33+ <style>
34+ :root {
35+ color-scheme: light;
36+ font-family:
37+ Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
38+ color: #161616;
39+ background: #f7f6f1;
40+ }
41+
42+ * {
43+ box-sizing: border-box;
44+ }
45+
46+ body {
47+ margin: 0;
48+ line-height: 1.6;
49+ }
50+
51+ a {
52+ color: #174ea6;
53+ }
54+
55+ header,
56+ main,
57+ footer {
58+ width: min(760px, calc(100% - 40px));
59+ margin-inline: auto;
60+ }
61+
62+ header {
63+ padding: 72px 0 38px;
64+ border-bottom: 1px solid #d8d6cd;
65+ }
66+
67+ .brand {
68+ margin: 0 0 24px;
69+ font-size: 15px;
70+ font-weight: 700;
71+ letter-spacing: 0.04em;
72+ text-transform: uppercase;
73+ }
74+
75+ h1 {
76+ margin: 0;
77+ font-size: clamp(48px, 10vw, 76px);
78+ line-height: 1;
79+ letter-spacing: -0.055em;
80+ }
81+
82+ .purpose {
83+ max-width: 680px;
84+ margin: 28px 0 0;
85+ font-size: 20px;
86+ line-height: 1.55;
87+ }
88+
89+ section {
90+ padding: 42px 0;
91+ border-bottom: 1px solid #d8d6cd;
92+ }
93+
94+ h2 {
95+ margin: 0 0 16px;
96+ font-size: 25px;
97+ letter-spacing: -0.025em;
98+ }
99+
100+ h3 {
101+ margin: 0 0 5px;
102+ font-size: 18px;
103+ }
104+
105+ p {
106+ margin: 0 0 18px;
107+ }
108+
109+ ul {
110+ display: grid;
111+ gap: 22px;
112+ margin: 26px 0 0;
113+ padding: 0;
114+ list-style: none;
115+ }
116+
117+ li p {
118+ margin: 0;
119+ }
120+
121+ footer {
122+ display: flex;
123+ flex-wrap: wrap;
124+ justify-content: space-between;
125+ gap: 16px;
126+ padding: 30px 0 64px;
127+ font-size: 14px;
128+ }
129+ </style>
130+ </head>
131+ <body>
132+ <header>
133+ <p class="brand">Useful Software Company</p>
134+ <h1>Executor</h1>
135+ <p class="purpose">
136+ Executor is an integration platform and MCP gateway for AI agents. Executor lets you
137+ securely connect Google Calendar, Gmail, and Google Sheets so an agent can read your
138+ Google data and take only the actions you request.
139+ </p>
140+ </header>
141+
142+ <main>
143+ <section aria-labelledby="purpose-heading">
144+ <h2 id="purpose-heading">Why Executor requests access to Google data</h2>
145+ <p>
146+ You choose which Google service to connect. Executor requests the permissions needed
147+ to provide that connection and uses the resulting Google data to carry out your
148+ instructions. Connecting Google does not give Executor permission to act on its own.
149+ </p>
150+ <ul>
151+ {
152+ services.map((service) => (
153+ <li>
154+ <h3>{service.name}</h3>
155+ <p>{service.description}</p>
156+ </li>
157+ ))
158+ }
159+ </ul>
160+ </section>
161+
162+ <section aria-labelledby="control-heading">
163+ <h2 id="control-heading">You control the connection</h2>
164+ <p>
165+ Executor exposes specific Google actions and their inputs. You can allow an action,
166+ require approval, or block it through the policies you configure in Executor. You can
167+ remove a connection in Executor or revoke it from your
168+ <a href="https://myaccount.google.com/permissions">Google Account permissions</a>.
169+ </p>
170+ </section>
171+
172+ <section aria-labelledby="privacy-heading">
173+ <h2 id="privacy-heading">Privacy and Google API data</h2>
174+ <p>
175+ Executor does not sell Google user data. Executor uses Google data only to provide and
176+ improve the user-facing integration features you request, as described in the
177+ <a href="https://executor.sh/privacy">Executor Privacy Policy</a>.
178+ </p>
179+ <p>
180+ Executor's use and transfer of information received from Google APIs adheres to the
181+ <a href="https://developers.google.com/terms/api-services-user-data-policy"
182+ >Google API Services User Data Policy</a
183+ >, including the Limited Use requirements.
184+ </p>
185+ </section>
186+ </main>
187+
188+ <footer>
189+ <span>Executor · Useful Software Company</span>
190+ <span><a href="https://executor.sh/privacy">Privacy Policy</a> · <a href="https://executor.sh/terms">Terms of Service</a></span>
191+ </footer>
192+ </body>
193+</html>