"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 (
{/* Header */}
CCG

Complete Your Registration

Select packages and payment method

Select Your Packages Ticket is required (€80 early bird until Dec 31, 2025). Add accommodation and food as needed.
{/* Ticket (required) */}
CCG 2026 Ticket (Required)
€80 Early bird (until Dec 31, 2025) • €120 Regular (Jan-Jun 2026) • €150 Late (after Jul 1, 2026)
CCA members: Bring two newcomers, get a free ticket!
€{baseTicketPrice}.00
{/* Accommodation */}
setPackages({ ...packages, accommodation: checked as boolean })} className="mt-1" />
€{accommodationPrice.toFixed(2)}
{/* Food */}
setPackages({ ...packages, food: checked as boolean })} className="mt-1" />
€{foodPrice.toFixed(2)}
{/* Total */}
Total Amount
{packages.accommodation || packages.food ? "All selected items will be charged now" : "Ticket only"}
€{calculateTotal().toFixed(2)}
{/* Payment Methods */}
Payment Options Choose your preferred payment method

All payments are processed securely through Stripe. You'll receive a confirmation email after successful payment.

) } return (
{/* Header */}
CCG

Register for CCG 2026

August 16-22, 2026 at the Commons Hub in Austria

Registration Form Tell us about yourself and what you'd like to bring to CCG
{/* Name */}
setFormData({ ...formData, name: e.target.value })} />
{/* Contact */}
setFormData({ ...formData, contact: e.target.value })} />
{/* Contributions */}