From 58842c6f1ec8d1bf79c4664f744ca2e5747292d5 Mon Sep 17 00:00:00 2001 From: Josh Creek <8179928+jcreek@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:31:23 +0000 Subject: [PATCH] feat(#79): Create contact page --- .env.example | 4 +- src/routes/contact/+page.server.ts | 30 +++++++++++ src/routes/contact/+page.svelte | 87 ++++++++++++++++++++++++++++++ 3 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 src/routes/contact/+page.server.ts create mode 100644 src/routes/contact/+page.svelte diff --git a/.env.example b/.env.example index 79cb895..4ab3dbc 100644 --- a/.env.example +++ b/.env.example @@ -11,4 +11,6 @@ VITE_BREVO_API_KEY="" # Default sender email for system notifications VITE_BREVO_SENDER_EMAIL="noreply@example.com" # Display name for the sender email -VITE_BREVO_SENDER_NAME="No Reply" \ No newline at end of file +VITE_BREVO_SENDER_NAME="No Reply" +# Contact email for the contact page form to send to +VITE_CONTACT_EMAIL="" \ No newline at end of file diff --git a/src/routes/contact/+page.server.ts b/src/routes/contact/+page.server.ts new file mode 100644 index 0000000..7073ebc --- /dev/null +++ b/src/routes/contact/+page.server.ts @@ -0,0 +1,30 @@ +import type { Actions } from '@sveltejs/kit'; +import { fail } from '@sveltejs/kit'; +import { sendEmail } from '$lib/utils/brevo/email'; +import { VITE_CONTACT_EMAIL } from '$env/static/private'; +import logger from '$lib/utils/logger/logger'; + +export const actions: Actions = { + default: async ({ request }) => { + const formData = await request.formData(); + const name = formData.get('name') as string; + const email = formData.get('email') as string; + const message = formData.get('message') as string; + + const emailContent = ` +

You have a new contact form submission:

+

Name: ${name}

+

Email: ${email}

+

Message:

+

${message}

+ `; + + try { + await sendEmail('New Contact Form Submission', emailContent, VITE_CONTACT_EMAIL); + return { success: true }; + } catch (error) { + logger.error('Failed to send email:', error); + return fail(400, { error }); + } + } +}; diff --git a/src/routes/contact/+page.svelte b/src/routes/contact/+page.svelte new file mode 100644 index 0000000..271ffec --- /dev/null +++ b/src/routes/contact/+page.svelte @@ -0,0 +1,87 @@ + + +{#if submitted} +
+
+ Thank you for your message, {name}! +
+
+{:else} +
+ {#if error} +
+
+ {error} +
+
+ {/if} +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+{/if}