-
Notifications
You must be signed in to change notification settings - Fork 894
feat(demo): add AI Calendar Assistant branded email templates #2843
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: canary
Are you sure you want to change the base?
feat(demo): add AI Calendar Assistant branded email templates #2843
Conversation
Add 6 new branded email templates for AI Calendar Assistant: - welcome/ai-calendar-welcome.tsx - Welcome email for new users - magic-links/ai-calendar-magic-link.tsx - Login verification code - notifications/ai-calendar-notification.tsx - Event reminders/updates - reset-password/ai-calendar-reset-password.tsx - Password reset - newsletters/ai-calendar-newsletter.tsx - Monthly product updates - receipts/ai-calendar-receipt.tsx - Payment receipts Brand colors used: - Primary: #f97316 (vibrant orange) - Text: #0a0a0b (dark charcoal) - Muted: #737373 (gray) - Background: #f6f9fc (light gray) - Font: Space Grotesk Also adds 'ai-calendar' font family to tailwind.config.ts Co-authored-by: Yosef Hayim Sabag <[email protected]>
|
|
@YosefHayim is attempting to deploy a commit to the resend Team on Vercel. A member of the Team first needs to authorize it. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
13 issues found across 7 files
Prompt for AI agents (all issues)
Check if these issues are valid — if so, understand the root cause of each and fix them.
<file name="apps/demo/emails/reset-password/ai-calendar-reset-password.tsx">
<violation number="1" location="apps/demo/emails/reset-password/ai-calendar-reset-password.tsx:16">
P2: Rule violated: **Initialisms and Acronyms Naming Conventions**
Rename the `AICalendarResetPasswordEmail*` identifiers to use standard PascalCase (`AiCalendar...`) so that acronyms follow the project’s initialism casing rule.</violation>
<violation number="2" location="apps/demo/emails/reset-password/ai-calendar-reset-password.tsx:17">
P2: Reset password email marks critical props optional but uses them directly, so omitted values produce a blank greeting and a reset button without a valid link.</violation>
</file>
<file name="apps/demo/emails/notifications/ai-calendar-notification.tsx">
<violation number="1" location="apps/demo/emails/notifications/ai-calendar-notification.tsx:17">
P2: Rule violated: **Initialisms and Acronyms Naming Conventions**
Rename the interface and component so the “AI” acronym follows the project’s camelCase/PascalCase convention (e.g., `AiCalendarNotificationEmailProps` / `AiCalendarNotificationEmail`). This keeps identifier casing consistent with the Initialisms and Acronyms Naming Conventions rule.</violation>
<violation number="2" location="apps/demo/emails/notifications/ai-calendar-notification.tsx:18">
P2: Email template marks required content props optional and uses them without defaults, risking blank/`undefined` strings in the rendered email when callers omit them.</violation>
</file>
<file name="apps/demo/emails/welcome/ai-calendar-welcome.tsx">
<violation number="1" location="apps/demo/emails/welcome/ai-calendar-welcome.tsx:21">
P2: Logo falls back to root-relative URL when VERCEL_URL is unset, causing broken image in emails without an absolute base URL.</violation>
<violation number="2" location="apps/demo/emails/welcome/ai-calendar-welcome.tsx:45">
P2: Greeting renders malformed text when optional userFirstName is undefined ("Welcome to AI Calendar Assistant, !")</violation>
</file>
<file name="apps/demo/emails/magic-links/ai-calendar-magic-link.tsx">
<violation number="1" location="apps/demo/emails/magic-links/ai-calendar-magic-link.tsx:15">
P1: Rule violated: **Initialisms and Acronyms Naming Conventions**
Rename `AICalendarMagicLinkEmailProps` so the “AI” acronym follows PascalCase (e.g., `AiCalendarMagicLinkEmailProps`) to keep identifier casing consistent with the Initialisms and Acronyms Naming Convention.</violation>
<violation number="2" location="apps/demo/emails/magic-links/ai-calendar-magic-link.tsx:23">
P1: Rule violated: **Initialisms and Acronyms Naming Conventions**
Rename `AICalendarMagicLinkEmail` so the “AI” acronym is cased like a normal word (e.g., `AiCalendarMagicLinkEmail`) to comply with the Initialisms and Acronyms Naming Convention.</violation>
<violation number="3" location="apps/demo/emails/magic-links/ai-calendar-magic-link.tsx:33">
P2: Image references `${baseUrl}/static/ai-calendar-logo.png` but the asset does not exist; email logos will 404</violation>
<violation number="4" location="apps/demo/emails/magic-links/ai-calendar-magic-link.tsx:52">
P2: Unsupported Tailwind utilities (`w-9/10`, `mb-9.5`) will be purged, breaking email layout.</violation>
</file>
<file name="apps/demo/emails/newsletters/ai-calendar-newsletter.tsx">
<violation number="1" location="apps/demo/emails/newsletters/ai-calendar-newsletter.tsx:19">
P2: Rule violated: **Initialisms and Acronyms Naming Conventions**
Rename the type so that the embedded acronym follows camel/Pascal casing (e.g., `AiCalendarNewsletterEmailProps`) to comply with the Initialisms and Acronyms Naming Conventions rule.</violation>
<violation number="2" location="apps/demo/emails/newsletters/ai-calendar-newsletter.tsx:50">
P2: Rule violated: **Initialisms and Acronyms Naming Conventions**
Normalize the component name’s acronym to PascalCase (e.g., `AiCalendarNewsletterEmail`) so it adheres to the Initialisms and Acronyms Naming Conventions rule.</violation>
</file>
<file name="apps/demo/emails/receipts/ai-calendar-receipt.tsx">
<violation number="1" location="apps/demo/emails/receipts/ai-calendar-receipt.tsx:18">
P2: Rule violated: **Initialisms and Acronyms Naming Conventions**
Rename the receipt email interface/component so the “AI” acronym follows the project’s camel/pascal casing convention (e.g., AiCalendarReceiptEmailProps / AiCalendarReceiptEmail) instead of remaining all caps to maintain consistent identifier style per the Initialisms and Acronyms Naming Conventions rule.</violation>
</file>
Since this is your first cubic review, here's how it works:
- cubic automatically reviews your code and comments on bugs and improvements
- Teach cubic by replying to its comments. cubic learns from your replies and gets better over time
- Ask questions if you need clarification on any suggestion
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.
…faults - Rename all AICalendar* identifiers to AiCalendar* to follow the project's Initialisms and Acronyms Naming Conventions rule - Add default values for all optional props to prevent undefined values rendering in the email output (e.g., 'Welcome, !' becomes 'Welcome, there!') Addresses review feedback from cubic-dev-ai on PR resend#2843
- Changed the base URL in both AiCalendarMagicLinkEmail and AiCalendarWelcomeEmail components to ensure proper email rendering.
- Introduced a new logo image for the AI Calendar email templates to enhance branding and visual identity.
Summary
This PR adds 6 new branded email templates for AI Calendar Assistant - an AI-powered calendar management application.
New Templates
ai-calendar-welcome.tsxai-calendar-magic-link.tsxai-calendar-notification.tsxai-calendar-reset-password.tsxai-calendar-newsletter.tsxai-calendar-receipt.tsxBrand Colors
All templates use the AI Calendar Assistant brand identity:
#f97316(vibrant orange)#e1430d#0a0a0b(dark charcoal)#737373#f6f9fc#e5e5e5Changes
ai-calendarfont family totailwind.config.tsScreenshots
Templates follow the existing code style and patterns in the demo folder (Tailwind-based styling, named exports + default export, PreviewProps for preview data).
Submitted by Yosef Hayim Sabag
Summary by cubic
Add six AI Calendar Assistant–branded email templates to the demo for onboarding, auth, notifications, newsletters, and billing. Also adds the brand font and logo, and updates base URLs and defaults for reliable rendering.
Written for commit 69fa1d7. Summary will update on new commits.