diff --git a/packages/console/core/src/user.ts b/packages/console/core/src/user.ts
index 8b3defdb..89148a7c 100644
--- a/packages/console/core/src/user.ts
+++ b/packages/console/core/src/user.ts
@@ -134,7 +134,7 @@ export namespace User {
const { InviteEmail } = await import("@opencode-ai/console-mail/InviteEmail.jsx")
await AWS.sendEmail({
to: email,
- subject: `You've been invited to join the ${emailInfo.workspaceName} workspace on OpenCode Console`,
+ subject: `You've been invited to join the ${emailInfo.workspaceName} workspace on OpenCode`,
body: render(
// @ts-ignore
InviteEmail({
diff --git a/packages/console/mail/emails/components.tsx b/packages/console/mail/emails/components.tsx
index ff845c8f..5d2154d5 100644
--- a/packages/console/mail/emails/components.tsx
+++ b/packages/console/mail/emails/components.tsx
@@ -1,26 +1,10 @@
// @ts-nocheck
import React from "react"
-import { Font, Hr as JEHr, Text as JEText, type HrProps, type TextProps } from "@jsx-email/all"
-import { DIVIDER_COLOR, SURFACE_DIVIDER_COLOR, textColor } from "./styles"
+import { Font, Text as JEText, type TextProps } from "@jsx-email/all"
+import { baseText } from "./styles"
export function Text(props: TextProps) {
- return
-}
-
-export function Hr(props: HrProps) {
- return
-}
-
-export function SurfaceHr(props: HrProps) {
- return (
-
- )
+ return
}
export function Title({ children }: TitleProps) {
diff --git a/packages/console/mail/emails/styles.ts b/packages/console/mail/emails/styles.ts
index f9b62a7c..84c2b53b 100644
--- a/packages/console/mail/emails/styles.ts
+++ b/packages/console/mail/emails/styles.ts
@@ -1,110 +1,90 @@
-export const unit = 16;
-
-export const GREY_COLOR = [
- "#1A1A2E", //0
- "#2F2F41", //1
- "#444454", //2
- "#585867", //3
- "#6D6D7A", //4
- "#82828D", //5
- "#9797A0", //6
- "#ACACB3", //7
- "#C1C1C6", //8
- "#D5D5D9", //9
- "#EAEAEC", //10
- "#FFFFFF", //11
-];
-
-export const BLUE_COLOR = "#395C6B";
-export const DANGER_COLOR = "#ED322C";
-export const TEXT_COLOR = GREY_COLOR[0];
-export const SECONDARY_COLOR = GREY_COLOR[5];
-export const DIMMED_COLOR = GREY_COLOR[7];
-export const DIVIDER_COLOR = GREY_COLOR[10];
-export const BACKGROUND_COLOR = "#F0F0F1";
-export const SURFACE_COLOR = DIVIDER_COLOR;
-export const SURFACE_DIVIDER_COLOR = GREY_COLOR[9];
+export const unit = 12
+export const PRIMARY_COLOR = "#211E1E"
+export const TEXT_COLOR = "#656363"
+export const LINK_COLOR = "#007AFF"
+export const LINK_BACKGROUND_COLOR = "#F9F8F8"
+export const BACKGROUND_COLOR = "#F0F0F1"
+export const SURFACE_DIVIDER_COLOR = "#D5D5D9"
export const body = {
background: BACKGROUND_COLOR,
-};
+}
export const container = {
minWidth: "600px",
-};
-
-export const medium = {
- fontWeight: 500,
-};
-
-export const danger = {
- color: DANGER_COLOR,
-};
+ padding: "64px 0px",
+}
export const frame = {
- padding: `${unit * 1.5}px`,
+ padding: `${unit * 2}px`,
border: `1px solid ${SURFACE_DIVIDER_COLOR}`,
background: "#FFF",
borderRadius: "6px",
boxShadow: `0 1px 2px rgba(0,0,0,0.03),
0 2px 4px rgba(0,0,0,0.03),
0 2px 6px rgba(0,0,0,0.03)`,
-};
+}
-export const textColor = {
+export const baseText = {
+ fontFamily: "JetBrains Mono, monospace",
+}
+
+export const headingText = {
+ color: PRIMARY_COLOR,
+ fontSize: "16px",
+ fontStyle: "normal",
+ fontWeight: 500,
+ lineHeight: "normal",
+}
+
+export const contentText = {
color: TEXT_COLOR,
-};
+ fontSize: "14px",
+ fontStyle: "normal",
+ fontWeight: 400,
+ lineHeight: "180%",
+}
-export const code = {
- fontFamily: "IBM Plex Mono, monospace",
-};
+export const buttonText = {
+ color: "#FDFCFC",
+ fontSize: "16px",
+ fontWeight: 500,
+ margin: 0,
+ padding: 0,
+ display: "inline-flex",
+ alignItems: "center",
+ gap: "8px",
+}
-export const headingHr = {
- margin: `${unit}px 0`,
-};
-
-export const buttonPrimary = {
- ...code,
- padding: "12px 18px",
- color: "#FFF",
+export const linkText = {
+ color: LINK_COLOR,
+ fontSize: "14px",
+ fontStyle: "normal",
+ fontWeight: 400,
+ lineHeight: "150%",
+ textDecorationLine: "underline",
+ textDecorationStyle: "solid" as const,
+ textDecorationSkipInk: "auto" as const,
+ textDecorationThickness: "auto",
+ textUnderlineOffset: "auto",
+ textUnderlinePosition: "from-font",
borderRadius: "4px",
- background: BLUE_COLOR,
- fontSize: "12px",
- fontWeight: 500,
-};
+ background: LINK_BACKGROUND_COLOR,
+ padding: "8px 12px",
+ textAlign: "center" as const,
+}
-export const compactText = {
- margin: "0 0 2px",
-};
+export const contentHighlightText = {
+ color: PRIMARY_COLOR,
+}
-export const breadcrumb = {
- fontSize: "14px",
- color: SECONDARY_COLOR,
-};
-
-export const breadcrumbColonSeparator = {
- padding: " 0 4px",
- color: DIMMED_COLOR,
-};
-
-export const breadcrumbSeparator = {
- color: DIVIDER_COLOR,
-};
-
-export const heading = {
- fontSize: "22px",
- fontWeight: 500,
-};
-
-export const sectionLabel = {
- ...code,
- ...compactText,
- letterSpacing: "0.5px",
- fontSize: "13px",
- fontWeight: 500,
- color: DIMMED_COLOR,
-};
-
-export const footerLink = {
- fontSize: "14px",
-};
+export const button = {
+ display: "inline-grid",
+ padding: "8px 12px 8px 20px",
+ justifyContent: "center",
+ alignItems: "center",
+ gap: "8px",
+ flexShrink: "0",
+ borderRadius: "4px",
+ backgroundColor: PRIMARY_COLOR,
+}
diff --git a/packages/console/mail/emails/templates/InviteEmail.tsx b/packages/console/mail/emails/templates/InviteEmail.tsx
index c2732426..033b607a 100644
--- a/packages/console/mail/emails/templates/InviteEmail.tsx
+++ b/packages/console/mail/emails/templates/InviteEmail.tsx
@@ -1,26 +1,20 @@
-// @ts-nocheck
import React from "react"
import { Img, Row, Html, Link, Body, Head, Button, Column, Preview, Section, Container } from "@jsx-email/all"
-import { Hr, Text, Fonts, SplitString, Title, A, Span, B } from "../components"
+import { Text, Fonts, Title, A, Span } from "../components"
import {
unit,
body,
- code,
frame,
- medium,
- heading,
+ headingText,
container,
- headingHr,
- footerLink,
- breadcrumb,
- compactText,
- buttonPrimary,
- breadcrumbColonSeparator,
+ contentText,
+ button,
+ contentHighlightText,
+ linkText,
+ buttonText,
} from "../styles"
-const LOCAL_ASSETS_URL = "/static"
const CONSOLE_URL = "https://opencode.ai/"
-const DOC_URL = "https://opencode.ai/docs/zen"
interface InviteEmailProps {
inviter: string
@@ -32,9 +26,8 @@ export const InviteEmail = ({
inviter = "test@anoma.ly",
workspaceID = "wrk_01K6XFY7V53T8XN0A7X8G9BTN3",
workspaceName = "anomaly",
- assetsUrl = LOCAL_ASSETS_URL,
+ assetsUrl = `${CONSOLE_URL}email`,
}: InviteEmailProps) => {
- const subject = `You've been invited to join the ${workspaceName} workspace on OpenCode Console`
const messagePlain = `${inviter} invited you to join the ${workspaceName} workspace.`
const url = `${CONSOLE_URL}workspace/${workspaceID}`
return (
@@ -55,50 +48,36 @@ export const InviteEmail = ({
-
-
-
-
-
-
-
-
- {inviter} invited you to join the{" "}
-
- {workspaceName}
- {" "}
- workspace in the{" "}
-
- OpenCode Console
-
- .
+
+ Join your team's OpenCode workspace
+
+ You have been invited by {inviter} to join the{" "}
+ {workspaceName} workspace on OpenCode.
-
-
-
-
-
-
-
-
-
-
- Console
-
-
-
-
- About
-
-
-
+
+ Button not working? Copy the following link...
+
+ {url}
+
+