Repository navigation
Flatten product emails on phones like the welcome email - #205
Conversation
Monitor alerts, digests, the email alert confirmation, sign-in links and Scale inquiries share one shell that kept the page inset and card border on phones. Below 620px the card now fills the width with no border or radius, its padding drops from 34px to 24px 18px, and the logo row sits closer to the content. PaddedCell moves to its own module so both templates use it, since react-email's Container keeps the class off the cell that holds padding.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Review of head Verdict: changes-needed before reviewer approval — validation is blocked, rather than a confirmed material code defect. I found no material correctness or security regression in the full three-file diff, complete templates/helper, five shared-shell callers, and relevant test files. The PaddedCell extraction is unchanged; message content, links, escaping, CID logo and plain-text rendering path remain intact. Mobile rules now target the cell that actually holds padding. Nonblocking observations:
Verification:
Remaining validation before I give approval: independently render the shared email types at phone/breakpoint/desktop widths, verify stylesheet-free fallback and unchanged welcome output, and run the focused email suites. No implementation change is requested solely because the reviewer execution service is unavailable. |
Summary
#204 flattened the welcome email on phones, but every other email still nested the text inside a page inset and a bordered card. Monitor alerts, digests, the email alert confirmation, sign-in links and Scale inquiries all use the shared shell in
email-templates.tsx, which had no mobile rules.Below 620px the shell now matches the welcome email:
Desktop is unchanged. The rules use class selectors only, because Gmail drops a whole
<style>block if any rule in it is unsupported.PaddedCellmoves fromwelcome-email.tsxintoemail-padded-cell.tsxso both templates can use it. react-email'sContainerputs padding on an inner cell that a class can't reach, so the shell needs a cell that carries both.Testing
npx vitest run test/welcome-email.test.ts test/notification-email.test.ts test/auth-config.test.ts: 23 passed.