Buckets:
| // @ts-nocheck | |
| import React from "react" | |
| import { Img, Row, Html, Link, Body, Head, Button, Column, Preview, Section, Container } from "@jsx-email/all" | |
| import { Text, Fonts, Title, A, Span } from "../components" | |
| import { | |
| unit, | |
| body, | |
| frame, | |
| headingText, | |
| container, | |
| contentText, | |
| button, | |
| contentHighlightText, | |
| linkText, | |
| buttonText, | |
| } from "../styles" | |
| const CONSOLE_URL = "https://opencode.ai/" | |
| interface InviteEmailProps { | |
| inviter: string | |
| workspaceID: string | |
| workspaceName: string | |
| assetsUrl: string | |
| } | |
| export const InviteEmail = ({ | |
| inviter = "test@anoma.ly", | |
| workspaceID = "wrk_01K6XFY7V53T8XN0A7X8G9BTN3", | |
| workspaceName = "anomaly", | |
| assetsUrl = `${CONSOLE_URL}email`, | |
| }: InviteEmailProps) => { | |
| const messagePlain = `${inviter} invited you to join the ${workspaceName} workspace.` | |
| const url = `${CONSOLE_URL}workspace/${workspaceID}` | |
| return ( | |
| <Html lang="en"> | |
| <Head> | |
| <Title>{`OpenCode — ${messagePlain}`}</Title> | |
| </Head> | |
| <Fonts assetsUrl={assetsUrl} /> | |
| <Preview>{messagePlain}</Preview> | |
| <Body style={body} id={Math.random().toString()}> | |
| <Container style={container}> | |
| <Section style={frame}> | |
| <Row> | |
| <Column> | |
| <A href={`${CONSOLE_URL}zen`}> | |
| <Img height="32" alt="OpenCode Logo" src={`${assetsUrl}/logo.png`} /> | |
| </A> | |
| </Column> | |
| </Row> | |
| <Section style={{ padding: `${unit * 2}px 0 0 0` }}> | |
| <Text style={headingText}>Join your team's OpenCode workspace</Text> | |
| <Text style={contentText}> | |
| You have been invited by <Span style={contentHighlightText}>{inviter}</Span> to join the{" "} | |
| <Span style={contentHighlightText}>{workspaceName}</Span> workspace on OpenCode. | |
| </Text> | |
| </Section> | |
| <Section style={{ padding: `${unit}px 0 0 0` }}> | |
| <Button style={button} href={url}> | |
| <Text style={buttonText}> | |
| Join workspace | |
| <Img width="24" height="24" src={`${assetsUrl}/right-arrow.png`} alt="Arrow right" /> | |
| </Text> | |
| </Button> | |
| </Section> | |
| <Section style={{ padding: `${unit}px 0 0 0` }}> | |
| <Text style={contentText}>Button not working? Copy the following link...</Text> | |
| <Link href={url}> | |
| <Text style={linkText}>{url}</Text> | |
| </Link> | |
| </Section> | |
| </Section> | |
| </Container> | |
| </Body> | |
| </Html> | |
| ) | |
| } | |
| export default InviteEmail | |
Xet Storage Details
- Size:
- 2.62 kB
- Xet hash:
- 4b6d0fe7eaf735fa503b5da436805701d8c299dbda23bb4027192d483f15228a
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.