update git commit and push

This commit is contained in:
Rami Bitar
2026-05-05 14:04:51 -04:00
parent fce386c518
commit 346fcb470e
4 changed files with 135 additions and 20 deletions

View File

@@ -2,12 +2,20 @@ import { useState } from "react";
import { cn } from "@/lib/utils";
import { Typography } from "@/components/Typography";
export type EmailProvider = "none" | "mailchimp" | "klaviyo";
export type NewsletterCtaProps = {
tagline: string;
heading: string;
subheading: string;
buttonLabel: string;
endpoint: string;
emailProvider: EmailProvider;
endpoint?: string;
mailchimpApiKey?: string;
mailchimpServerPrefix?: string;
mailchimpAudienceId?: string;
klaviyoCompanyId?: string;
klaviyoListId?: string;
imageUrl: string;
layout: "split" | "stacked";
};
@@ -17,7 +25,13 @@ export function NewsletterCta({
heading,
subheading,
buttonLabel,
emailProvider,
endpoint,
mailchimpApiKey,
mailchimpServerPrefix,
mailchimpAudienceId,
klaviyoCompanyId,
klaviyoListId,
imageUrl,
layout,
}: NewsletterCtaProps) {
@@ -30,7 +44,53 @@ export function NewsletterCta({
if (!email) return;
setSubmitting(true);
try {
if (endpoint) {
if (emailProvider === "mailchimp") {
if (mailchimpServerPrefix && mailchimpAudienceId && mailchimpApiKey) {
await fetch(
`https://${mailchimpServerPrefix}.api.mailchimp.com/3.0/lists/${mailchimpAudienceId}/members`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${mailchimpApiKey}`,
},
body: JSON.stringify({
email_address: email,
status: "subscribed",
}),
},
);
}
} else if (emailProvider === "klaviyo") {
if (klaviyoCompanyId && klaviyoListId) {
await fetch(
`https://a.klaviyo.com/client/subscriptions/?company_id=${klaviyoCompanyId}`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
revision: "2024-10-15",
},
body: JSON.stringify({
data: {
type: "subscription",
attributes: {
profile: {
data: {
type: "profile",
attributes: { email },
},
},
},
relationships: {
list: { data: { type: "list", id: klaviyoListId } },
},
},
}),
},
);
}
} else if (endpoint) {
await fetch(endpoint, {
method: "POST",
headers: { "Content-Type": "application/json" },