Skip to content

Use default export for email templates #2492

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

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

devkiran
Copy link
Collaborator

@devkiran devkiran commented Jun 5, 2025

Summary by CodeRabbit

  • Refactor

    • Standardized all email template exports and imports to use default exports for improved consistency.
    • Updated related import statements throughout the application accordingly.
    • Minor formatting improvements in some files.
  • Style

    • Removed unnecessary trailing spaces and added missing newlines in select files.

No changes to user-facing functionality or workflows.

Copy link

vercel bot commented Jun 5, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Updated (UTC)
dub ✅ Ready (Inspect) Visit Preview Jun 8, 2025 0:03am

Copy link
Contributor

coderabbitai bot commented Jun 5, 2025

Walkthrough

This update standardizes the export style of React components in email template files from named exports to default exports. Correspondingly, all import statements throughout the codebase are updated to use default imports for these components. No functional, logic, or control flow changes are introduced, except for a minor formatting tweak in a logging statement and a concise function signature update.

Changes

File(s) Change Summary
apps/web/app/(ee)/api/cron/.../utils.ts, apps/web/app/(ee)/api/cron/.../route.ts,
apps/web/app/(ee)/api/paypal/webhook/verify-signature.ts, apps/web/app/(ee)/api/stripe/webhook/*.ts*,
apps/web/app/api/auth/reset-password/route.ts, apps/web/app/api/dub/webhook/lead-created.ts,
apps/web/app/api/tokens/route.ts, apps/web/app/api/user/password/route.ts,
apps/web/app/api/user/set-password/route.ts, apps/web/app/api/webhooks/route.ts,
apps/web/app/app.dub.co/(auth)/auth/confirm-email-change/[token]/page.tsx,
apps/web/lib/actions/folders/request-folder-edit-access.ts,
apps/web/lib/actions/partners/*.ts, apps/web/lib/actions/request-password-reset.ts,
apps/web/lib/actions/send-invite-referral-email.ts, apps/web/lib/actions/send-otp.ts,
apps/web/lib/api/domains/claim-dot-link-domain.ts,
apps/web/lib/api/partners/notify-partner-application.ts,
apps/web/lib/api/users.ts, apps/web/lib/auth/options.ts,
apps/web/lib/cron/send-limit-email.ts, apps/web/lib/integrations/install.ts,
apps/web/lib/rewardful/import-commissions.ts, apps/web/scripts/send-emails.tsx,
apps/web/ui/analytics/feedback/action.ts
Changed import statements from named imports to default imports for email template components.
packages/email/src/templates/*.tsx Changed component exports from named to default exports; removed redundant default export statements.
apps/web/lib/stripe/index.ts Simplified function signature for stripeAppClient by consolidating parameter destructuring.
apps/web/app/(ee)/api/paypal/webhook/verify-signature.ts Reformatted a logging statement for improved readability; no logic changes.
packages/ui/src/icons/nucleo/plus2.tsx Removed trailing space and added newline at end of file; no logic changes.

Poem

🥕
The exports have changed, now defaults abound,
Imports adjusted, consistency found.
No logic disturbed, just tidier code,
Rabbits rejoice as best practices flowed.
With every template, a hop and a cheer—
Clean imports and exports, the message is clear!
🐇✨


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b54082e and 99818f2.

📒 Files selected for processing (8)
  • apps/web/lib/actions/partners/create-program.ts (1 hunks)
  • apps/web/lib/api/partners/notify-partner-application.ts (1 hunks)
  • apps/web/lib/rewardful/import-commissions.ts (1 hunks)
  • packages/email/src/templates/campaign-imported.tsx (1 hunks)
  • packages/email/src/templates/new-sale-alert-partner.tsx (1 hunks)
  • packages/email/src/templates/new-sale-alert-program-owner.tsx (1 hunks)
  • packages/email/src/templates/partner-application-received.tsx (1 hunks)
  • packages/email/src/templates/partner-payout-sent.tsx (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • apps/web/lib/actions/partners/create-program.ts
🚧 Files skipped from review as they are similar to previous changes (7)
  • apps/web/lib/api/partners/notify-partner-application.ts
  • packages/email/src/templates/partner-application-received.tsx
  • packages/email/src/templates/campaign-imported.tsx
  • apps/web/lib/rewardful/import-commissions.ts
  • packages/email/src/templates/partner-payout-sent.tsx
  • packages/email/src/templates/new-sale-alert-program-owner.tsx
  • packages/email/src/templates/new-sale-alert-partner.tsx
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: build
✨ Finishing Touches
  • 📝 Generate Docstrings

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@devkiran devkiran marked this pull request as ready for review June 6, 2025 10:47
@devkiran devkiran requested a review from steven-tey June 6, 2025 10:49
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (4)
packages/email/src/templates/reset-password-link.tsx (1)

17-17: Standardize to default export
Default-exporting ResetPasswordLink aligns with the new convention.

packages/email/src/templates/api-key-created.tsx (1)

17-17: Standardize to default export
Default-exporting APIKeyCreated aligns with the new convention.

packages/email/src/templates/partner-banned.tsx (1)

17-17: Standardize to default export
Default-exporting PartnerBanned aligns with the new convention.

packages/email/src/templates/workspace-invite.tsx (1)

17-17: Standardize to default export
Default-exporting WorkspaceInvite aligns with the new convention.

🧹 Nitpick comments (2)
packages/email/src/templates/invalid-domain.tsx (1)

17-27: LGTM! Export style change is consistent.

The conversion to default export is correct and maintains the explicit return type annotation.

Consider adding explicit JSX.Element return type annotations to the other email template components for consistency:

-export default function EmailUpdated({
+export default function EmailUpdated({
   oldEmail = "panic@thedis.co",
   newEmail = "panic@thedis.co",
 }: {
   oldEmail: string;
   newEmail: string;
-}) {
+}): JSX.Element {

This would maintain consistency with the InvalidDomain component's typing approach.

apps/web/lib/stripe/index.ts (1)

12-12: Consider adding an explicit return type
The stripeAppClient function currently infers its return type. To improve clarity and guard against future API changes, consider annotating it explicitly as : Stripe.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 74bc6a7 and b54082e.

📒 Files selected for processing (74)
  • apps/web/app/(ee)/api/cron/domains/transfer/utils.ts (1 hunks)
  • apps/web/app/(ee)/api/cron/domains/verify/utils.ts (1 hunks)
  • apps/web/app/(ee)/api/cron/import/bitly/utils.ts (1 hunks)
  • apps/web/app/(ee)/api/cron/import/csv/utils.ts (1 hunks)
  • apps/web/app/(ee)/api/cron/import/rebrandly/utils.ts (1 hunks)
  • apps/web/app/(ee)/api/cron/import/short/utils.ts (1 hunks)
  • apps/web/app/(ee)/api/cron/usage/utils.ts (1 hunks)
  • apps/web/app/(ee)/api/cron/welcome-user/route.ts (1 hunks)
  • apps/web/app/(ee)/api/cron/year-in-review/route.ts (1 hunks)
  • apps/web/app/(ee)/api/paypal/webhook/verify-signature.ts (1 hunks)
  • apps/web/app/(ee)/api/stripe/webhook/checkout-session-completed.ts (1 hunks)
  • apps/web/app/(ee)/api/stripe/webhook/invoice-payment-failed.tsx (1 hunks)
  • apps/web/app/api/auth/reset-password/route.ts (1 hunks)
  • apps/web/app/api/dub/webhook/lead-created.ts (1 hunks)
  • apps/web/app/api/tokens/route.ts (1 hunks)
  • apps/web/app/api/user/password/route.ts (1 hunks)
  • apps/web/app/api/user/set-password/route.ts (1 hunks)
  • apps/web/app/api/webhooks/route.ts (1 hunks)
  • apps/web/app/app.dub.co/(auth)/auth/confirm-email-change/[token]/page.tsx (1 hunks)
  • apps/web/lib/actions/folders/request-folder-edit-access.ts (1 hunks)
  • apps/web/lib/actions/partners/approve-partner.ts (1 hunks)
  • apps/web/lib/actions/partners/ban-partner.ts (1 hunks)
  • apps/web/lib/actions/partners/create-program.ts (1 hunks)
  • apps/web/lib/actions/partners/invite-partner.ts (1 hunks)
  • apps/web/lib/actions/partners/resend-program-invite.ts (1 hunks)
  • apps/web/lib/actions/request-password-reset.ts (1 hunks)
  • apps/web/lib/actions/send-invite-referral-email.ts (1 hunks)
  • apps/web/lib/actions/send-otp.ts (1 hunks)
  • apps/web/lib/api/domains/claim-dot-link-domain.ts (1 hunks)
  • apps/web/lib/api/partners/notify-partner-application.ts (1 hunks)
  • apps/web/lib/api/users.ts (1 hunks)
  • apps/web/lib/auth/options.ts (1 hunks)
  • apps/web/lib/cron/send-limit-email.ts (1 hunks)
  • apps/web/lib/integrations/install.ts (1 hunks)
  • apps/web/lib/rewardful/import-commissions.ts (1 hunks)
  • apps/web/lib/stripe/index.ts (1 hunks)
  • apps/web/scripts/send-emails.tsx (1 hunks)
  • apps/web/ui/analytics/feedback/action.ts (1 hunks)
  • packages/email/src/templates/api-key-created.tsx (1 hunks)
  • packages/email/src/templates/campaign-imported.tsx (1 hunks)
  • packages/email/src/templates/clicks-exceeded.tsx (1 hunks)
  • packages/email/src/templates/clicks-summary.tsx (1 hunks)
  • packages/email/src/templates/confirm-email-change.tsx (1 hunks)
  • packages/email/src/templates/domain-claimed.tsx (1 hunks)
  • packages/email/src/templates/domain-deleted.tsx (1 hunks)
  • packages/email/src/templates/domain-transferred.tsx (1 hunks)
  • packages/email/src/templates/dub-wrapped.tsx (1 hunks)
  • packages/email/src/templates/email-updated.tsx (1 hunks)
  • packages/email/src/templates/failed-payment.tsx (1 hunks)
  • packages/email/src/templates/feedback-email.tsx (1 hunks)
  • packages/email/src/templates/folder-edit-access-requested.tsx (1 hunks)
  • packages/email/src/templates/integration-installed.tsx (1 hunks)
  • packages/email/src/templates/invalid-domain.tsx (1 hunks)
  • packages/email/src/templates/links-import-errors.tsx (1 hunks)
  • packages/email/src/templates/links-imported.tsx (1 hunks)
  • packages/email/src/templates/links-limit.tsx (1 hunks)
  • packages/email/src/templates/login-link.tsx (1 hunks)
  • packages/email/src/templates/new-referral-signup.tsx (1 hunks)
  • packages/email/src/templates/new-sale-alert-partner.tsx (1 hunks)
  • packages/email/src/templates/new-sale-alert-program-owner.tsx (1 hunks)
  • packages/email/src/templates/partner-application-approved.tsx (1 hunks)
  • packages/email/src/templates/partner-application-received.tsx (1 hunks)
  • packages/email/src/templates/partner-banned.tsx (1 hunks)
  • packages/email/src/templates/partner-invite.tsx (1 hunks)
  • packages/email/src/templates/partner-payout-sent.tsx (1 hunks)
  • packages/email/src/templates/password-updated.tsx (1 hunks)
  • packages/email/src/templates/referral-invite.tsx (1 hunks)
  • packages/email/src/templates/reset-password-link.tsx (1 hunks)
  • packages/email/src/templates/upgrade-email.tsx (1 hunks)
  • packages/email/src/templates/verify-email.tsx (1 hunks)
  • packages/email/src/templates/webhook-added.tsx (1 hunks)
  • packages/email/src/templates/welcome-email.tsx (1 hunks)
  • packages/email/src/templates/workspace-invite.tsx (1 hunks)
  • packages/ui/src/icons/nucleo/plus2.tsx (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: build
🔇 Additional comments (69)
packages/email/src/templates/new-referral-signup.tsx (1)

19-19: Default export consolidation is correct.

Switching to a single default export on the function reduces boilerplate and aligns with the project’s export conventions. No functional changes detected.

packages/ui/src/icons/nucleo/plus2.tsx (1)

20-20: Formatting-only change (removed trailing whitespace and added newline); no review needed.

packages/email/src/templates/email-updated.tsx (1)

17-17:

✅ Verification successful

LGTM! Export style change is consistent.

The conversion from named export to default export is syntactically correct and aligns with the standardization objective.

Verify that all import statements for this component have been updated throughout the codebase:


🏁 Script executed:

#!/bin/bash
# Description: Verify all imports of EmailUpdated have been updated to default imports
# Expected: No occurrences of named imports like { EmailUpdated }

echo "Checking for any remaining named imports of EmailUpdated..."
rg -n "import.*\{.*EmailUpdated.*\}" --type tsx --type ts

echo "Checking for correct default imports of EmailUpdated..."
rg -n "import.*EmailUpdated.*from.*email-updated" --type tsx --type ts

Length of output: 438


🏁 Script executed:

#!/bin/bash
# Re-verify EmailUpdated imports using glob patterns instead of --type

echo "Checking for any remaining named imports of EmailUpdated..."
rg -n "import.*\{.*EmailUpdated.*\}" -g '*.ts' -g '*.tsx'

echo
echo "Checking for correct default imports of EmailUpdated..."
rg -n "import.*EmailUpdated.*from.*email-updated" -g '*.ts' -g '*.tsx'

Length of output: 529


LGTM — Default export conversion verified

  • No remaining named imports of EmailUpdated found.
  • Confirmed default import in apps/web/app/app.dub.co/(auth)/auth/confirm-email-change/[token]/page.tsx.

Approving the export change.

packages/email/src/templates/verify-email.tsx (1)

16-16:

✅ Verification successful

LGTM! Export style change is consistent.

The conversion from named export to default export follows the same pattern as other email templates.

Verify that all import statements for this component have been updated:


🏁 Script executed:

#!/bin/bash
# Description: Verify all imports of VerifyEmail have been updated to default imports
# Expected: No remaining named imports

echo "Checking for any remaining named imports of VerifyEmail..."
rg -n "import.*\{.*VerifyEmail.*\}" --type tsx --type ts

echo "Checking for correct default imports of VerifyEmail..."
rg -n "import.*VerifyEmail.*from.*verify-email" --type tsx --type ts

Length of output: 431


I’ll re-run the import checks without relying on ripgrep’s built-in types:

This will catch any stray named imports and confirm all usages have been updated to default imports.


🏁 Script executed:

#!/bin/bash
# Re-verify imports for VerifyEmail across .ts and .tsx files

echo "Checking for any remaining named imports of VerifyEmail..."
rg -n "import.*{.*VerifyEmail.*}" -g '*.ts' -g '*.tsx'

echo "Checking for correct default imports of VerifyEmail..."
rg -n "import VerifyEmail from.*verify-email" -g '*.ts' -g '*.tsx'

Length of output: 584


I'll run a simpler, fixed-string search to catch any literal named imports and confirm default imports:


🏁 Script executed:

#!/bin/bash
echo "Checking for any remaining named imports of VerifyEmail..."
rg -nF 'import { VerifyEmail' -g '*.ts' -g '*.tsx'

echo "Checking for correct default imports of VerifyEmail..."
rg -nF 'import VerifyEmail from' -g '*.ts' -g '*.tsx'

Length of output: 730


LGTM – all imports updated to default and no stray named imports remain.
The change from a named to default export for VerifyEmail is consistent with other email templates, and our searches confirm only default imports (import VerifyEmail from "@dub/email/templates/verify-email") exist across the codebase.

packages/email/src/templates/partner-invite.tsx (1)

17-17:

✅ Verification successful

LGTM! Export style change is consistent.

The default export conversion maintains functionality while standardizing the export pattern.

Verify that all import statements for this component have been updated:


🏁 Script executed:

#!/bin/bash
# Description: Verify all imports of PartnerInvite have been updated to default imports
# Expected: No remaining named imports

echo "Checking for any remaining named imports of PartnerInvite..."
rg -n "import.*\{.*PartnerInvite.*\}" --type tsx --type ts

echo "Checking for correct default imports of PartnerInvite..."
rg -n "import.*PartnerInvite.*from.*partner-invite" --type tsx --type ts

Length of output: 445


🏁 Script executed:

#!/bin/bash
# Description: Re-verify that all imports of PartnerInvite use default imports
echo "Checking for any remaining named imports of PartnerInvite..."
rg -n "import.*\{.*PartnerInvite.*\}" -g '*.ts' -g '*.tsx'

echo "Checking for correct default imports of PartnerInvite..."
rg -n "import.*PartnerInvite.*from.*partner-invite" -g '*.ts' -g '*.tsx'

Length of output: 743


✅ PartnerInvite default import verification successful

No named imports of PartnerInvite remain. Verified default imports in:

  • apps/web/lib/actions/partners/create-program.ts (line 10)
  • apps/web/lib/actions/partners/invite-partner.ts (line 10)
  • apps/web/lib/actions/partners/resend-program-invite.ts (line 5)

All import statements have been updated correctly. Great work!

packages/email/src/templates/invalid-domain.tsx (1)

17-17:

✅ Verification successful

Verify comprehensive import updates across all changed email templates.

Run this comprehensive verification to ensure all import statements have been updated consistently:


🏁 Script executed:

#!/bin/bash
# Description: Comprehensive verification of import updates for all email template components
# Expected: No named imports remaining, all should be default imports

echo "=== Checking for any remaining named imports of email templates ==="
components=("EmailUpdated" "VerifyEmail" "PartnerInvite" "InvalidDomain")

for component in "${components[@]}"; do
    echo "Checking $component..."
    named_imports=$(rg -n "import.*\{.*$component.*\}" --type tsx --type ts 2>/dev/null | wc -l)
    if [ "$named_imports" -gt 0 ]; then
        echo "❌ Found $named_imports named imports for $component:"
        rg -n "import.*\{.*$component.*\}" --type tsx --type ts
    else
        echo "✅ No named imports found for $component"
    fi
done

echo -e "\n=== Checking for correct default imports ==="
for component in "${components[@]}"; do
    echo "Checking default imports for $component..."
    default_imports=$(rg -n "import $component from" --type tsx --type ts 2>/dev/null | wc -l)
    echo "Found $default_imports default imports for $component"
done

Length of output: 2775


🏁 Script executed:

#!/bin/bash
# Search for all import statements of the email template components across all file types
components=("EmailUpdated" "VerifyEmail" "PartnerInvite" "InvalidDomain")

echo "=== Scanning for import statements of email templates across the repository ==="
for comp in "${components[@]}"; do
  echo
  echo ">>> Imports for ${comp}:"
  rg -n "import[[:space:]].*${comp}" --color never || echo "No import statements found for ${comp}"
done

Length of output: 1898


All email template imports are correctly using default exports

A repository-wide search confirms:

  • No named imports remain for EmailUpdated, VerifyEmail, PartnerInvite, or InvalidDomain.
  • Each component is imported as a default export in the following files:
    • EmailUpdated:
      – apps/web/app/app.dub.co/(auth)/auth/confirm-email-change/[token]/page.tsx
    • VerifyEmail:
      – apps/web/lib/actions/send-otp.ts
      (VerifyEmailForm imports are unrelated UI components.)
    • PartnerInvite:
      – apps/web/lib/actions/partners/invite-partner.ts
      – apps/web/lib/actions/partners/create-program.ts
      – apps/web/lib/actions/partners/resend-program-invite.ts
    • InvalidDomain:
      – apps/web/app/(ee)/api/cron/domains/verify/utils.ts

No further import updates are needed.

apps/web/lib/api/partners/notify-partner-application.ts (1)

3-3: Consistent default import for email template.

Updated to a default import for PartnerApplicationReceived to match its new export. Usage at line 48 remains correct.

apps/web/lib/integrations/install.ts (1)

2-2: Consistent default import for email template.

Switched to a default import for IntegrationInstalled aligning with its updated export. Invocation at line 85 is valid.

apps/web/lib/actions/folders/request-folder-edit-access.ts (1)

4-4: Consistent default import for email template.

Changed to a default import for FolderEditAccessRequested to align with its new export style. The call at line 75 is correct.

apps/web/lib/actions/send-invite-referral-email.ts (1)

4-4: Consistent default import for email template.

Updated ReferralInvite to a default import to match its export change. Usage at line 39 remains correct.

apps/web/lib/actions/send-otp.ts (1)

5-5: Consistent default import for email template.

Switched VerifyEmail to a default import in line with its updated export. Invocation at line 105 is valid.

apps/web/app/(ee)/api/cron/import/rebrandly/utils.ts (1)

7-7: Default import for LinksImported
Switching from a named to a default import here aligns perfectly with the updated export in the email template.

apps/web/app/(ee)/api/stripe/webhook/checkout-session-completed.ts (1)

9-9: Default import for UpgradeEmail
The change from a named to a default import matches the refactored template export. No issues found.

apps/web/app/(ee)/api/cron/welcome-user/route.ts (1)

5-5: Default import for WelcomeEmail
Updating to a default import is consistent with the template changes and requires no further adjustments.

apps/web/lib/auth/options.ts (1)

7-7: Default import for LoginLink
Converting to a default import here aligns with the template refactor. Everything looks correct.

apps/web/lib/actions/partners/resend-program-invite.ts (1)

5-5: Default import for PartnerInvite
This import update follows the new default export pattern in the email templates. No changes needed.

apps/web/app/(ee)/api/cron/usage/utils.ts (1)

7-7: Verify default import of ClicksSummary aligns with template export
Ensure that @dub/email/templates/clicks-summary now exposes ClicksSummary as its default export and that there are no leftover named exports in the template file.

apps/web/scripts/send-emails.tsx (1)

2-2: Confirm default import for FailedPayment template
Make sure @dub/email/templates/failed-payment is updated to use a default export for FailedPayment and remove the prior named export.

apps/web/app/api/user/set-password/route.ts (1)

5-5: Ensure ResetPasswordLink is now a default export
Verify that @dub/email/templates/reset-password-link has been converted to a default export for ResetPasswordLink and that any redundant named export has been removed.

apps/web/app/api/user/password/route.ts (1)

7-7: Validate default export of PasswordUpdated template
Confirm the password-updated template now exports PasswordUpdated as default and drop any previous named export.

apps/web/app/api/auth/reset-password/route.ts (1)

6-6: Check default import for PasswordUpdated in reset-password route
Ensure the @dub/email/templates/password-updated module provides PasswordUpdated as its default export, aligning with the updated template file.

apps/web/lib/api/users.ts (1)

4-4:

✅ Verification successful

Verify that the email template source file uses default export.

The import change from named to default import is correct. However, ensure that the @dub/email/templates/workspace-invite file has been updated to use export default instead of named export.


🏁 Script executed:

#!/bin/bash
# Verify that WorkspaceInvite template uses default export
rg -A 5 "export.*WorkspaceInvite" packages/email/src/templates/workspace-invite*

Length of output: 432


Confirmed: WorkspaceInvite uses default export

The file packages/email/src/templates/workspace-invite.tsx defines

export default function WorkspaceInvite() {  }

so importing it as a default is correct. Import change approved.

apps/web/app/(ee)/api/cron/import/csv/utils.ts (1)

2-3:

✅ Verification successful

Verify that the email template source files use default exports.

The import changes from named to default imports are correct. However, ensure that both @dub/email/templates/links-import-errors and @dub/email/templates/links-imported files have been updated to use export default instead of named exports.


🏁 Script executed:

#!/bin/bash
# Verify that both email templates use default exports
echo "Checking LinksImportErrors template:"
rg -A 5 "export.*LinksImportErrors" packages/email/src/templates/links-import-errors*

echo "Checking LinksImported template:"
rg -A 5 "export.*LinksImported" packages/email/src/templates/links-imported*

Length of output: 575


Confirmed: Email templates use default exports

Both links-import-errors.tsx and links-imported.tsx define their components as default exports, so the updated import statements are correct. Approving these changes.

• packages/email/src/templates/links-import-errors.tsx – export default function LinksImportErrors
• packages/email/src/templates/links-imported.tsx – export default function LinksImported

apps/web/lib/actions/partners/create-program.ts (1)

10-10:

✅ Verification successful

Verify that the email template source file uses default export.

The import change from named to default import is correct. However, ensure that the @dub/email/templates/partner-invite file has been updated to use export default instead of named export.


🏁 Script executed:

#!/bin/bash
# Verify that PartnerInvite template uses default export
rg -A 5 "export.*PartnerInvite" packages/email/src/templates/partner-invite*

Length of output: 224


Confirmed default export for PartnerInvite

Verified that packages/email/src/templates/partner-invite.tsx declares export default function PartnerInvite, so the switch from a named to default import is correct. Approving this change.

apps/web/lib/actions/request-password-reset.ts (1)

5-5:

✅ Verification successful

Verify that the email template source file uses default export.

The import change from named to default import is correct. However, ensure that the @dub/email/templates/reset-password-link file has been updated to use export default instead of named export.


🏁 Script executed:

#!/bin/bash
# Verify that ResetPasswordLink template uses default export
rg -A 5 "export.*ResetPasswordLink" packages/email/src/templates/reset-password-link*

Length of output: 318


Import change validated: ResetPasswordLink uses default export

The packages/email/src/templates/reset-password-link.tsx file exports ResetPasswordLink as a default export, so updating the import in apps/web/lib/actions/request-password-reset.ts is correct. Approving this change.

apps/web/lib/cron/send-limit-email.ts (1)

2-3: LGTM! Import standardization looks good.

The conversion from named imports to default imports for email templates is clean and syntactically correct. The component usage remains unchanged, which is appropriate.

apps/web/app/(ee)/api/cron/import/bitly/utils.ts (1)

4-4: LGTM! Consistent import standardization.

The conversion to default import for LinksImported follows the same pattern as other files and is syntactically correct.

apps/web/app/app.dub.co/(auth)/auth/confirm-email-change/[token]/page.tsx (1)

7-7: LGTM! Import standardization maintained.

The conversion to default import for EmailUpdated is consistent with the codebase-wide standardization effort.

apps/web/app/(ee)/api/cron/year-in-review/route.ts (1)

4-4: LGTM! Completes the import standardization.

The conversion to default import for DubWrapped maintains consistency with the other email template imports across the codebase.

apps/web/lib/actions/partners/approve-partner.ts (1)

14-14: LGTM! Consistent import standardization.

The change from named import to default import is correctly implemented and aligns with the PR objective to standardize email template exports.

apps/web/app/(ee)/api/cron/domains/transfer/utils.ts (1)

2-2: LGTM! Consistent import standardization.

The change from named import to default import is correctly implemented and aligns with the PR objective to standardize email template exports.

apps/web/app/api/webhooks/route.ts (1)

16-16: LGTM! Consistent import standardization.

The change from named import to default import is correctly implemented and aligns with the PR objective to standardize email template exports.

apps/web/app/api/dub/webhook/lead-created.ts (1)

2-2: LGTM! Consistent import standardization.

The change from named import to default import is correctly implemented and aligns with the PR objective to standardize email template exports.

apps/web/lib/actions/partners/invite-partner.ts (1)

10-10: LGTM! Import change aligns with standardization objective.

The change from named import to default import for PartnerInvite is consistent with the PR's goal to standardize email template exports. The usage at line 113 is correct for the new import style.

apps/web/lib/rewardful/import-commissions.ts (1)

2-2: LGTM! Import standardization looks good.

The conversion from named import to default import for CampaignImported is consistent with the codebase-wide standardization effort. The component usage at line 90 is properly updated for the new import style.

apps/web/app/(ee)/api/paypal/webhook/verify-signature.ts (1)

37-39: LGTM! Improved formatting for better readability.

The multi-line formatting of the console.error statement improves readability while maintaining the same functionality.

apps/web/app/api/tokens/route.ts (1)

10-10:

✅ Verification successful

LGTM! Import change follows the established pattern.

The change from named import to default import for APIKeyCreated aligns with the PR objective. The component is used correctly at line 172 with the new import style.

Since this is a codebase-wide change, please verify that the corresponding email template files have been properly converted to default exports:


🏁 Script executed:

#!/bin/bash
# Description: Verify that email templates use default exports
# Expected: All template files should have default exports, not named exports

# Check email template files for export patterns
echo "Checking email template export patterns..."
fd -e tsx -e ts . packages/email/src/templates/ --exec grep -l "export.*{.*}" {} \; 2>/dev/null || echo "No named exports found"

echo -e "\nChecking for default exports..."
fd -e tsx -e ts . packages/email/src/templates/ --exec grep -l "export default" {} \;

Length of output: 2627


All email templates use default exports—LGTM!

  • No named exports detected in packages/email/src/templates/
  • Every template (including api-key-created.tsx) has a default export
packages/email/src/templates/feedback-email.tsx (1)

15-15: LGTM! Export standardization looks good.

The change from named export to default export is consistent with the PR objective to standardize email template exports across the codebase.

packages/email/src/templates/webhook-added.tsx (1)

17-17: LGTM! Consistent export standardization.

The conversion to default export is correctly implemented and aligns with the codebase-wide standardization effort.

packages/email/src/templates/partner-application-received.tsx (1)

17-17: LGTM! Export style successfully standardized.

The default export conversion is properly implemented and maintains consistency with the other email template refactors.

apps/web/app/(ee)/api/cron/domains/verify/utils.ts (1)

4-5: LGTM! Import statements correctly updated to match default exports.

The import changes properly reflect the export standardization in the email templates. The function calls at lines 135 and 202 will work correctly with the default imports.

packages/email/src/templates/integration-installed.tsx (1)

17-17:

✅ Verification successful

LGTM! Export standardization improves consistency.

The change from named export to default export aligns with the standardization effort across email templates.

Let me verify that all imports of this component have been updated throughout the codebase:


🏁 Script executed:

#!/bin/bash
# Description: Verify all imports of IntegrationInstalled use default import syntax
# Expected: All imports should use default import syntax, no named imports should remain

echo "Searching for any remaining named imports of IntegrationInstalled..."
rg "import.*\{.*IntegrationInstalled.*\}" --type ts --type tsx

echo "Verifying correct default imports..."
rg "import.*IntegrationInstalled.*from" --type ts --type tsx -A 1

echo "Checking for any other references..."
rg "IntegrationInstalled" --type ts --type tsx -A 2 -B 1

Length of output: 586


🏁 Script executed:

#!/usr/bin/env bash
# Re-verify import patterns for IntegrationInstalled across the codebase

echo "Searching for named imports of IntegrationInstalled..."
rg "import\s*{\s*IntegrationInstalled\s*}\s*from" -g '*.ts' -g '*.tsx' || echo "→ No named imports found."

echo "Searching for default imports of IntegrationInstalled..."
rg "import\s+IntegrationInstalled\s+from" -g '*.ts' -g '*.tsx' || echo "→ No default imports found."

echo "Listing all references to IntegrationInstalled..."
rg "IntegrationInstalled" -g '*.ts' -g '*.tsx' -n -C2 || echo "→ No references found."

Length of output: 2062


#!/usr/bin/env bash
set -e

echo "🔍 Searching for any remaining named imports of IntegrationInstalled..."
rg "import { IntegrationInstalled } from" -g '*.ts' -g '*.tsx' -n || echo "→ ✅ No named imports found."

echo
echo "🔍 Verifying default imports of IntegrationInstalled..."
rg "import IntegrationInstalled from" -g '*.ts' -g '*.tsx' -n || echo "→ ⚠️ No default imports found."

echo
echo "🔍 Checking for any brace-wrapped usages (potential named import remnants)..."
rg "{\s*IntegrationInstalled\s*}" -g '*.ts' -g '*.tsx' -n || echo "→ ✅ No brace-wrapped usages found."

echo
echo "✅ Verification complete."

✅ All imports updated to default export

We’ve confirmed there are no remaining named imports of IntegrationInstalled and that it’s correctly imported as a default export (e.g. in apps/web/lib/integrations/install.ts). No further changes needed.

packages/email/src/templates/confirm-email-change.tsx (1)

17-17: LGTM! Consistent export style applied.

The default export standardization matches the pattern applied across other email templates.

packages/email/src/templates/password-updated.tsx (1)

16-16: LGTM! Export consistency maintained.

The change to default export is consistent with the standardization effort.

packages/email/src/templates/upgrade-email.tsx (1)

17-17:

✅ Verification successful

LGTM! Standardized export pattern applied.

The default export change maintains consistency with other email template components.

Let me verify the broad impact of these export changes across all email templates:


🏁 Script executed:

#!/bin/bash
# Description: Verify that the export standardization is complete and consistent
# Expected: All email templates should use default exports, all imports should be updated

echo "Checking for any remaining named exports in email templates..."
rg "^export function" packages/email/src/templates/ --type tsx

echo "Verifying all templates now use default exports..."
rg "^export default function" packages/email/src/templates/ --type tsx

echo "Checking for any remaining named imports of email templates..."
rg "import.*\{.*\}.*from.*@dub/emails" --type ts --type tsx

echo "Sample of correct default imports..."
rg "import.*from.*templates/" --type ts --type tsx | head -10

Length of output: 839


🏁 Script executed:

#!/bin/bash
# List all .ts and .tsx files in the email templates directory
echo "Listing .ts/.tsx files in packages/email/src/templates/:"
find packages/email/src/templates -type f \( -name '*.ts' -o -name '*.tsx' \)

echo
# Check for any remaining named exports
echo "Checking for any remaining named exports in email templates..."
rg '^export function ' packages/email/src/templates/

echo
# Verify all templates now use default exports
echo "Verifying all templates use default exports..."
rg '^export default function ' packages/email/src/templates/

echo
# Check for any named imports of templates via destructured imports
echo "Checking for any remaining named imports of email templates from '@dub/emails'..."
rg "import .*{.*}.*from.*@dub/emails" packages/email/src/templates/

echo
# Sample of default imports from templates
echo "Sample of correct default imports from templates directory:"
rg "import .* from .*/src/templates/" packages/email/src/ | head -10

