aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes/(app)/support
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2022-11-09 11:18:38 -0800
committerAdam Soltys <[email protected]>2022-11-09 11:18:38 -0800
commitc901b229121ee74b4a1a8794ca7578d9cfea0055 (patch)
treebb8192035e7076ffae126a6596088d96402768a4 /src/routes/(app)/support
parent305f26ccefffe52b3fb65995e8caf437f1a92057 (diff)
downloadcoinos-ui-c901b229121ee74b4a1a8794ca7578d9cfea0055.tar.gz
coinos-ui-c901b229121ee74b4a1a8794ca7578d9cfea0055.zip
fix support form
Diffstat (limited to 'src/routes/(app)/support')
-rw-r--r--src/routes/(app)/support/+page.server.js16
-rw-r--r--src/routes/(app)/support/+page.svelte81
2 files changed, 97 insertions, 0 deletions
diff --git a/src/routes/(app)/support/+page.server.js b/src/routes/(app)/support/+page.server.js
new file mode 100644
index 00000000..78c640e3
--- /dev/null
+++ b/src/routes/(app)/support/+page.server.js
@@ -0,0 +1,16 @@
+import { post } from "$lib/utils";
+import { invalid } from '@sveltejs/kit';
+
+export const actions = {
+ default: async ({ cookies, request }) => {
+ let form = Object.fromEntries(await request.formData());
+
+ try {
+ await post('/email', form);
+ } catch (e) {
+ return invalid(400, { error: e.message });
+ }
+
+ return { success: true };
+ }
+};
diff --git a/src/routes/(app)/support/+page.svelte b/src/routes/(app)/support/+page.svelte
new file mode 100644
index 00000000..9181f701
--- /dev/null
+++ b/src/routes/(app)/support/+page.svelte
@@ -0,0 +1,81 @@
+<script>
+ import { enhance } from '$app/forms';
+ import { scale } from 'svelte/transition';
+ import { Icon } from '$comp';
+ import { t } from '$lib/translations';
+
+ export let data, form;
+
+ let { user } = data;
+ let email;
+ let message;
+</script>
+
+{#if form?.error}
+ <div class="text-red-600 text-center">
+ {form.error}
+ </div>
+{/if}
+
+<div class="container px-4 max-w-lg mx-auto mt-20">
+ {#if form?.success}
+ <h1 class="text-center text-3xl md:text-4xl font-semibold mb-8">Thank you!</h1>
+ <p class="text-center mb-8">Someone will be in touch shortly.</p>
+
+ <a href={user ? `/${user.username}/dashboard` : '/'}>
+ <button class="rounded-full border py-2 px-5 font-bold hover:opacity-80 w-full mb-2"
+ >Done</button
+ >
+ </a>
+ {:else}
+ <h1 class="text-center text-3xl md:text-4xl font-semibold mb-8">
+ {$t('user.support.header')}
+ </h1>
+ <form method="POST" use:enhance>
+ <div class="mb-4">
+ <label for="account" class="font-semibold">{$t('user.support.accountName')}</label>
+ <input
+ class="block border rounded-xl p-2 w-full"
+ type="text"
+ name="account"
+ required
+ value={user?.username || ''}
+ />
+ </div>
+
+ <div class="mb-4">
+ <label for="email" class="font-semibold">{$t('user.support.email')}</label>
+ <input
+ class="block border rounded-xl p-2 w-full"
+ type="email"
+ name="email"
+ bind:value={email}
+ required
+ />
+ </div>
+
+ <div class="mb-4">
+ <label for="message" class="font-semibold">{$t('user.support.message')}</label>
+ <textarea
+ rows={5}
+ class="block border rounded-xl p-2 w-full"
+ type="text"
+ name="message"
+ bind:value={message}
+ required
+ />
+ </div>
+
+ <button
+ type="submit"
+ disabled={!email || !message}
+ class="{!email || !message
+ ? 'opacity-50'
+ : 'opacity-100'} bg-black text-white font-bold rounded-xl py-3 w-full mx-auto {email &&
+ message
+ ? 'hover:opacity-80'
+ : ''}">{$t('user.support.send')}</button
+ >
+ </form>
+ {/if}
+</div>