'use client'; import { FormEvent, ReactNode, useState } from 'react'; import Confetti from 'react-confetti'; import Spinner from './Spinner'; const API_URL = 'https://koodiklinikka-api.fly.dev/invites'; const CONFETTI_COLORS = [ '#9C27B0', // Purple '#E91E63', // Magenta '#8E24AA', // Darker Purple '#BA68C8', // Lighter Purple '#7B1FA2', // Darker Purple '#AA00FF', // Bright Purple '#6A1B9A', // Darker Purple '#8E24AA', // Medium Purple '#AD1457', // Dark Magenta '#4A148C', // Dark Purple '#AB47BC', // Light Purple '#C2185B', // Dark Magenta '#7C4DFF', // Light Purple '#6200EA', // Bright Purple '#EA80FC', // Light Purple '#D500F9', // Bright Magenta '#0097A7', // Cyan ]; export default function Form() { const [message, setMessage] = useState(null); const [isSubmitting, setIsSubmitting] = useState(false); const [isSuccess, setIsSuccess] = useState(false); async function handleSubmit(event: FormEvent) { event.preventDefault(); if (isSubmitting) return; setIsSubmitting(true); setIsSuccess(false); const formData = new FormData(event.currentTarget); const response = await fetch(API_URL, { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, body: JSON.stringify(Object.fromEntries(formData)), }); const data = await response.text(); setIsSubmitting(false); if (response.status === 200) { setMessage('✅ Kutsu lähetetty antamaasi sähköpostiosoitteeseen.'); setIsSuccess(true); return; } if (response.status === 400 && data === 'invalid_email') { setMessage('⚠️ Tarkasta syöttämäsi sähköpostiosoite'); return; } if (response.status === 400 && data === 'already_invited') { setMessage('♻️ Sähköpostiosoitteeseen on jo lähetetty kutsu'); return; } if (response.status === 400 && data === 'already_in_team') { setMessage( 🤔 Tällä sähköpostilla on jo luotu tunnus.{' '} Nollaa unohtunut salasana . ); return; } setMessage('⚡ Jotain meni pieleen. Yritä hetken päästä uudelleen.'); } return (
{message === null && (

Syötä sähköpostiosoitteesi alle ja saat kutsun Slack-yhteisöömme:

)} {message && ( <>
{message}
{isSuccess && ( )} )}
); }