Length of output: 7463


🏁 Script executed:

#!/bin/bash
# 1. Determine the package name for email templates
pkg_name=$(grep '"name":' packages/email/package.json | sed -E 's/.*"name":[[:space:]]*"([^"]+)".*/\1/')
echo "Package name: $pkg_name"

echo
# 2. Look for any named imports from the package root
echo "🔎 Checking for named imports from ${pkg_name}:"
rg "import\s*\{\s*[^}]+\s*\}\s*from\s*['\"]${pkg_name}['\"]" -t ts -t tsx || echo "✔️ No named imports found"

echo
# 3. Look for any named imports directly from the templates folder (excluding the templates dir itself)
echo "🔎 Checking for named imports from a 'templates' path outside the templates dir:"
rg "import\s*\{\s*[^}]+\s*\}\s*from\s*['\"].*templates" -t ts -t tsx -g '!packages/email/src/templates/*' || echo "✔️ No named imports from templates paths"

echo
# 4. Sanity‐check: default imports of templates (should be allowed)
echo "🔎 Sample default imports of templates (for reference):"
rg "import\s+[^ {][^}]*\s+from\s+['\"].*templates" -t ts -t tsx -g '!packages/email/src/templates/*' | head -20 || echo "ℹ️ No imports of templates found outside their own directory"

