diff --git a/apps/web/pages/api/email.ts b/apps/web/pages/api/email.ts index e353dfa4c6..6e99a6e77e 100644 --- a/apps/web/pages/api/email.ts +++ b/apps/web/pages/api/email.ts @@ -60,7 +60,7 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) => { res.setHeader("Content-Type", "text/html"); res.setHeader("Cache-Control", "no-cache, no-store, private, must-revalidate"); res.write( - renderEmail("OrganizerScheduledEmail", { + renderEmail("OrganizerRequestEmail", { calEvent: evt, attendee: evt.organizer, }) diff --git a/apps/web/public/emails/confirmIcon.png b/apps/web/public/emails/confirmIcon.png new file mode 100644 index 0000000000..d20ec56445 Binary files /dev/null and b/apps/web/public/emails/confirmIcon.png differ diff --git a/apps/web/public/emails/confirmIcon.svg b/apps/web/public/emails/confirmIcon.svg new file mode 100644 index 0000000000..16e6b00573 --- /dev/null +++ b/apps/web/public/emails/confirmIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/apps/web/public/emails/rejectIcon.png b/apps/web/public/emails/rejectIcon.png new file mode 100644 index 0000000000..da19051177 Binary files /dev/null and b/apps/web/public/emails/rejectIcon.png differ diff --git a/apps/web/public/emails/rejectIcon.svg b/apps/web/public/emails/rejectIcon.svg new file mode 100644 index 0000000000..bd2446ce30 --- /dev/null +++ b/apps/web/public/emails/rejectIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/emails/src/components/CallToAction.tsx b/packages/emails/src/components/CallToAction.tsx index 0ba00f1b96..04007623c7 100644 --- a/packages/emails/src/components/CallToAction.tsx +++ b/packages/emails/src/components/CallToAction.tsx @@ -1,33 +1,76 @@ -import { LinkIcon } from "./LinkIcon"; +import { CallToActionIcon } from "./CallToActionIcon"; -export const CallToAction = (props: { label: string; href: string; secondary?: boolean }) => ( -

- - {props.label} - - -

-); +export const CallToAction = (props: { + label: string; + href: string; + secondary?: boolean; + startIconName?: string; + endIconName?: string; +}) => { + const { label, href, secondary, startIconName, endIconName } = props; + + const calculatePadding = () => { + const paddingTop = "0.625rem"; + const paddingBottom = "0.625rem"; + let paddingLeft = "1rem"; + let paddingRight = "1rem"; + + if (startIconName) { + paddingLeft = "0.875rem"; + } else if (endIconName) { + paddingRight = "0.875rem"; + } + + return `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`; + }; + + return ( +

+ + {startIconName && ( + + )} + {label} + {endIconName && } + +

+ ); +}; diff --git a/packages/emails/src/components/CallToActionIcon.tsx b/packages/emails/src/components/CallToActionIcon.tsx new file mode 100644 index 0000000000..c90be53867 --- /dev/null +++ b/packages/emails/src/components/CallToActionIcon.tsx @@ -0,0 +1,27 @@ +import React from "react"; + +import { WEBAPP_URL } from "@calcom/lib/constants"; + +export const CallToActionIcon = ({ + secondary, + iconName, + style, +}: { + secondary?: boolean; + iconName: string; + style?: React.CSSProperties; +}) => ( + +); diff --git a/packages/emails/src/components/LinkIcon.tsx b/packages/emails/src/components/LinkIcon.tsx deleted file mode 100644 index 190da6aee0..0000000000 --- a/packages/emails/src/components/LinkIcon.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { BASE_URL, IS_PRODUCTION } from "@calcom/lib/constants"; - -export const LinkIcon = ({ secondary }: { secondary?: boolean }) => ( - -); diff --git a/packages/emails/src/components/LocationInfo.tsx b/packages/emails/src/components/LocationInfo.tsx index b8bf8d7c54..fe69bf5813 100644 --- a/packages/emails/src/components/LocationInfo.tsx +++ b/packages/emails/src/components/LocationInfo.tsx @@ -5,8 +5,8 @@ import { getVideoCallUrl } from "@calcom/lib/CalEventParser"; import logger from "@calcom/lib/logger"; import type { CalendarEvent } from "@calcom/types/Calendar"; +import { CallToActionIcon } from "./CallToActionIcon"; import { Info } from "./Info"; -import { LinkIcon } from "./LinkIcon"; export function LocationInfo(props: { calEvent: CalendarEvent; t: TFunction }) { const { t } = props; @@ -40,7 +40,7 @@ export function LocationInfo(props: { calEvent: CalendarEvent; t: TFunction }) { title={t("meeting_url")} style={{ color: "#101010" }} rel="noreferrer"> - {providerName || "Link"} + {providerName || "Link"} } extraInfo={ diff --git a/packages/emails/src/components/index.ts b/packages/emails/src/components/index.ts index bfbe24f865..de16cac108 100644 --- a/packages/emails/src/components/index.ts +++ b/packages/emails/src/components/index.ts @@ -4,7 +4,7 @@ export { CallToAction } from "./CallToAction"; export { CallToActionTable } from "./CallToActionTable"; export { UserFieldsResponses } from "./UserFieldsResponses"; export { Info } from "./Info"; -export { LinkIcon } from "./LinkIcon"; +export { CallToActionIcon } from "./CallToActionIcon"; export { LocationInfo } from "./LocationInfo"; export { ManageLink } from "./ManageLink"; export { default as RawHtml } from "./RawHtml"; diff --git a/packages/emails/src/templates/AttendeeAwaitingPaymentEmail.tsx b/packages/emails/src/templates/AttendeeAwaitingPaymentEmail.tsx index 4a593f5970..a02408cd22 100644 --- a/packages/emails/src/templates/AttendeeAwaitingPaymentEmail.tsx +++ b/packages/emails/src/templates/AttendeeAwaitingPaymentEmail.tsx @@ -8,7 +8,7 @@ function ManageLink(props: React.ComponentProps) return ( - + ); } diff --git a/packages/emails/src/templates/AttendeeWasRequestedToRescheduleEmail.tsx b/packages/emails/src/templates/AttendeeWasRequestedToRescheduleEmail.tsx index 763057d74e..256e77596b 100644 --- a/packages/emails/src/templates/AttendeeWasRequestedToRescheduleEmail.tsx +++ b/packages/emails/src/templates/AttendeeWasRequestedToRescheduleEmail.tsx @@ -17,7 +17,7 @@ export const AttendeeWasRequestedToRescheduleEmail = ( subject="rescheduled_event_type_subject" callToAction={ - + } {...props} diff --git a/packages/emails/src/templates/OrganizerRequestEmail.tsx b/packages/emails/src/templates/OrganizerRequestEmail.tsx index ab441b27dc..9454aaf1c6 100644 --- a/packages/emails/src/templates/OrganizerRequestEmail.tsx +++ b/packages/emails/src/templates/OrganizerRequestEmail.tsx @@ -1,7 +1,7 @@ import { WEBAPP_URL } from "@calcom/lib/constants"; import { symmetricEncrypt } from "@calcom/lib/crypto"; -import { CallToAction, CallToActionTable, Separator } from "../components"; +import { CallToAction, Separator, CallToActionTable } from "../components"; import { OrganizerScheduledEmail } from "./OrganizerScheduledEmail"; export const OrganizerRequestEmail = (props: React.ComponentProps) => { @@ -21,13 +21,15 @@ export const OrganizerRequestEmail = (props: React.ComponentProps diff --git a/packages/emails/src/templates/TeamInviteEmail.tsx b/packages/emails/src/templates/TeamInviteEmail.tsx index f6e0a5c92e..a99b805c51 100644 --- a/packages/emails/src/templates/TeamInviteEmail.tsx +++ b/packages/emails/src/templates/TeamInviteEmail.tsx @@ -55,6 +55,7 @@ export const TeamInviteEmail = (