import { useQuery } from "@tanstack/react-query"; import confetti from "canvas-confetti"; import { useEffect, useRef, useState } from "react"; import { CountdownBanner } from "@/components/homepage/CountdownBanner"; import { PerformerForm } from "@/components/registration/PerformerForm"; import { TypeSelector } from "@/components/registration/TypeSelector"; import { WatcherForm } from "@/components/registration/WatcherForm"; import { useRegistrationOpen } from "@/lib/useRegistrationOpen"; import { orpc } from "@/utils/orpc"; function fireConfetti() { const colors = ["#d82560", "#52979b", "#d09035", "#214e51", "#ffffff"]; confetti({ particleCount: 120, spread: 80, origin: { x: 0.3, y: 0.6 }, colors, }); setTimeout(() => { confetti({ particleCount: 120, spread: 80, origin: { x: 0.7, y: 0.6 }, colors, }); }, 200); setTimeout(() => { confetti({ particleCount: 80, spread: 100, origin: { x: 0.5, y: 0.5 }, colors, }); }, 400); } type RegistrationType = "performer" | "watcher"; function redirectToSignup(email: string) { const params = new URLSearchParams({ signup: "1", email, next: "/account", }); window.location.href = `/login?${params.toString()}`; } export default function EventRegistrationForm() { const { isOpen } = useRegistrationOpen(); const confettiFired = useRef(false); const { data: capacity } = useQuery(orpc.getWatcherCapacity.queryOptions()); useEffect(() => { if (isOpen && !confettiFired.current) { confettiFired.current = true; fireConfetti(); } }, [isOpen]); const [selectedType, setSelectedType] = useState( null, ); if (!isOpen) { return (
); } return (

Schrijf je nu in!

De Kunstenkamp jaarwerking organiseert een Open Mic

Doe je mee of kom je kijken? Kies je rol en vul het formulier in.

{!selectedType && ( )} {selectedType === "performer" && ( setSelectedType(null)} onSuccess={(_token, email, _name) => redirectToSignup(email)} /> )} {selectedType === "watcher" && ( setSelectedType(null)} onSuccess={(_token, email, _name) => redirectToSignup(email)} /> )}
); }