Complete Your Registration
Select packages and payment method
All payments are processed securely through Stripe. You'll receive a confirmation email after successful payment.
"use client" import type React from "react" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Textarea } from "@/components/ui/textarea" import { Checkbox } from "@/components/ui/checkbox" import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group" import Link from "next/link" import { useState } from "react" export default function RegisterPage() { const [step, setStep] = useState<"form" | "payment">("form") const [formData, setFormData] = useState({ name: "", contact: "", contributions: "", expectations: "", howHeard: "", dietary: [] as string[], dietaryOther: "", crewConsent: "", }) const [packages, setPackages] = useState({ accommodation: false, food: false, }) const baseTicketPrice = 80 // Updated to early bird price €80 const accommodationPrice = 39.2 * 6 // Updated to €39.20/night * 6 nights = €235.20 const foodPrice = 35 * 3 + 10 * 3 // Updated to reflect catered (€35*3) + self-organized (€10*3) = €135 const calculateTotal = () => { let total = baseTicketPrice if (packages.accommodation) total += accommodationPrice if (packages.food) total += foodPrice return total } const handleSubmit = (e: React.FormEvent) => { e.preventDefault() // Validate required fields if ( !formData.name || !formData.contact || !formData.contributions || !formData.expectations || !formData.crewConsent ) { alert("Please fill in all required fields") return } setStep("payment") } const handleDietaryChange = (value: string, checked: boolean) => { setFormData((prev) => ({ ...prev, dietary: checked ? [...prev.dietary, value] : prev.dietary.filter((item) => item !== value), })) } if (step === "payment") { return (
Select packages and payment method
All payments are processed securely through Stripe. You'll receive a confirmation email after successful payment.
August 16-22, 2026 at the Commons Hub in Austria