// app/beach/BeachRegistrationForm.tsx 'use client'; import { Turnstile, TurnstileInstance } from '@marsidev/react-turnstile'; import React, { useRef, useActionState, useEffect } from 'react'; import { FaUser, FaEnvelope, FaPhone, FaUsers, FaTrophy, FaCheckCircle, FaExclamationTriangle } from "react-icons/fa"; import { submitRegistration } from './actions'; import { SiteConfig } from '../lib/config'; export default function BeachRegistrationForm({ config, turnstileSiteKey }: { config: SiteConfig, turnstileSiteKey: string }) { const [state, formAction, isPending] = useActionState(submitRegistration, null); const formRef = useRef(null); const turnstileRef = useRef(null); const classesData = Array.isArray(config.beachPage?.classes) ? config.beachPage.classes : [ { name: 'Grön', color: '#16a34a', desc: 'Nybörjare' }, { name: 'Blå', color: '#2563eb', desc: 'Spelat lite' }, { name: 'Svart', color: '#111827', desc: 'Spelat mycket' } ]; useEffect(() => { // Rensa endast vid lyckad inskickning if (state?.success) { formRef.current?.reset(); turnstileRef.current?.reset(); } else if (state?.success === false) { // Återställ Turnstile så de kan försöka igen vid fel turnstileRef.current?.reset(); } }, [state]); return (

Anmälnings­formulär

} name="name" placeholder="Ditt namn" required minLength={2} defaultValue={state?.values?.name || ''} /> } name="email" type="email" placeholder="namn@domän.com" required defaultValue={state?.values?.email || ''} />
} name="tel" type="tel" placeholder="Telefonnummer" required pattern="[0-9+ \-]{8,}" defaultValue={state?.values?.tel || ''} /> } name="team" placeholder="Lagnamn" required minLength={2} defaultValue={state?.values?.team || ''} />
{ e.currentTarget.value = e.currentTarget.value.replace(/\D/g, ''); }} className="w-full p-4 rounded-xl border-2 border-transparent bg-white focus:border-[#39979f] outline-none transition-all shadow-inner" placeholder="Minst 2" defaultValue={state?.values?.count || ''} />
{classesData.map((c: { name: string; color: string; desc?: string }) => ( ))}