diff options
| author | Adam Soltys <[email protected]> | 2022-11-09 11:18:38 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2022-11-09 11:18:38 -0800 |
| commit | c901b229121ee74b4a1a8794ca7578d9cfea0055 (patch) | |
| tree | bb8192035e7076ffae126a6596088d96402768a4 /src/routes/(app)/support | |
| parent | 305f26ccefffe52b3fb65995e8caf437f1a92057 (diff) | |
| download | coinos-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.js | 16 | ||||
| -rw-r--r-- | src/routes/(app)/support/+page.svelte | 81 |
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> |
