import { Body, Button, Container, Head, Heading, Hr, Html, Link, Preview, Section, Text, } from "@react-email/components"; import * as React from "react"; interface MeshInvitationProps { meshName: string; inviteUrl: string; token: string; expiresAt: string; appBaseUrl: string; } // Brand tokens — mirror of apps/web/src/assets/styles/globals.css (--cm-*). // Inlined here because email clients don't resolve CSS vars. const brand = { bg: "#141413", bgElevated: "#1f1e1d", bgCode: "#0f0e0d", fg: "#faf9f5", fgSecondary: "#c2c0b6", fgTertiary: "#87867f", clay: "#d97757", clayBorder: "rgba(217, 119, 87, 0.35)", border: "rgba(217, 119, 87, 0.2)", serif: 'Georgia, "Times New Roman", serif', mono: '"JetBrains Mono", "SF Mono", Menlo, Consolas, monospace', sans: '-apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif', } as const; export const MeshInvitation = ({ meshName, inviteUrl, token, expiresAt, appBaseUrl, }: MeshInvitationProps) => { const expiresLabel = new Date(expiresAt).toUTCString(); const launchCmd = `claudemesh launch --join ${inviteUrl}`; const oneLiner = `npm i -g claudemesh-cli && ${launchCmd}`; return (
|
|