Email kit
The email design brings an app’s paper into the inbox: a narrow column, quiet ruling, compact words and a green action. The renderer lives in DS1/4-page/email.ts, and every product that sends mail carries a copy of that same source.
See it
Section titled “See it”Choose a product, message, width and paper. These are sample messages rendered by the shared design, with no delivery or account actions. The HTML and plain text below are the actual generated output.
Plain text
Notes Happy onboarding : ) Hi, Notes keeps your lists and notes the way you like them. Make a simple list or a whole new system. Begin here: https://example.com Feel free to reply if you have thoughts or questions.
Generated HTML
<!doctype html>
<html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="color-scheme" content="light dark"><meta name="supported-color-schemes" content="light dark"><title>Happy onboarding : )</title>
<style>
@media screen and (max-width:700px) {
.ds-email-type {font-size:28px !important;line-height:40px !important;letter-spacing:-0.8px !important;}
.ds-email-paper {min-height:1280px !important;background-image:linear-gradient(to right,rgba(0,0,0,0.07) 1px,transparent 1px),repeating-linear-gradient(to bottom,rgba(0,0,0,0.07) 0 1px,transparent 1px 40px) !important;background-size:40px 100%,100% calc(100% - 40px - 8px) !important;background-position:calc(50% + 20px) 0,0 calc(40px + 8px) !important;}
.ds-email-outer {padding:calc(8px + 40px) 40px 40px !important;}
.ds-email-page {width:480px !important;}
.ds-email-cell-row {height:40px !important;}
.ds-email-cell {width:160px !important;height:40px !important;}
.ds-email-paragraph {margin-top:40px !important;}
.ds-email-content p,.ds-email-content h1 {margin-bottom:40px !important;}
.ds-email-section {margin:0 0 40px !important;}
.ds-email-detail {padding-bottom:40px !important;}
.ds-email-cell-wide {width:320px !important;}
.ds-email-cell-label {font-size:28px !important;line-height:40px !important;font-weight:400 !important;letter-spacing:normal !important;}
.ds-email-ink {top:4px !important;padding-left:4px !important;}
.ds-email-cell-ink {padding:0 4px !important;}
.ds-email-gap-one {padding-top:40px !important;}
.ds-email-gap-two {padding-top:80px !important;}
.ds-email-company-row {padding-top:200px !important;}
.ds-email-greeting {padding-top:40px !important;}
.ds-email-action-row {padding-top:88px !important;}
.ds-email-action {letter-spacing:normal !important;height:32px !important;line-height:30px !important;padding:1px !important;}
.ds-email-action-label {line-height:30px !important;}}
@media screen and (max-width:559.98px) {
.ds-email-type {font-size:5vw !important;line-height:7.142857vw !important;letter-spacing:-0.142857vw !important;}
.ds-email-paper {min-height:228.571429vw !important;background-image:linear-gradient(to right,rgba(0,0,0,0.07) 1px,transparent 1px),repeating-linear-gradient(to bottom,rgba(0,0,0,0.07) 0 1px,transparent 1px 7.142857vw) !important;background-size:7.142857vw 100%,100% calc(100% - 7.142857vw - 8px) !important;background-position:calc(50% + 3.571429vw) 0,0 calc(7.142857vw + 8px) !important;}
.ds-email-outer {padding:calc(8px + 7.142857vw) 7.142857vw 7.142857vw !important;}
.ds-email-page {width:85.714286vw !important;}
.ds-email-cell-row {height:7.142857vw !important;}
.ds-email-cell {width:28.571429vw !important;height:7.142857vw !important;}
.ds-email-paragraph {margin-top:7.142857vw !important;}
.ds-email-content p,.ds-email-content h1 {margin-bottom:7.142857vw !important;}
.ds-email-section {margin:0 0 7.142857vw !important;}
.ds-email-detail {padding-bottom:7.142857vw !important;}
.ds-email-cell-wide {width:57.142857vw !important;}
.ds-email-cell-label {font-size:5vw !important;line-height:7.142857vw !important;font-weight:400 !important;letter-spacing:normal !important;}
.ds-email-ink {top:0.714286vw !important;padding-left:0.714286vw !important;}
.ds-email-cell-ink {padding:0 4px !important;}
.ds-email-gap-one {padding-top:7.142857vw !important;}
.ds-email-gap-two {padding-top:14.285714vw !important;}
.ds-email-company-row {padding-top:35.714286vw !important;}
.ds-email-greeting {padding-top:7.142857vw !important;}
.ds-email-action-row {padding-top:15.714286vw !important;}
.ds-email-action {letter-spacing:normal !important;height:5.714286vw !important;line-height:5.357143vw !important;padding:0.178571vw !important;}
.ds-email-action-label {line-height:5.357143vw !important;}}
@media screen and (max-width:209.98px) {
.ds-email-type {font-size:10.5px !important;line-height:15px !important;letter-spacing:-0.3px !important;}
.ds-email-paper {min-height:480px !important;background-image:linear-gradient(to right,rgba(0,0,0,0.07) 1px,transparent 1px),repeating-linear-gradient(to bottom,rgba(0,0,0,0.07) 0 1px,transparent 1px 15px) !important;background-size:15px 100%,100% calc(100% - 15px - 8px) !important;background-position:calc(50% + 7.5px) 0,0 calc(15px + 8px) !important;}
.ds-email-outer {padding:calc(8px + 15px) 15px 15px !important;}
.ds-email-page {width:180px !important;}
.ds-email-cell-row {height:15px !important;}
.ds-email-cell {width:60px !important;height:15px !important;}
.ds-email-paragraph {margin-top:15px !important;}
.ds-email-content p,.ds-email-content h1 {margin-bottom:15px !important;}
.ds-email-section {margin:0 0 15px !important;}
.ds-email-detail {padding-bottom:15px !important;}
.ds-email-cell-wide {width:120px !important;}
.ds-email-cell-label {font-size:10.5px !important;line-height:15px !important;font-weight:400 !important;letter-spacing:normal !important;}
.ds-email-ink {top:1.5px !important;padding-left:1.5px !important;}
.ds-email-cell-ink {padding:0 4px !important;}
.ds-email-gap-one {padding-top:15px !important;}
.ds-email-gap-two {padding-top:30px !important;}
.ds-email-company-row {padding-top:75px !important;}
.ds-email-greeting {padding-top:15px !important;}
.ds-email-action-row {padding-top:33px !important;}
.ds-email-action {letter-spacing:normal !important;height:12px !important;line-height:11.25px !important;padding:0.375px !important;}
.ds-email-action-label {line-height:11.25px !important;}}
:root {color-scheme:light dark;supported-color-schemes:light dark;}
@media (prefers-color-scheme:dark) {
body.ds-email-type,.ds-email-paper {background-color:#000000 !important;}
.ds-email-type {color:#eeeeee !important;}
.ds-email-company {color:#383838 !important;}
.ds-email-cell {background-color:#3c3c3c !important;color:#b8b8b8 !important;}
.ds-email-action {background-color:#99ff73 !important;color:#2a2a2a !important;}
.ds-email-paper {background-image:linear-gradient(to right,#202020 1px,transparent 1px),repeating-linear-gradient(to bottom,#202020 0 1px,transparent 1px 20px) !important;}
}
@media screen and (prefers-color-scheme:dark) and (max-width:700px) {.ds-email-paper {background-image:linear-gradient(to right,#202020 1px,transparent 1px),repeating-linear-gradient(to bottom,#202020 0 1px,transparent 1px 40px) !important;}}
@media screen and (prefers-color-scheme:dark) and (max-width:559.98px) {.ds-email-paper {background-image:linear-gradient(to right,#202020 1px,transparent 1px),repeating-linear-gradient(to bottom,#202020 0 1px,transparent 1px 7.142857vw) !important;}}
@media screen and (prefers-color-scheme:dark) and (max-width:209.98px) {.ds-email-paper {background-image:linear-gradient(to right,#202020 1px,transparent 1px),repeating-linear-gradient(to bottom,#202020 0 1px,transparent 1px 15px) !important;}}
@font-face { font-family:'GT-America-Standard-Regular'; src:url('/email-assets/GT-America-Standard-Regular.woff2') format('woff2'); font-weight:400; font-style:normal; mso-font-alt:Arial; }
</style>
<!--[if mso]><style>body,table,td,a,p {font-family:Arial,Helvetica,sans-serif !important;}</style><![endif]-->
</head>
<body class="ds-email-type" style="margin:0;padding:0;background-color:#ffffff;font-family:'GT-America-Standard-Regular',Arial,Helvetica,sans-serif;font-size:14px;font-weight:400;line-height:20px;mso-line-height-rule:exactly;letter-spacing:-0.4px;color:#2a2a2a;-webkit-text-size-adjust:100%">
<table class="ds-email-paper ds-email-type" role="presentation" width="100%" cellpadding="0" cellspacing="0" style="min-height:640px;background-color:#ffffff;background-image:linear-gradient(to right,rgba(0,0,0,0.07) 1px,transparent 1px),repeating-linear-gradient(to bottom,rgba(0,0,0,0.07) 0 1px,transparent 1px 20px);background-size:20px 100%,100% calc(100% - 28px);background-position:calc(50% + 10px) 0, 0 28px;background-repeat:repeat-x,no-repeat;font-family:'GT-America-Standard-Regular',Arial,Helvetica,sans-serif;font-size:14px;font-weight:400;line-height:20px;mso-line-height-rule:exactly;letter-spacing:-0.4px;color:#2a2a2a"><tr><td class="ds-email-outer" align="center" valign="top" style="padding:28px 20px 20px">
<table class="ds-email-page ds-email-type" role="presentation" width="240" cellpadding="0" cellspacing="0" style="width:240px;table-layout:fixed;border-collapse:collapse;font-family:'GT-America-Standard-Regular',Arial,Helvetica,sans-serif;font-size:14px;font-weight:400;line-height:20px;mso-line-height-rule:exactly;letter-spacing:-0.4px;color:#2a2a2a">
<tr><td class="ds-email-cell-row" align="right" height="20" style="height:20px;padding:0;font-size:0;line-height:0"><a href="https://example.com" class="ds-email-cell ds-email-cell-label" style="text-decoration:none;position:relative;display:block;margin-left:auto;box-sizing:border-box;width:80px;height:20px;border:0;background:#e6e6e6;font-family:'GT-America-Standard-Regular',Arial,Helvetica,sans-serif;font-size:14px;line-height:20px;mso-line-height-rule:exactly;font-weight:400;letter-spacing:normal;color:#797979;text-align:left"><span class="ds-email-cell-ink" style="display:block;box-sizing:border-box;padding:0 4px;white-space:nowrap;overflow:hidden">Notes</span></a></td></tr>
<tr><td class="ds-email-type ds-email-gap-two" style="padding:40px 0 0;font-family:'GT-America-Standard-Regular',Arial,Helvetica,sans-serif;font-size:14px;font-weight:400;line-height:20px;mso-line-height-rule:exactly;letter-spacing:-0.4px;color:#2a2a2a;overflow-wrap:anywhere;word-break:break-word"><div class="ds-email-ink" style="display:block;position:relative;top:2px;padding-left:2px"><h1 style="margin:0;font:inherit;letter-spacing:inherit">Happy onboarding : )</h1></div></td></tr><tr><td class="ds-email-type ds-email-gap-one" style="padding:20px 0 0;font-family:'GT-America-Standard-Regular',Arial,Helvetica,sans-serif;font-size:14px;font-weight:400;line-height:20px;mso-line-height-rule:exactly;letter-spacing:-0.4px;color:#2a2a2a;overflow-wrap:anywhere;word-break:break-word"><div class="ds-email-ink" style="display:block;position:relative;top:2px;padding-left:2px">Hi,</div></td></tr><tr><td class="ds-email-type ds-email-gap-one" style="padding:20px 0 0;font-family:'GT-America-Standard-Regular',Arial,Helvetica,sans-serif;font-size:14px;font-weight:400;line-height:20px;mso-line-height-rule:exactly;letter-spacing:-0.4px;color:#2a2a2a;overflow-wrap:anywhere;word-break:break-word"><div class="ds-email-ink" style="display:block;position:relative;top:2px;padding-left:2px">Notes keeps your lists and notes the way you like them.</div></td></tr><tr><td class="ds-email-type ds-email-gap-one" style="padding:20px 0 0;font-family:'GT-America-Standard-Regular',Arial,Helvetica,sans-serif;font-size:14px;font-weight:400;line-height:20px;mso-line-height-rule:exactly;letter-spacing:-0.4px;color:#2a2a2a;overflow-wrap:anywhere;word-break:break-word"><div class="ds-email-ink" style="display:block;position:relative;top:2px;padding-left:2px">Make a simple list or a whole new system.</div></td></tr><tr><td class="ds-email-action-row" style="padding:44px 0 0;font-size:0;line-height:0"><a class="ds-email-action ds-email-type" href="https://example.com" style="font-family:'GT-America-Standard-Regular',Arial,Helvetica,sans-serif;font-size:14px;font-weight:400;line-height:20px;mso-line-height-rule:exactly;letter-spacing:-0.4px;color:#2a2a2a;box-sizing:border-box;height:16px;line-height:15px;font-weight:500;letter-spacing:normal;vertical-align:top;display:inline-block;white-space:nowrap;border:0;border-radius:0;background:#99ff73;padding:0.5px;text-align:left;text-decoration:none"><span class="ds-email-action-label" style="display:block;line-height:15px;mso-line-height-rule:exactly;letter-spacing:normal">Begin here</span></a></td></tr><tr><td class="ds-email-type ds-email-gap-two" style="padding:40px 0 0;font-family:'GT-America-Standard-Regular',Arial,Helvetica,sans-serif;font-size:14px;font-weight:400;line-height:20px;mso-line-height-rule:exactly;letter-spacing:-0.4px;color:#2a2a2a;overflow-wrap:anywhere;word-break:break-word"><div class="ds-email-ink" style="display:block;position:relative;top:2px;padding-left:2px">Feel free to reply if you have thoughts or questions.</div></td></tr>
</table></td></tr></table></body></html>How it is drawn
Section titled “How it is drawn”| Part | Measure |
|---|---|
| Grid | 20px squares, 1px ruling |
| Reading column | 240px, twelve squares |
| Product label | 80px; 160px for a longer name |
| Type | GT America, 14px on 20px lines; Arial and Helvetica fallbacks |
| Paragraph spacing | One or two squares |
| Action | A 16px green control, square corners |
| Phone scale | Viewport / 280, clamped to 0.75–2 |
Text stands directly on the paper. There are no cards, shadows or oversized headings. The desktop values are inline, so the message remains readable when an inbox ignores styles, web fonts or background images. Presentation tables carry the layout; no scripts, web components, CSS variables or flexbox are required.
The ruling uses translucent black. An inbox that automatically darkens the paper cannot leave bright grey grid lines behind. Clients that support dark-mode styles receive black paper and light text. Browser previews cannot prove how every mail client renders it; inspect delivered mail in Apple Mail, Gmail and Outlook before calling inbox compatibility verified.
Use it
Section titled “Use it”import { emailMessage } from './design-system-1/email';
const message = emailMessage({ product: 'Example', homeUrl: 'https://example.com', title: 'You’re invited', paragraphs: ['Alex shared a project with you.'], action: { label: 'Open project', href: 'https://example.com/project' }, footer: 'You received this because Alex invited you.',});// Send message.subject, message.html and message.text with your mail provider.emailMessage escapes plain-text inputs and builds both HTML and plain text. For richer templates, emailFrame, emailRow and emailAction expose the same structure. The frame body and headerHtml are trusted template HTML: escape user values with escapeHtml, or render them with React. Use server-issued action URLs and keep permissions in the app.
Keep one source
Section titled “Keep one source”Products copy the renderer and font, just as they copy the rest of Design system 1. A product takes them as the email export in its sync.json, and sync1 check verifies the copy. Edit the source here, then sync; never edit the copies.
Product-specific subjects, copy, recipients, replies, unsubscribe links, attachments and delivery stay in the product. A product that sends mail for its customers can keep each workspace’s logo, typeface and colours within the same paper layout, and use a neutral identity for its own mail. Code emails must display the expiry of the provider that actually issued the code.