Files
scan-wave/src/routes/private/events/creator/steps/StepCraftEmail.svelte
2025-06-29 15:06:30 +02:00

69 lines
1.8 KiB
Svelte

<script lang="ts">
let { email = $bindable() } = $props();
let showForm = $derived(!email.subject || !email.body);
function handleSubmit(e: Event) {
e.preventDefault();
const form = e.target as HTMLFormElement;
const formData = new FormData(form);
email = {
subject: formData.get('subject') as string,
body: formData.get('body') as string
};
showForm = false;
}
function showEditForm() {
showForm = true;
}
</script>
{#if showForm}
<form onsubmit={handleSubmit} class="flex flex-col space-y-4 bg-white p-8 rounded border border-gray-300 w-full shadow-none">
<h2 class="text-2xl font-semibold text-center mb-4">Craft Email</h2>
<label class="flex flex-col text-gray-700">
Subject
<input
type="text"
name="subject"
value={email.subject ?? ''}
class="mt-1 px-3 py-2 border border-gray-300 rounded focus:outline-none focus:ring-2 focus:ring-blue-200"
required
/>
</label>
<label class="flex flex-col text-gray-700">
Body
<textarea
name="body"
value={email.body ?? ''}
class="mt-1 px-3 py-2 border border-gray-300 rounded focus:outline-none focus:ring-2 focus:ring-blue-200 resize-none"
rows="6"
required
></textarea>
</label>
<button
type="submit"
class="mt-4 w-full rounded bg-blue-600 py-2 text-white transition hover:bg-blue-700"
>
Save
</button>
</form>
{:else}
<button
class="mb-4 w-full rounded bg-blue-600 py-2 text-white transition hover:bg-blue-700"
onclick={showEditForm}
aria-label="Edit email"
>
Edit email
</button>
<div class="rounded border border-gray-300 bg-white p-4">
<h2 class="mb-2 text-xl font-bold">Email Preview</h2>
<div class="mb-2">
<span class="block font-semibold">{email.subject}</span>
</div>
<div class="whitespace-pre-line text-gray-800">
{email.body}
</div>
</div>
{/if}