Length of output: 1143


Standardized default exports verified across all email templates

All packages/email/src/templates/*.tsx now use export default function … with no remaining named exports, and no destructured imports from @dub/email or template paths were detected. Consistency confirmed—ready to merge.

packages/email/src/templates/failed-payment.tsx (1)

18-18:

✅ Verification successful

Consolidate export to default correctly
The FailedPayment component now uses a single default export, aligning with the updated pattern. Ensure that all named import occurrences have been switched to default imports to prevent any unresolved module errors.

Run:


🏁 Script executed:

#!/bin/bash
# Search for leftover named imports of FailedPayment
rg "import { *FailedPayment *}" -n .

Length of output: 156


🏁 Script executed:

#!/bin/bash
# Re-run search for any leftover named imports of FailedPayment using a corrected regex
rg -n -e 'import.*\{[^}]*FailedPayment[^}]*\}' .

Length of output: 50


No leftover named imports for FailedPayment
A repository-wide search found no occurrences of import { FailedPayment }; all import sites now use the default export.

packages/email/src/templates/domain-deleted.tsx (1)

17-17:

✅ Verification successful

Switch to default export as intended
The DomainDeleted component is now exported by default and its redundant separate export was removed. Verify all import sites have been updated to use default imports.

Run:


🏁 Script executed:

#!/bin/bash
# Search for any remaining named imports of DomainDeleted
rg "import { *DomainDeleted *}" -n .

Length of output: 156


🏁 Script executed:

#!/bin/bash
# Search for any remaining named imports of DomainDeleted
rg -n "import \{[^}]*DomainDeleted[^}]*\}" .

Length of output: 46


✅ Switch to default export as intended
The DomainDeleted component is now the default export, and all import sites have been updated—no named imports remain (verified via rg -n "import \{[^}]*DomainDeleted[^}]*\}").

packages/email/src/templates/referral-invite.tsx (1)

17-17:

❓ Verification inconclusive

Use default export for ReferralInvite
The component is now a default export and aligns with the codebase convention. Confirm that all consuming modules import it as a default.


🏁 Script executed:

#!/bin/bash
# Check for leftover named imports of ReferralInvite
rg "import { *ReferralInvite *}" -n .

Length of output: 158


Let’s correct the import‐pattern search and rerun:


🏁 Script executed:

#!/bin/bash
# Look for any remaining named imports of ReferralInvite
rg -E "import\s*{[^}]*ReferralInvite[^}]*}" -n .

Length of output: 123


Let’s use ast-grep to reliably catch any named‐import occurrences:


🏁 Script executed:

#!/bin/bash
# Search for imports like: import { ReferralInvite } from '…'
ast-grep --pattern $'import { ReferralInvite } from $_' -n .

# Catch ReferralInvite among other named imports: import { A, ReferralInvite, B } from '…'
ast-grep --pattern $'import { $_, ReferralInvite, $$$ } from $_' -n .

Length of output: 488


Let’s try a more robust ripgrep search—with PCRE and a POSIX fallback—to catch any named imports of ReferralInvite:


🏁 Script executed:

#!/bin/bash
# 1) PCRE-based search for named imports
rg -P "import\s*{[^}]*ReferralInvite[^}]*}" -n . || true

# 2) Fallback to POSIX character classes if PCRE isn’t enabled
rg -E "import[[:space:]]*{[^}]*ReferralInvite[^}]*}" -n . || true

Length of output: 206


Confirm default imports of ReferralInvite
I attempted automated searches for any remaining named imports of ReferralInvite, but the fallback patterns produced errors and no conclusive results. Please manually verify that every consuming module now imports ReferralInvite as a default export.

• File: packages/email/src/templates/referral-invite.tsx
• Snippet at line 17:

export default function ReferralInvite({
packages/email/src/templates/domain-transferred.tsx (1)

18-18:

❓ Verification inconclusive

Apply default export to DomainTransferred
DomainTransferred now uses a default export only; ensure all previous named imports are updated accordingly.


🏁 Script executed:

#!/bin/bash
# Find named import usages of DomainTransferred
rg "import { *DomainTransferred *}" -n .

Length of output: 164


🏁 Script executed:

#!/bin/bash
# Search for any named-import usages of DomainTransferred
rg -nE "import\s*{\s*DomainTransferred\s*}\s*from" -g "*.ts*" .

Length of output: 144


Ensure DomainTransferred Is Imported as a Default Export
DomainTransferred has been converted to a default export. Please verify that there are no remaining named-imports (e.g. import { DomainTransferred }) in the codebase.
You can run a quick search to confirm:

rg -n "import.*DomainTransferred" -t ts -t tsx .
packages/email/src/templates/login-link.tsx (1)

17-17:

✅ Verification successful

Convert LoginLink to default export
LoginLink is now exported by default in line with other templates. Make sure no named imports remain in the codebase.


🏁 Script executed:

#!/bin/bash
# Search for named imports of LoginLink
rg "import { *LoginLink *}" -n .

Length of output: 148


🏁 Script executed:

#!/bin/bash
# Search for named imports of LoginLink (corrected regex)
rg -n -P 'import \{[^}]*LoginLink[^}]*\}' .

Length of output: 45


LoginLink Default Export Implemented; No Named Imports Found
All import { LoginLink } instances have been removed and the component is now a default export, consistent with other templates.

  • Verified in packages/email/src/templates/login-link.tsx (line 17)
  • No named‐import references remain in the codebase
packages/email/src/templates/dub-wrapped.tsx (1)

21-21:

✅ Verification successful

Default export alignment

Converted DubWrapped to a default export and removed the redundant export default DubWrapped; at the bottom, standardizing this template with the rest of the folder.
Ensure there are no remaining named-import usages.

To verify:


🏁 Script executed:

#!/bin/bash
# Search for any stale named imports of DubWrapped
rg -n "import\s*{\s*DubWrapped\s*}" .

Length of output: 159


🏁 Script executed:

#!/bin/bash
# Search for any stale named imports of DubWrapped (escaped braces)
rg -n 'import\s*\{\s*DubWrapped\s*\}' .

Length of output: 41


✅ Default export alignment verified

No named imports of DubWrapped were found after switching to a default export. This template now matches the rest of the folder’s conventions. Approving these changes.

packages/email/src/templates/clicks-summary.tsx (1)

21-21:

✅ Verification successful

Default export alignment

Changed ClicksSummary to a default export and removed the separate export default ClicksSummary; at the end. This keeps export patterns consistent across all email templates.
Verify no old named imports remain.

To verify:


🏁 Script executed:

#!/bin/bash
rg -n "import\s*{\s*ClicksSummary\s*}" .

Length of output: 165


🏁 Script executed:

#!/bin/bash
# Corrected regex: escaped braces to find any named import of ClicksSummary
rg -n 'import.*\{.*ClicksSummary.*\}' .

Length of output: 41


No named imports of ClicksSummary detected
A global search confirmed that all references have been updated to use the default export. The change is consistent and safe to merge.

packages/email/src/templates/clicks-exceeded.tsx (1)

18-18:

✅ Verification successful

Default export alignment

Updated ClicksExceeded to a default export and removed its redundant bottom export. This aligns the component with the new email-template conventions.
Confirm all imports have been updated.

To verify:


🏁 Script executed:

#!/bin/bash
rg -n "import\s*{\s*ClicksExceeded\s*}" .

Length of output: 167


🏁 Script executed:

#!/bin/bash
# Search for any named imports of ClicksExceeded (should be none after the conversion)
rg -n "import\s*\{\s*ClicksExceeded\s*\}" .

Length of output: 45


Default export alignment verified

All named imports of ClicksExceeded have been removed; the component now correctly uses a default export and no leftover named imports remain. Imports across the codebase are up-to-date.

packages/email/src/templates/campaign-imported.tsx (1)

17-17:

✅ Verification successful

Default export alignment

Switched CampaignImported to a default export and eliminated the duplicate export at file end. This follows the pattern used by other template files.
Ensure no stale named-import statements linger.

To verify:


🏁 Script executed:

#!/bin/bash
rg -n "import\s*{\s*CampaignImported\s*}" .

Length of output: 171


Let’s retry with properly escaped braces:


🏁 Script executed:

#!/bin/bash
rg -n 'import\s*\{\s*CampaignImported\s*\}' .

Length of output: 47


Default export alignment verified

No lingering named-imports of CampaignImported were found across the codebase after switching to a default export. This change aligns with the pattern used by other template files.
Change approved.

packages/email/src/templates/links-limit.tsx (1)

18-18:

✅ Verification successful

Default export alignment

Converted LinksLimitAlert to a default export, removing its separate default export statement at the bottom. This standardizes exports across the package.
Please verify all consumers now use default imports.

To verify:


🏁 Script executed:

#!/bin/bash
rg -n "import\s*{\s*LinksLimitAlert\s*}" .

Length of output: 169


🏁 Script executed:

#!/bin/bash
# Search for named imports of LinksLimitAlert with properly escaped braces
rg -n 'import\s*\{\s*LinksLimitAlert\s*\}' .

# Fallback: literal grep for any import of LinksLimitAlert
grep -R "import { LinksLimitAlert" -n .

Length of output: 182


Default export usage confirmed

No occurrences of import { LinksLimitAlert } were found across the codebase—every consumer now resolves the new default export correctly.

packages/email/src/templates/welcome-email.tsx (1)

17-23: Switch to default export – consistent with PR objective

Converted WelcomeEmail to a default export and removed the redundant export statement. No functional changes; ensure all import sites now use default import syntax.

packages/email/src/templates/folder-edit-access-requested.tsx (1)

17-27: Switch to default export – consistent with PR objective

Converted FolderEditAccessRequested to a default export and removed the redundant export statement. No logic changes.

packages/email/src/templates/new-sale-alert-program-owner.tsx (1)

19-19: Switch to default export – consistent with PR objective

Converted NewSaleAlertProgramOwner to a default export and removed the redundant export statement. No functional changes.

packages/email/src/templates/domain-claimed.tsx (1)

17-17: Switch to default export – consistent with PR objective

Converted DomainClaimed to a default export and removed the redundant export statement. No logic changes.

packages/email/src/templates/links-imported.tsx (1)

20-20: Switch to default export – consistent with PR objective

Converted LinksImported to a default export and removed the redundant export statement. No functional changes.

packages/email/src/templates/links-import-errors.tsx (1)

22-22:

✅ Verification successful

Standardize to default export
Default-exporting LinksImportErrors cleans up the export pattern; ensure there are no leftover named imports across the codebase.


🏁 Script executed:

#!/bin/bash
# Verify no named imports of LinksImportErrors remain
rg -n "import {[^}]*LinksImportErrors" .

Length of output: 163


🏁 Script executed:

#!/bin/bash
# Verify no named imports of LinksImportErrors remain (escaped braces and whitespace)
rg -n -t ts -t tsx 'import\s*\{\s*[^}]*\bLinksImportErrors\b[^}]*\}' .

Length of output: 100


🏁 Script executed:

#!/bin/bash
# Verify no named imports of LinksImportErrors remain in TS/TSX files
rg -n --glob '*.ts' --glob '*.tsx' 'import\s*{[^}]*\bLinksImportErrors\b[^}]*}' .

Length of output: 218


🏁 Script executed:

#!/bin/bash
# Properly escape braces for Rust regex engine in ripgrep
rg -n --glob '*.ts' --glob '*.tsx' 'import \{[^\}]*LinksImportErrors[^\}]*\}' .

Length of output: 81


All named imports removed—default export consistent
I searched across all .ts/.tsx files for any import {LinksImportErrors} occurrences and found none. The LinksImportErrors component is now exclusively default-exported and imported consistently.

packages/email/src/templates/new-sale-alert-partner.tsx (1)

17-17: Switch to default export is consistent
Converting NewSaleAlertPartner to a default export and removing the redundant bottom export aligns with the PR objective to standardize export style. Ensure all import sites are updated to use default imports for this component.

packages/email/src/templates/partner-payout-sent.tsx (1)

17-17: Unified default export applied
Changing PartnerPayoutSent to a default export and removing the extra export statement at the end correctly enforces the new convention.

packages/email/src/templates/partner-application-approved.tsx (1)

19-19: Default export conversion looks correct
Updating PartnerApplicationApproved to a default export matches the file name and style guide; no implementation changes were introduced.

apps/web/app/(ee)/api/stripe/webhook/invoice-payment-failed.tsx (1)

2-2: Consistent default import for FailedPayment template.
Aligns with the PR goal of switching email templates to default exports; no functional change.

apps/web/ui/analytics/feedback/action.ts (1)

4-4: Switch to default import for FeedbackEmail template.
Matches the new export style for email templates; behavior unchanged.

apps/web/app/(ee)/api/cron/import/short/utils.ts (1)

7-7: Use default import for LinksImported template.
Follows the standardized default-export pattern for email components; no logic updates.

apps/web/lib/actions/partners/ban-partner.ts (1)

11-11: Adopt default import for PartnerBanned template.
Consistent with the updated template exports; no effect on functionality.

apps/web/lib/api/domains/claim-dot-link-domain.ts (1)

7-7: Import DomainClaimed as default export.
Standardizes email template imports to default exports per PR objective; unchanged behavior.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant