{"version":3,"sources":["context/socket.tsx","components/guesswho.tsx","components/marathon2023.tsx","components/challengelaunch.tsx","components/guessthetheme.tsx","components/welcome.tsx","components/questions.tsx","components/writingworkshop.tsx","components/cluecompetition.tsx","App.tsx","reportWebVitals.js","index.tsx"],"names":["socket","io","SocketContext","createContext","GuessWho","useEffect","document","title","name1","setName1","useState","name2","setName2","name3","setName3","participantName","setParticipantName","participantEmail","setParticipantEmail","emailErrorMessage","setEmailErrorMessage","agree","setAgreement","hasBeenSubmitted","setSubmit","errorMessage","setErrorMessage","setupData","setSetupData","React","useContext","axios","get","concat","window","location","hostname","then","response","data","map","item","anagram","imageUrl","image","url","catch","err","console","error","validateEmail","email","test","_jsx","className","children","_jsxs","MDBContainer","MDBBox","MDBRow","center","MDBCol","md","onSubmit","async","e","preventDefault","post","res","emit","style","marginTop","marginBottom","textTransform","fontWeight","textAlign","entry","index","Fragment","src","alt","htmlFor","fontFamily","fontSize","required","type","id","value","onChange","updatedNames","target","autoComplete","onBlur","color","href","MDBBtn","outline","disabled","MDBIcon","far","icon","Marathon2023","name","setName","paddingBottom","ChallengeLaunch","theme","setParticipantTheme","AnnouncementDate","Date","Welcome","paddingTop","count","Questions","_setupData$0$question","_setupData$","answers","setAnswers","Array","fill","question","answer1","answer2","answer3","answer4","answer5","answer6","answer7","answer8","answer9","answer10","answer11","answer12","answer13","answer14","answer15","answer16","answer17","answer18","answer19","answer20","slice","height","width","updatedAnswers","WritingWorkshop","useLocation","codeParam","URLSearchParams","search","code","setCode","validateCode","validCode","submittedCode","setValidCode","codeErrorMessage","setCodeErrorMessage","date","year","getFullYear","toString","month","getMonth","padStart","day","getDate","btoa","replace","toLowerCase","_Fragment","ClueCompetition","_ref","clueId","parseInt","clue","setParticipantClue","CSSLoader","path","pathname","cssUrl","link","createElement","rel","head","appendChild","removeChild","AppContent","Switch","Route","exact","component","GuessTheTheme","match","params","Redirect","to","App","Provider","Router","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.06d6c04c.chunk.js","sourcesContent":["import { createContext } from \"react\";\nimport io from \"socket.io-client\";\n\nexport const socket = io();\n// eslint-disable-next-line no-undef\nexport const SocketContext: any = createContext(socket);\n","import {\n  MDBBox,\n  MDBContainer,\n  MDBRow,\n  MDBCol,\n  MDBBtn,\n  MDBIcon,\n} from \"mdbreact\";\nimport \"../index.css\";\nimport React, { useEffect, useState } from \"react\";\nimport axios from \"axios\";\nimport { SocketContext } from \"../context/socket\";\nimport { Socket } from \"socket.io-client\";\n\n\ntype GuessWhoEntry = {\n  name1: string;\n  name2: string;\n  name3: string;\n  participantName: string;\n  participantEmail: string;\n};\n\ntype GuessWhoSetup = {\n  anagram: string;\n  imageUrl?: string;\n};\n\nexport default function GuessWho() {\n  useEffect(() => {\n    document.title = 'Guess The Challenge Speakers';\n  }, []);\n\n  const [name1, setName1] = useState<string>(\"\");\n  const [name2, setName2] = useState<string>(\"\");\n  const [name3, setName3] = useState<string>(\"\");\n  const [participantName, setParticipantName] = useState<string>(\"\");\n  const [participantEmail, setParticipantEmail] = useState<string>(\"\");\n  const [emailErrorMessage, setEmailErrorMessage] = useState<string>(\"\");\n  const [agree, setAgreement] = useState<boolean>(false);\n  const [hasBeenSubmitted, setSubmit] = useState<boolean>(false);\n  const [errorMessage, setErrorMessage] = useState<string>(\"\");\n\n  const [setupData, setSetupData] = useState<GuessWhoSetup[]>([]);\n\n  const socket: Socket = React.useContext(SocketContext);\n\n  useEffect(() => {\n    axios.get(`https://${window.location.hostname}/strapi/setupguesswhos`)\n      .then(response => {\n        const data = response.data.map((item: any) => ({\n          anagram: item.anagram,\n          imageUrl: item.image? item.image.url : null!\n        }));\n        setSetupData(data);\n      })\n      .catch(err => {\n        console.error(\"API fetch error: \", err);\n      });\n  }, []);\n\n  const validateEmail = (email: string) => {\n    const emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/;\n    if (!emailPattern.test(email)) {\n      setEmailErrorMessage(\"Invalid email format\");\n    } else {\n      setEmailErrorMessage(\"\");\n    }\n  };\n\n  const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n    e.preventDefault();\n    validateEmail(participantEmail);\n    if (emailErrorMessage) {\n      return;\n    }\n\n    const data: GuessWhoEntry = {\n      name1: name1,\n      name2: name2,\n      name3: name3,\n      participantName: participantName,\n      participantEmail: participantEmail,\n    };\n\n    axios\n      .post(`https://${window.location.hostname}/strapi/guesswho`, data)\n      .then((res) => {\n        socket.emit(\"newEntry\", \"\");\n        setSubmit(true);\n      })\n      .catch((err) => {\n        setErrorMessage(\"Sorry, something went wrong. Please try again later.\");\n      });\n  };\n\n  return (\n    <div className=\"bg\">\n      <MDBContainer>\n        <MDBBox>\n          <br />\n          <br />\n          <br />\n        </MDBBox>\n        <MDBRow center>\n          <MDBCol md=\"6\">\n            {!hasBeenSubmitted ? (\n              <form onSubmit={handleSubmit}>\n                <p\n                  className=\"h2 text-center mb-4 white-text futuraFuture questionsTitle\"\n                  style={{ marginTop: \"-1em\", marginBottom: \"-1em\", textTransform: \"uppercase\", fontWeight: 600 }}\n                >\n                  Aarhus Symposium\n                </p>\n                <div className=\"image-container\" style={{ textAlign: \"center\" }}>\n                  {setupData.map((entry, index) => (\n                    <React.Fragment key={index}>\n                      {entry.imageUrl ? \n                      <img\n                        src={\"/strapi\" + entry.imageUrl}\n                        alt={`Face${index + 1}`}\n                        style={{ marginTop: \"2em\" }}\n                        className=\"responsive-image\"\n                      />\n                       : \"\"}\n                      <br />\n                      <label\n                        htmlFor={`nameInput${index + 1}`}\n                        className=\"white-text questionText\"\n                        style={{ fontWeight: \"bold\", textAlign: \"center\", fontFamily: \"futura-pt\", fontSize: \"1.5rem\" }}\n                      >\n                        {entry.anagram}\n                      </label>\n                      <br />\n                      <label\n                        htmlFor={`nameInput${index + 1}`}\n                        className=\"white-text\"\n                      >\n                        Answer {index + 1}:\n                      </label>\n                      <input\n                        required={true}\n                        type=\"text\"\n                        id={`nameInput${index + 1}`}\n                        className=\"form-control\"\n                        value={[name1, name2, name3][index]}\n                        onChange={(e) => {\n                          const updatedNames = [name1, name2, name3];\n                          updatedNames[index] = e.target.value;\n                          setName1(updatedNames[0]);\n                          setName2(updatedNames[1]);\n                          setName3(updatedNames[2]);\n                        }}\n                        style={{ marginBottom: \"2em\" }}\n                      />\n                    </React.Fragment>\n                  ))}\n                  <p className=\"h5 text-center mb-4 white-text futuraFuture\">\n                    Personal information\n                  </p>\n                  <label htmlFor=\"participantName\" className=\"white-text futuraFuture\">\n                    Your full name:\n                  </label>\n                  <input\n                    required={true}\n                    type=\"text\"\n                    id=\"participantName\"\n                    className=\"form-control\"\n                    value={participantName}\n                    onChange={(e) => setParticipantName(e.target.value)}\n                    style={{ marginBottom: \"2em\" }}\n                    autoComplete=\"name\"\n                  />\n                  <label htmlFor=\"participantEmail\" className=\"white-text futuraFont\">\n                    Your email:\n                  </label>\n                  <input\n                    required={true}\n                    type=\"text\"\n                    id=\"participantEmail\"\n                    className={`form-control ${emailErrorMessage ? \"is-invalid\" : \"\"}`}\n                    value={participantEmail}\n                    onChange={(e) => {\n                      setParticipantEmail(e.target.value);\n                    }}\n                    onBlur={(e) => validateEmail(e.target.value)}\n                    autoComplete=\"email\"\n                  />\n                  {emailErrorMessage && (\n                    <div className=\"invalid-feedback\">{emailErrorMessage}</div>\n                  )}\n                  <br />\n                  <div className=\"custom-control custom-checkbox\">\n                    <input\n                      type=\"checkbox\"\n                      className=\"custom-control-input\"\n                      id=\"defaultUnchecked\"\n                      value=\"accept\"\n                      onChange={(e) => setAgreement(!agree)}\n                    />\n                    <label className=\"custom-control-label futuraFont\" htmlFor=\"defaultUnchecked\" style={{ color: \"white\" }}>\n                      By registering, I accept that Aarhus Symposium may send information regarding events and\n                      important deadlines and I accept the{\" \"}\n                      <a href=\"https://aarhus-symposium.org/terms\">\n                        Privacy Policy & Terms of Service\n                      </a>\n                    </label>\n                  </div>\n                  {errorMessage && (\n                    <p className=\"text-center mt-4 futuraFont\" style={{ color: \"red\" }}>\n                      {errorMessage}\n                    </p>\n                  )}\n                  <div className=\"text-center mt-4 futuraFont\">\n                    <MDBBtn color=\"light\" outline type=\"submit\" disabled={!agree}>\n                      Send\n                      <MDBIcon far icon=\"paper-plane\" className=\"ml-2\" />\n                    </MDBBtn>\n                  </div>\n                  <br />\n                </div>\n              </form>\n            ) : (\n              <p className=\"h1 text-center mb-4 white-text futuraFont\">\n                SUCCESS\n              </p>\n            )}\n          </MDBCol>\n        </MDBRow>\n      </MDBContainer>\n    </div>\n  );\n}","import {\n  MDBBox,\n  MDBContainer,\n  MDBRow,\n  MDBCol,\n  MDBBtn,\n  MDBIcon,\n} from \"mdbreact\";\nimport \"../index.css\";\nimport React from \"react\";\nimport axios from \"axios\";\nimport { SocketContext } from \"../context/socket\";\nimport { Socket } from \"socket.io-client\";\n\ntype MarathonEntry = {\n  name: string;\n  email: string;\n};\n\nexport default function Marathon2023() {\n  const [name, setName] = React.useState<string>(\"\");\n  const [email, setParticipantEmail] = React.useState<string>(\"\");\n  const [emailErrorMessage, setEmailErrorMessage] = React.useState<string>(\"\");\n  const [agree, setAgreement] = React.useState<boolean>(false);\n  const [hasBeenSubmitted, setSubmit] = React.useState<boolean>(false);\n  const [errorMessage, setErrorMessage] = React.useState<string>(\"\");\n\n  const socket: Socket = React.useContext(SocketContext);\n\n  const validateEmail = (email) => {\n    const emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/;\n    if (!emailPattern.test(email)) {\n      setEmailErrorMessage(\"Invalid email format\");\n    } else {\n      setEmailErrorMessage(\"\");\n    }\n  };\n\n  const handleSubmit = async (e: any) => {\n    e.preventDefault();\n    validateEmail(email);\n    if (emailErrorMessage) {\n      return;\n    }\n\n    const data: MarathonEntry = {\n      name: name,\n      email: email,\n    };\n\n    axios\n      .post(`https://${window.location.hostname}/strapi/marathon-2023`, data)\n      .then((res) => {\n        socket.emit(\"newEntry\", \"\");\n        setSubmit(true);\n      })\n      .catch((err) => {\n        setErrorMessage(\"Sorry, something went wrong. Please try again later.\");\n      });\n  };\n\n  return (\n    <div className=\"bg\">\n      <MDBContainer>\n        <MDBBox>\n          <br />\n          <br />\n          <br />\n        </MDBBox>\n        <MDBRow center>\n          <MDBCol md=\"6\">\n            {!hasBeenSubmitted ? (\n              <form onSubmit={handleSubmit}>\n                <p\n                  className=\"h1 text-center mb-4 white-text futuraFuture\"\n                  style={{ paddingBottom: \"2rem\" }}\n                >\n                  Win tickets for the half marathon!\n                </p>\n                <p\n                  className=\"h4 text-center mb-4 white-text futuraFuture\"\n                  style={{ marginTop: \"-1em\", marginBottom: \"-1em\" }}\n                >\n                  Please fill in your personal information below to participate\n                </p>\n                <br></br>\n                <label\n                  htmlFor=\"defaultFormContactEmailEx\"\n                  className=\"white-text\"\n                >\n                  Your name:\n                </label>\n\n                <input\n                  required={true}\n                  type=\"text\"\n                  id=\"defaultFormContactNameEx\"\n                  className=\"form-control\"\n                  value={name}\n                  onChange={(e) => setName(e.target.value)}\n                  style={{ marginBottom: \"2em\" }}\n                  autoComplete=\"name\"\n                ></input>\n\n                <label\n                  htmlFor=\"defaultFormContactEmailEx\"\n                  className=\"white-text\"\n                >\n                  Your email:\n                </label>\n\n                <input\n                  required={true}\n                  type=\"text\"\n                  id=\"defaultFormContactNameEx\"\n                  className={`form-control ${\n                    emailErrorMessage ? \"is-invalid\" : \"\"\n                  }`}\n                  value={email}\n                  onChange={(e) => {\n                    setParticipantEmail(e.target.value);\n                  }}\n                  onBlur={(e) => validateEmail(e.target.value)}\n                  autoComplete=\"email\"\n                />\n                {emailErrorMessage && (\n                  <div className=\"invalid-feedback\">{emailErrorMessage}</div>\n                )}\n                <br />\n\n                <div className=\"custom-control custom-checkbox\">\n                  <input\n                    type=\"checkbox\"\n                    className=\"custom-control-input\"\n                    id=\"defaultUnchecked\"\n                    value=\"accept\"\n                    onChange={(e) => {\n                      setAgreement(agree ? false : true);\n                    }}\n                  />\n                  <label\n                    className=\"custom-control-label\"\n                    htmlFor=\"defaultUnchecked\"\n                    style={{ color: \"white\" }}\n                  >\n                    By entering this competition, I accept that Aarhus Symposium\n                    may send information regarding events and important\n                    deadlines and I accept the{\" \"}\n                    <a href=\"https://aarhus-symposium.org/terms\">\n                      Privacy Policy & Terms of Service\n                    </a>\n                  </label>\n                </div>\n\n                {errorMessage && (\n                  <p\n                    className=\"text-center mt-4 futuraFont\"\n                    style={{ color: \"red\" }}\n                  >\n                    {errorMessage}\n                  </p>\n                )}\n\n                <div className=\"text-center mt-4 futuraFont\">\n                  <MDBBtn color=\"light\" outline type=\"submit\" disabled={!agree}>\n                    Send\n                    <MDBIcon far icon=\"paper-plane\" className=\"ml-2\" />\n                  </MDBBtn>\n                </div>\n                <br />\n              </form>\n            ) : (\n              <p className=\"h1 text-center mb-4 white-text futuraFont\">\n                SUCCESS\n              </p>\n            )}\n          </MDBCol>\n        </MDBRow>\n      </MDBContainer>\n    </div>\n  );\n}\n","import {\n  MDBBox,\n  MDBContainer,\n  MDBRow,\n  MDBCol,\n  MDBBtn,\n  MDBIcon,\n} from \"mdbreact\";\nimport \"../index.css\";\nimport React, { useEffect } from 'react';\nimport axios from \"axios\";\nimport { SocketContext } from \"../context/socket\";\nimport { Socket } from \"socket.io-client\";\n\ntype ChallengeLaunchEntry = {\n  name: string;\n  email: string;\n};\n\nexport default function ChallengeLaunch() {\n  useEffect(() => {\n    document.title = 'Competition';\n  }, []);\n  const [name, setName] = React.useState<string>(\"\");\n  const [email, setParticipantEmail] = React.useState<string>(\"\");\n  const [emailErrorMessage, setEmailErrorMessage] = React.useState<string>(\"\");\n  const [agree, setAgreement] = React.useState<boolean>(false);\n  const [hasBeenSubmitted, setSubmit] = React.useState<boolean>(false);\n  const [errorMessage, setErrorMessage] = React.useState<string>(\"\");\n\n  const socket: Socket = React.useContext(SocketContext);\n\n  const validateEmail = (email) => {\n    const emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/;\n    if (!emailPattern.test(email)) {\n      setEmailErrorMessage(\"Invalid email format\");\n    } else {\n      setEmailErrorMessage(\"\");\n    }\n  };\n\n  const handleSubmit = async (e: any) => {\n    e.preventDefault();\n    validateEmail(email);\n    if (emailErrorMessage) {\n      return;\n    }\n\n    const data: ChallengeLaunchEntry = {\n      name: name,\n      email: email,\n    };\n\n    axios\n      .post(`https://${window.location.hostname}/strapi/challengelaunch`, data)\n      .then((res) => {\n        socket.emit(\"newEntry\", \"\");\n        setSubmit(true);\n      })\n      .catch((err) => {\n        setErrorMessage(\"Sorry, something went wrong. Please try again later.\");\n      });\n  };\n\n  return (\n    <div className=\"bg\">\n      <MDBContainer>\n        <MDBBox>\n          <br />\n          <br />\n          <br />\n        </MDBBox>\n        <MDBRow center>\n          <MDBCol md=\"6\">\n            {!hasBeenSubmitted ? (\n              <form onSubmit={handleSubmit}>\n                <p\n                  className=\"h1 text-center mb-4 white-text futuraFuture\"\n                  style={{ paddingBottom: \"2rem\" }}\n                >\n                  Aarhus Symposium\n                </p>\n                <p\n                  className=\"h4 text-center mb-4 white-text futuraFuture\"\n                  style={{ marginTop: \"-1em\", marginBottom: \"-1em\" }}\n                >\n                  Please fill in your personal information below to sign up for our newsletter\n                </p>\n                <br></br>\n                <label\n                  htmlFor=\"defaultFormContactEmailEx\"\n                  className=\"white-text\"\n                >\n                  Your name:\n                </label>\n\n                <input\n                  required={true}\n                  type=\"text\"\n                  id=\"defaultFormContactNameEx\"\n                  className=\"form-control\"\n                  value={name}\n                  onChange={(e) => setName(e.target.value)}\n                  style={{ marginBottom: \"2em\" }}\n                  autoComplete=\"name\"\n                ></input>\n\n                <label\n                  htmlFor=\"defaultFormContactEmailEx\"\n                  className=\"white-text\"\n                >\n                  Your email:\n                </label>\n\n                <input\n                  required={true}\n                  type=\"text\"\n                  id=\"defaultFormContactNameEx\"\n                  className={`form-control ${\n                    emailErrorMessage ? \"is-invalid\" : \"\"\n                  }`}\n                  value={email}\n                  onChange={(e) => {\n                    setParticipantEmail(e.target.value);\n                  }}\n                  onBlur={(e) => validateEmail(e.target.value)}\n                  autoComplete=\"email\"\n                />\n                {emailErrorMessage && (\n                  <div className=\"invalid-feedback\">{emailErrorMessage}</div>\n                )}\n                <br />\n\n                <div className=\"custom-control custom-checkbox\">\n                  <input\n                    type=\"checkbox\"\n                    className=\"custom-control-input\"\n                    id=\"defaultUnchecked\"\n                    value=\"accept\"\n                    onChange={(e) => {\n                      setAgreement(agree ? false : true);\n                    }}\n                  />\n                  <label\n                    className=\"custom-control-label\"\n                    htmlFor=\"defaultUnchecked\"\n                    style={{ color: \"white\" }}\n                  >\n                    By entering this competition, I accept that Aarhus Symposium\n                    may send information regarding events and important\n                    deadlines, and I accept the{\" \"}\n                    <a href=\"https://aarhus-symposium.org/terms\">\n                      Privacy Policy & Terms of Service\n                    </a>\n                  </label>\n                </div>\n\n                {errorMessage && (\n                  <p\n                    className=\"text-center mt-4 futuraFont\"\n                    style={{ color: \"red\" }}\n                  >\n                    {errorMessage}\n                  </p>\n                )}\n\n                <div className=\"text-center mt-4 futuraFont\">\n                  <MDBBtn color=\"light\" outline type=\"submit\" disabled={!agree}>\n                    Send\n                    <MDBIcon far icon=\"paper-plane\" className=\"ml-2\" />\n                  </MDBBtn>\n                </div>\n                <br />\n              </form>\n            ) : (\n              <p className=\"h1 text-center mb-4 white-text futuraFont\">\n                SUCCESS\n              </p>\n            )}\n          </MDBCol>\n        </MDBRow>\n      </MDBContainer>\n    </div>\n  );\n}\n","import {\n  MDBBox,\n  MDBContainer,\n  MDBRow,\n  MDBCol,\n  MDBBtn,\n  MDBIcon,\n} from \"mdbreact\";\nimport \"../index.css\";\nimport React, { useEffect } from 'react';\nimport axios from \"axios\";\nimport { SocketContext } from \"../context/socket\";\nimport { Socket } from \"socket.io-client\";\n\ntype GuessTheThemeEntry = {\n  name: string;\n  email: string;\n  theme: string;\n};\n\nexport default function ChallengeLaunch() {\n  useEffect(() => {\n    document.title = 'Guess The Theme';\n  }, []);\n  const [name, setName] = React.useState<string>(\"\");\n  const [email, setParticipantEmail] = React.useState<string>(\"\");\n  const [theme, setParticipantTheme] = React.useState<string>(\"\");\n  const [emailErrorMessage, setEmailErrorMessage] = React.useState<string>(\"\");\n  const [agree, setAgreement] = React.useState<boolean>(false);\n  const [hasBeenSubmitted, setSubmit] = React.useState<boolean>(false);\n  const [errorMessage, setErrorMessage] = React.useState<string>(\"\");\n\n  const socket: Socket = React.useContext(SocketContext);\n\n  const validateEmail = (email) => {\n    const emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/;\n    if (!emailPattern.test(email)) {\n      setEmailErrorMessage(\"Invalid email format\");\n    } else {\n      setEmailErrorMessage(\"\");\n    }\n  };\n\n  const handleSubmit = async (e: any) => {\n    e.preventDefault();\n    validateEmail(email);\n    if (emailErrorMessage) {\n      return;\n    }\n\n    const data: GuessTheThemeEntry = {\n      name: name,\n      email: email,\n      theme: theme,\n    };\n\n    axios\n      .post(`https://${window.location.hostname}/strapi/guessthetheme`, data)\n      .then((res) => {\n        socket.emit(\"newEntry\", \"\");\n        setSubmit(true);\n      })\n      .catch((err) => {\n        setErrorMessage(\"Sorry, something went wrong. Please try again later.\");\n      });\n  };\n\n  \n  // This automatically redirects the user to theme-announcement after it has been announced - given the correct date.\n  useEffect(() => {\n    const AnnouncementDate = new Date('2024-05-06T11:02:00Z'); // Ensure this date format is correct\n    if (new Date() > AnnouncementDate) {\n      window.location.href = 'https://www.aarhus-symposium.org/theme-announcement';\n    }\n  }, []); // Empty dependency array ensures this runs only on mount\n\n\n  return (\n    <div className=\"bg\">\n      <MDBContainer>\n        <MDBBox>\n          <br />\n          <br />\n          <br />\n        </MDBBox>\n        <MDBRow center>\n          <MDBCol md=\"6\">\n            {!hasBeenSubmitted ? (\n              <form onSubmit={handleSubmit}>\n                <p\n                  className=\"h1 text-center mb-4 white-text futuraFuture\"\n                  style={{ paddingBottom: \"2rem\" }}\n                >\n                  GUESS THE THEME\n                </p>\n                <br></br>\n                <label\n                  htmlFor=\"defaultFormContactThemeEx\"\n                  className=\"white-text\"\n                >\n                  Theme:\n                </label>\n\n                <input\n                  required={true}\n                  type=\"text\"\n                  id=\"defaultFormContactThemeEx\"\n                  className=\"form-control\"\n                  value={theme}\n                  onChange={(e) => setParticipantTheme(e.target.value)}\n                  style={{ marginBottom: \"2em\" }}\n                  autoComplete=\"theme\"\n                ></input>\n                <br></br>\n                <br></br>\n                <p\n                  className=\"h4 text-center mb-4 white-text futuraFuture\"\n                  style={{ marginTop: \"-1em\", marginBottom: \"-1em\" }}\n                >\n                  Please fill in your personal information below to participate\n                </p>\n                <br></br>\n                <label\n                  htmlFor=\"defaultFormContactEmailEx\"\n                  className=\"white-text\"\n                >\n                  Your name:\n                </label>\n\n                <input\n                  required={true}\n                  type=\"text\"\n                  id=\"defaultFormContactNameEx\"\n                  className=\"form-control\"\n                  value={name}\n                  onChange={(e) => setName(e.target.value)}\n                  style={{ marginBottom: \"2em\" }}\n                  autoComplete=\"name\"\n                ></input>\n\n                <label\n                  htmlFor=\"defaultFormContactEmailEx\"\n                  className=\"white-text\"\n                >\n                  Your email:\n                </label>\n\n                <input\n                  required={true}\n                  type=\"text\"\n                  id=\"defaultFormContactNameEx\"\n                  className={`form-control ${\n                    emailErrorMessage ? \"is-invalid\" : \"\"\n                  }`}\n                  value={email}\n                  onChange={(e) => {\n                    setParticipantEmail(e.target.value);\n                  }}\n                  onBlur={(e) => validateEmail(e.target.value)}\n                  autoComplete=\"email\"\n                />\n                {emailErrorMessage && (\n                  <div className=\"invalid-feedback\">{emailErrorMessage}</div>\n                )}\n                <br />\n\n                <div className=\"custom-control custom-checkbox\">\n                  <input\n                    type=\"checkbox\"\n                    className=\"custom-control-input\"\n                    id=\"defaultUnchecked\"\n                    value=\"accept\"\n                    onChange={(e) => {\n                      setAgreement(agree ? false : true);\n                    }}\n                  />\n                  <label\n                    className=\"custom-control-label\"\n                    htmlFor=\"defaultUnchecked\"\n                    style={{ color: \"white\" }}\n                  >\n                    By entering this competition, I accept that Aarhus Symposium\n                    may send information regarding events and important\n                    deadlines, and I accept the{\" \"}\n                    <a href=\"https://aarhus-symposium.org/terms\">\n                      Privacy Policy & Terms of Service\n                    </a>\n                  </label>\n                </div>\n\n                {errorMessage && (\n                  <p\n                    className=\"text-center mt-4 futuraFont\"\n                    style={{ color: \"red\" }}\n                  >\n                    {errorMessage}\n                  </p>\n                )}\n\n                <div className=\"text-center mt-4 futuraFont\">\n                  <MDBBtn color=\"light\" outline type=\"submit\" disabled={!agree}>\n                    Send\n                    <MDBIcon far icon=\"paper-plane\" className=\"ml-2\" />\n                  </MDBBtn>\n                </div>\n                <br />\n              </form>\n            ) : (\n              <p className=\"h1 text-center mb-4 white-text futuraFont\">\n                SUCCESS\n              </p>\n            )}\n          </MDBCol>\n        </MDBRow>\n      </MDBContainer>\n    </div>\n  );\n}\n","import React, { useEffect } from \"react\";\nimport \"../index.css\";\n\nexport default function Welcome() {\n  useEffect(() => {\n    document.title = 'Aarhus Symposium';\n  }, []);\n  return (\n    <div>\n      <p\n        className=\"h3 text-center mb-4 white-text futuraFuture\"\n        style={{ paddingTop: \"4rem\" }}\n      >\n        Welcome to\n      </p>\n      <p\n        className=\"h1 text-center mb-4 white-text futuraFuture\"\n        style={{ paddingBottom: \"3rem\" }}\n      >\n        Aarhus Symposium\n      </p>\n      <p className=\"h5 text-center mb-4 white-text futuraFuture\">\n        The page you were trying to access is no longer active.\n      </p>\n      <p className=\"h5 text-center mb-4 white-text futuraFuture\">\n        Please try again later!\n      </p>\n    </div>\n  );\n}\n","import {\n  MDBBox,\n  MDBContainer,\n  MDBRow,\n  MDBCol,\n  MDBBtn,\n  MDBIcon,\n} from \"mdbreact\";\nimport \"../index.css\";\nimport React, { useEffect, useState } from \"react\";\nimport axios from \"axios\";\nimport { SocketContext } from \"../context/socket\";\nimport { Socket } from \"socket.io-client\";\n\ntype QuestionsEntry = {\n  participantName: string;\n  participantEmail: string;\n  answer1: string;\n  answer2: string;\n  answer3: string;\n  answer4: string;\n  answer5: string;\n  answer6: string;\n  answer7: string;\n  answer8: string;\n  answer9: string;\n  answer10: string;\n  answer11: string;\n  answer12: string;\n  answer13: string;\n  answer14: string;\n  answer15: string;\n  answer16: string;\n  answer17: string;\n  answer18: string;\n  answer19: string;\n  answer20: string;\n};\n\n\ntype QuestionsSetup = {\n  question: string;\n  imageUrl?: string;\n};\n\nconst LimitEntries : Boolean = true;\nconst LimitNumber : number = 200;\nlet count : number = 0;\n\nexport default function Questions() {\n  useEffect(() => {\n    document.title = 'Questioneere Competition';\n  }, []);\n  const [answers, setAnswers] = useState<string[]>(Array(20).fill(\"\"));\n  const [participantName, setParticipantName] = useState<string>(\"\");\n  const [participantEmail, setParticipantEmail] = useState<string>(\"\");\n  const [emailErrorMessage, setEmailErrorMessage] = useState<string>(\"\");\n  const [agree, setAgreement] = useState<boolean>(false);\n  const [hasBeenSubmitted, setSubmit] = useState<boolean>(false);\n  const [errorMessage, setErrorMessage] = useState<string>(\"\");\n\n  const [setupData, setSetupData] = useState<QuestionsSetup[]>([]);\n\n  const socket: Socket = React.useContext(SocketContext);\n\n  useEffect(() => {\n    axios.get(`https://${window.location.hostname}/strapi/setupquestions`)\n      .then(response => {\n        const data = response.data.map((item: any) => ({\n          question: item.question,\n          imageUrl: item.image ? item.image.url : null\n        }));\n        setSetupData(data);\n      })\n      .catch(err => {\n        console.error(\"API fetch error: \", err);\n      });\n      axios.get(`https://${window.location.hostname}/strapi/questions/count`).then((res) => {\n        count = res.data.count;\n      });\n\n    if(count >= LimitNumber && LimitEntries){\n      setErrorMessage(\"Registration Closed: The event is now full and no additional attendees can be accommodated.\");\n    }\n  }, []);\n\n  const validateEmail = (email: string) => {\n    const emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/;\n    if (!emailPattern.test(email)) {\n      setEmailErrorMessage(\"Invalid email format\");\n    } else {\n      setEmailErrorMessage(\"\");\n    }\n  };\n\n  const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n    e.preventDefault();\n    validateEmail(participantEmail);\n    if (emailErrorMessage) {\n      return;\n    }\n\n    const data: QuestionsEntry = {\n      participantName,\n      participantEmail,\n      answer1: answers[0] || \"\",\n      answer2: answers[1] || \"\",\n      answer3: answers[2] || \"\",\n      answer4: answers[3] || \"\",\n      answer5: answers[4] || \"\",\n      answer6: answers[5] || \"\",\n      answer7: answers[6] || \"\",\n      answer8: answers[7] || \"\",\n      answer9: answers[8] || \"\",\n      answer10: answers[9] || \"\",\n      answer11: answers[10] || \"\",\n      answer12: answers[11] || \"\",\n      answer13: answers[12] || \"\",\n      answer14: answers[13] || \"\",\n      answer15: answers[14] || \"\",\n      answer16: answers[15] || \"\",\n      answer17: answers[16] || \"\",\n      answer18: answers[17] || \"\",\n      answer19: answers[18] || \"\",\n      answer20: answers[19] || \"\"          \n    };\n\n    axios.get(`https://${window.location.hostname}/strapi/questions/count`).then((res) => {\n        count = res.data.count;\n      });\n\n    if(count >= LimitNumber && LimitEntries){\n      setErrorMessage(\"Registration Closed: The event is now full and no additional attendees can be accommodated.\");\n      return;\n    }\n\n    axios\n      .post(`https://${window.location.hostname}/strapi/questions`, data)\n      .then((res) => {\n        socket.emit(\"newEntry\", \"\");\n        setSubmit(true);\n      })\n      .catch((err) => {\n        setErrorMessage(\"Sorry, something went wrong. Please try again later.\");\n      });\n  };\n\n  return (\n    <div className=\"bg\">\n      <MDBContainer>\n        <MDBBox>\n          <br />\n          <br />\n          <br />\n        </MDBBox>\n        <MDBRow center>\n          <MDBCol md=\"6\">\n            {!hasBeenSubmitted ? (\n              <form onSubmit={handleSubmit}>\n                <p\n                  className=\"h2 text-center mb-4 white-text futuraFuture questionsTitle\"\n                  style={{ marginTop: \"-1em\", marginBottom: \"-1em\" }}\n                >\n                  {setupData[0]?.question ?? \"Contest not available\"}\n                </p>\n                <div className=\"image-container\" style={{ textAlign: \"center\" }}>\n                  {setupData.slice(1).map((entry, index) => (\n                    <React.Fragment key={index}>\n                      {entry.imageUrl && (\n                        <img\n                          src={\"/strapi\" + entry.imageUrl}\n                          alt={`Face${index + 1}`}\n                          height={500}\n                          width={500}\n                          style={{ marginTop: \"2em\" }}\n                          className=\"responsive-image\"\n                        />\n                      )}\n                      <br />\n                      <label\n                        htmlFor={`nameInput${index + 1}`}\n                        className=\"white-text questionText\"\n                        style={{ fontWeight: \"bold\", textAlign: \"center\" }}\n                      >\n                        {entry.question}\n                      </label>\n                      <br />\n                      <label\n                        htmlFor={`nameInput${index + 1}`}\n                        className=\"white-text\"\n                      >\n                        Answer {index + 1}:\n                      </label>\n                      <input\n                        required={true}\n                        type=\"text\"\n                        id={`nameInput${index + 1}`}\n                        className=\"form-control\"\n                        value={answers[index]}\n                        onChange={(e) => {\n                          const updatedAnswers = [...answers];\n                          updatedAnswers[index] = e.target.value;\n                          setAnswers(updatedAnswers);\n                        }}\n                        style={{ marginBottom: \"2em\" }}\n                      />\n                    </React.Fragment>\n                  ))}\n                  <p className=\"h5 text-center mb-4 white-text futuraFuture\">\n                    Personal information\n                  </p>\n                  <label htmlFor=\"participantName\" className=\"white-text\">\n                    Your name:\n                  </label>\n                  <input\n                    required={true}\n                    type=\"text\"\n                    id=\"participantName\"\n                    className=\"form-control\"\n                    value={participantName}\n                    onChange={(e) => setParticipantName(e.target.value)}\n                    style={{ marginBottom: \"2em\" }}\n                    autoComplete=\"name\"\n                  />\n                  <label htmlFor=\"participantEmail\" className=\"white-text\">\n                    Your email:\n                  </label>\n                  <input\n                    required={true}\n                    type=\"text\"\n                    id=\"participantEmail\"\n                    className={`form-control ${emailErrorMessage ? \"is-invalid\" : \"\"}`}\n                    value={participantEmail}\n                    onChange={(e) => {\n                      setParticipantEmail(e.target.value);\n                    }}\n                    onBlur={(e) => validateEmail(e.target.value)}\n                    autoComplete=\"email\"\n                  />\n                  {emailErrorMessage && (\n                    <div className=\"invalid-feedback\">{emailErrorMessage}</div>\n                  )}\n                  <br />\n                  <div className=\"custom-control custom-checkbox\">\n                    <input\n                      type=\"checkbox\"\n                      className=\"custom-control-input\"\n                      id=\"defaultUnchecked\"\n                      value=\"accept\"\n                      onChange={(e) => setAgreement(!agree)}\n                    />\n                    <label className=\"custom-control-label\" htmlFor=\"defaultUnchecked\" style={{ color: \"white\" }}>\n                      By registering, I accept that Aarhus Symposium may send information regarding events and\n                      important deadlines and I accept the{\" \"}\n                      <a href=\"https://aarhus-symposium.org/terms\">\n                        Privacy Policy & Terms of Service\n                      </a>\n                    </label>\n                  </div>\n                  {errorMessage && (\n                    <p className=\"text-center mt-4 futuraFont\" style={{ color: \"red\" }}>\n                      {errorMessage}\n                    </p>\n                  )}\n                  <div className=\"text-center mt-4 futuraFont\">\n                    <MDBBtn color=\"light\" outline type=\"submit\" disabled={!agree || setupData[0] == null}>\n                      Send\n                      <MDBIcon far icon=\"paper-plane\" className=\"ml-2\" />\n                    </MDBBtn>\n                  </div>\n                  <br />\n                </div>\n              </form>\n            ) : (\n              <p className=\"h1 text-center mb-4 white-text futuraFont\">\n                SUCCESS\n              </p>\n            )}\n          </MDBCol>\n        </MDBRow>\n      </MDBContainer>\n    </div>\n  );\n}","import {\n  MDBBox,\n  MDBContainer,\n  MDBRow,\n  MDBCol,\n  MDBBtn,\n  MDBIcon,\n} from \"mdbreact\";\nimport \"../index.css\";\nimport { useLocation } from 'react-router-dom';\nimport React, { useEffect } from \"react\";\nimport axios from \"axios\";\nimport { SocketContext } from \"../context/socket\";\nimport { Socket } from \"socket.io-client\";\n\ntype WritingWorkshopEntry = {\n  name: string;\n  email: string;\n};\n\nexport default function WritingWorkshop() {\n  const location = useLocation();\n\n  useEffect(() => {\n    const params = new URLSearchParams(location.search);\n    const codeParam = params.get('code');\n    if (codeParam && code !== codeParam) { // Only update if it’s different\n      setCode(codeParam);\n      // Optionally validate the code if necessary here\n      validateCode(codeParam);\n      if(!validCode){\n        setCode(\"\");\n      }\n    }\n\n    document.title = 'Writing Workshop';\n\n  }, []);\n  let submittedCode = \"\";\n  const [code, setCode] = React.useState<string>(\"\");\n  const [name, setName] = React.useState<string>(\"\");\n  const [validCode, setValidCode] = React.useState<boolean>(false);\n  const [email, setParticipantEmail] = React.useState<string>(\"\");\n  const [emailErrorMessage, setEmailErrorMessage] = React.useState<string>(\"\");\n  const [codeErrorMessage, setCodeErrorMessage] = React.useState<string>(\"\");\n  const [agree, setAgreement] = React.useState<boolean>(false);\n  const [hasBeenSubmitted, setSubmit] = React.useState<boolean>(false);\n  const [errorMessage, setErrorMessage] = React.useState<string>(\"\");\n\n  const socket: Socket = React.useContext(SocketContext);\n\n  const validateEmail = (email) => {\n    const emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/;\n    if (!emailPattern.test(email)) {\n      setEmailErrorMessage(\"Invalid email format\");\n    } else {\n      setEmailErrorMessage(\"\");\n    }\n  };\n\n  const validateCode = (value) => {\n    const date = new Date();\n    const year = date.getFullYear().toString();\n    const month = (date.getMonth() + 1).toString().padStart(2, '0');\n    const day = date.getDate().toString().padStart(2, '0');\n    const yearMonthDay = year + month + day;\n  \n    // Encode the yearMonthDay to Base64\n    const base64EncodedDate = btoa(yearMonthDay).replace(/=+$/, '').toLowerCase();\n  \n    // Validate the input value\n    if (value === base64EncodedDate) {\n      submittedCode = value;\n      setCodeErrorMessage(\"\");\n      setValidCode(true);\n    } else {\n      setCodeErrorMessage(\"Invalid code\");\n      setValidCode(false);\n    }\n    };\n  \n  const handleSubmit = async (e: any) => {\n    e.preventDefault();\n    validateEmail(email);\n    validateCode(code);\n\n    if (emailErrorMessage || codeErrorMessage) {\n      return;\n    }\n\n\n    const data: WritingWorkshopEntry = {\n      name: name,\n      email: email,\n    };\n\n    axios\n      .post(`https://${window.location.hostname}/strapi/writingworkshops`, data)\n      .then((res) => {\n        socket.emit(\"newEntry\", \"\");\n        setSubmit(true);\n      })\n      .catch((err) => {\n        setErrorMessage(\"Sorry, something went wrong. Please try again later.\");\n      });\n  };\n\n\n\n  return (\n    <div className=\"bg\">\n      <MDBContainer>\n        <MDBBox>\n          <br />\n          <br />\n          <br />\n        </MDBBox>\n        <MDBRow center>\n          <MDBCol md=\"6\">\n            {!hasBeenSubmitted ? (\n              <form onSubmit={handleSubmit}>\n                <p\n                  className=\"h1 text-center mb-4 white-text futuraFuture\"\n                  style={{ paddingBottom: \"2rem\" }}\n                >\n                  Aarhus Symposium\n                </p>\n                {!validCode && (\n                  <>\n                    <label\n                      htmlFor=\"defaultFormContactEmailEx\"\n                      className=\"white-text\"\n                    >\n                      Workshop Code:\n                    </label>\n\n                    <input\n                      required={true}\n                      type=\"text\"\n                      id=\"defaultFormContactCodeEx\"\n                      className={`form-control ${codeErrorMessage ? \"is-invalid\" : \"\"}`}\n                      value={code}\n                      onChange={(e) => setCode(e.target.value)}\n                      onBlur={(e) => validateCode(e.target.value)}\n                      style={{ marginBottom: \"2em\" }}\n                    ></input>\n                    {codeErrorMessage && (\n                      <div className=\"invalid-feedback\">{codeErrorMessage}</div>\n                    )}\n                  </>\n                )}\n                <br></br>\n                <p\n                  className=\"h4 text-center mb-4 white-text futuraFuture\"\n                  style={{ marginTop: \"-1em\", marginBottom: \"-1em\" }}\n                >\n                  Please fill in your personal information below to participate\n                </p>\n                <br></br>\n                <label\n                  htmlFor=\"defaultFormContactEmailEx\"\n                  className=\"white-text\"\n                >\n                  Your name:\n                </label>\n\n                <input\n                  required={true}\n                  type=\"text\"\n                  id=\"defaultFormContactNameEx\"\n                  className=\"form-control\"\n                  value={name}\n                  onChange={(e) => setName(e.target.value)}\n                  style={{ marginBottom: \"2em\" }}\n                  autoComplete=\"name\"\n                ></input>\n\n                <label\n                  htmlFor=\"defaultFormContactEmailEx\"\n                  className=\"white-text\"\n                >\n                  Your email:\n                </label>\n\n                <input\n                  required={true}\n                  type=\"text\"\n                  id=\"defaultFormContactNameEx\"\n                  className={`form-control ${\n                    emailErrorMessage ? \"is-invalid\" : \"\"\n                  }`}\n                  value={email}\n                  onChange={(e) => {\n                    setParticipantEmail(e.target.value);\n                  }}\n                  onBlur={(e) => validateEmail(e.target.value)}\n                  autoComplete=\"email\"\n                />\n                {emailErrorMessage && (\n                  <div className=\"invalid-feedback\">{emailErrorMessage}</div>\n                )}\n                <br />\n\n                <div className=\"custom-control custom-checkbox\">\n                  <input\n                    type=\"checkbox\"\n                    className=\"custom-control-input\"\n                    id=\"defaultUnchecked\"\n                    value=\"accept\"\n                    onChange={(e) => {\n                      setAgreement(agree ? false : true);\n                    }}\n                  />\n                  <label\n                    className=\"custom-control-label\"\n                    htmlFor=\"defaultUnchecked\"\n                    style={{ color: \"white\" }}\n                  >\n                    By registering for this workshop, I accept that Aarhus Symposium\n                    may send information regarding events and important\n                    deadlines, and I accept the{\" \"}\n                    <a href=\"https://aarhus-symposium.org/terms\">\n                      Privacy Policy & Terms of Service\n                    </a>\n                  </label>\n                </div>\n\n                {errorMessage && (\n                  <p\n                    className=\"text-center mt-4 futuraFont\"\n                    style={{ color: \"red\" }}\n                  >\n                    {errorMessage}\n                  </p>\n                )}\n\n                <div className=\"text-center mt-4 futuraFont\">\n                  <MDBBtn color=\"light\" outline type=\"submit\" disabled={!agree}>\n                    Send\n                    <MDBIcon far icon=\"paper-plane\" className=\"ml-2\" />\n                  </MDBBtn>\n                </div>\n                <br />\n              </form>\n            ) : (\n              <p className=\"h1 text-center mb-4 white-text futuraFont\">\n                SUCCESS\n              </p>\n            )}\n          </MDBCol>\n        </MDBRow>\n      </MDBContainer>\n    </div>\n  );\n}\n","import {\n  MDBBox,\n  MDBContainer,\n  MDBRow,\n  MDBCol,\n  MDBBtn,\n  MDBIcon,\n} from \"mdbreact\";\nimport \"../index.css\";\nimport React, { useEffect } from 'react';\nimport axios from \"axios\";\nimport { SocketContext } from \"../context/socket\";\nimport { Socket } from \"socket.io-client\";\n\ntype GuessTheThemeEntry = {\n  name: string;\n  email: string;\n  clue: string;\n};\n\nexport default function ClueCompetition({clueId}) {\n  useEffect(() => {\n    if (parseInt(clueId) > 3 || !parseInt(clueId)) {\n      window.location.href = \"https://aarhus-symposium.org\"; // Use window.location for external redirects\n    } else {\n      document.title = `Clue ${clueId}`;\n    }\n  }, [clueId]);\n  const [name, setName] = React.useState<string>(\"\");\n  const [email, setParticipantEmail] = React.useState<string>(\"\");\n  const [clue, setParticipantClue] = React.useState<string>(\"\");\n  const [emailErrorMessage, setEmailErrorMessage] = React.useState<string>(\"\");\n  const [agree, setAgreement] = React.useState<boolean>(false);\n  const [hasBeenSubmitted, setSubmit] = React.useState<boolean>(false);\n  const [errorMessage, setErrorMessage] = React.useState<string>(\"\");\n\n  const socket: Socket = React.useContext(SocketContext);\n\n  const validateEmail = (email) => {\n    const emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/;\n    if (!emailPattern.test(email)) {\n      setEmailErrorMessage(\"Invalid email format\");\n    } else {\n      setEmailErrorMessage(\"\");\n    }\n  };\n\n  const handleSubmit = async (e: any) => {\n    e.preventDefault();\n    validateEmail(email);\n    if (emailErrorMessage) {\n      return;\n    }\n\n    const data: GuessTheThemeEntry = {\n      name: name,\n      email: email,\n      clue: clue,\n    };\n\n    axios\n      .post(`https://${window.location.hostname}/strapi/clue${clueId}`, data)\n      .then((res) => {\n        socket.emit(\"newEntry\", \"\");\n        setSubmit(true);\n      })\n      .catch((err) => {\n        setErrorMessage(\"Sorry, something went wrong. Please try again later.\");\n      });\n  };\n\n  return (\n    <div className=\"bg\">\n      <MDBContainer>\n        <MDBBox>\n          <br />\n          <br />\n          <br />\n        </MDBBox>\n        <MDBRow center>\n          <MDBCol md=\"6\">\n            {!hasBeenSubmitted ? (\n              <form onSubmit={handleSubmit}>\n                <p\n                  className=\"h1 text-center mb-4 white-text futuraFuture\"\n                  style={{ paddingBottom: \"2rem\" }}\n                >\n                  CLUE {clueId}\n                </p>\n                <br></br>\n                <label\n                  htmlFor=\"defaultFormContactThemeEx\"\n                  className=\"white-text\"\n                >\n                </label>\n\n                <input\n                  required={true}\n                  type=\"text\"\n                  id=\"defaultFormContactThemeEx\"\n                  className=\"form-control\"\n                  value={clue}\n                  onChange={(e) => setParticipantClue(e.target.value)}\n                  style={{ marginBottom: \"2em\" }}\n                  autoComplete=\"theme\"\n                ></input>\n                <br></br>\n                <br></br>\n                <p\n                  className=\"h4 text-center mb-4 white-text futuraFuture\"\n                  style={{ marginTop: \"-1em\", marginBottom: \"-1em\" }}\n                >\n                  Please fill in your personal information below to participate\n                </p>\n                <br></br>\n                <label\n                  htmlFor=\"defaultFormContactEmailEx\"\n                  className=\"white-text\"\n                >\n                  Your name:\n                </label>\n\n                <input\n                  required={true}\n                  type=\"text\"\n                  id=\"defaultFormContactNameEx\"\n                  className=\"form-control\"\n                  value={name}\n                  onChange={(e) => setName(e.target.value)}\n                  style={{ marginBottom: \"2em\" }}\n                  autoComplete=\"name\"\n                ></input>\n\n                <label\n                  htmlFor=\"defaultFormContactEmailEx\"\n                  className=\"white-text\"\n                >\n                  Your email:\n                </label>\n\n                <input\n                  required={true}\n                  type=\"text\"\n                  id=\"defaultFormContactNameEx\"\n                  className={`form-control ${\n                    emailErrorMessage ? \"is-invalid\" : \"\"\n                  }`}\n                  value={email}\n                  onChange={(e) => {\n                    setParticipantEmail(e.target.value);\n                  }}\n                  onBlur={(e) => validateEmail(e.target.value)}\n                  autoComplete=\"email\"\n                />\n                {emailErrorMessage && (\n                  <div className=\"invalid-feedback\">{emailErrorMessage}</div>\n                )}\n                <br />\n\n                <div className=\"custom-control custom-checkbox\">\n                  <input\n                    type=\"checkbox\"\n                    className=\"custom-control-input\"\n                    id=\"defaultUnchecked\"\n                    value=\"accept\"\n                    onChange={(e) => {\n                      setAgreement(agree ? false : true);\n                    }}\n                  />\n                  <label\n                    className=\"custom-control-label\"\n                    htmlFor=\"defaultUnchecked\"\n                    style={{ color: \"white\" }}\n                  >\n                    By entering this competition, I accept that Aarhus Symposium\n                    may send information regarding events and important\n                    deadlines, and I accept the{\" \"}\n                    <a href=\"https://aarhus-symposium.org/terms\">\n                      Privacy Policy & Terms of Service\n                    </a>\n                  </label>\n                </div>\n\n                {errorMessage && (\n                  <p\n                    className=\"text-center mt-4 futuraFont\"\n                    style={{ color: \"red\" }}\n                  >\n                    {errorMessage}\n                  </p>\n                )}\n\n                <div className=\"text-center mt-4 futuraFont\">\n                  <MDBBtn color=\"light\" outline type=\"submit\" disabled={!agree}>\n                    Send\n                    <MDBIcon far icon=\"paper-plane\" className=\"ml-2\" />\n                  </MDBBtn>\n                </div>\n                <br />\n              </form>\n            ) : (\n              <p className=\"h1 text-center mb-4 white-text futuraFont\">\n                SUCCESS\n              </p>\n            )}\n          </MDBCol>\n        </MDBRow>\n      </MDBContainer>\n    </div>\n  );\n}\n","import React, { useEffect } from \"react\";\nimport {\n  BrowserRouter as Router,\n  Route,\n  Switch,\n  Redirect,\n  useLocation,\n} from \"react-router-dom\";\nimport { SocketContext, socket } from \"./context/socket\";\nimport GuessWho from \"./components/guesswho\";\nimport Marathon2023 from \"./components/marathon2023\";\nimport ChallengeLaunch from \"./components/challengelaunch\";\nimport GuessTheTheme from \"./components/guessthetheme\";\nimport Welcome from \"./components/welcome\";\nimport Questions from \"./components/questions\";\nimport WritingWorkshop from \"./components/writingworkshop\";\nimport ClueCompetition from \"./components/cluecompetition\";\n\nconst CSSLoader = () => {\n  const location = useLocation();\n\n  useEffect(() => {\n    // Extract the path from the current location\n    const path = location.pathname.slice(1) || \"index\";\n    // Construct the CSS URL\n    const cssUrl = `https://files.asymp.org/css/${path}.css`;\n\n    // Create a link element to load the CSS\n    const link = document.createElement(\"link\");\n    link.rel = \"stylesheet\";\n    link.href = cssUrl;\n\n    // Append to head\n    document.head.appendChild(link);\n\n    // Cleanup on unmount\n    return () => {\n      document.head.removeChild(link);\n    };\n  }, [location.pathname]);\n\n  return null;\n};\n\n\nconst AppContent = () => {\n  return (\n    <>\n      <CSSLoader /> {/* Dynamically load the CSS based on the path */}\n      <div className=\"bg\">\n        <Switch>\n          <Route path=\"/\" exact component={Welcome} />\n          <Route path=\"/guesswho\" exact component={GuessWho} />\n          <Route path=\"/marathon-2023\" exact component={Marathon2023} />\n          <Route path=\"/competition\" exact component={ChallengeLaunch} />\n          <Route path=\"/guessthetheme\" exact component={GuessTheTheme} />\n          <Route path=\"/questions\" exact component={Questions} />\n          <Route path=\"/writingworkshop\" exact component={WritingWorkshop} />\n          <Route\n            path=\"/clue:clueId\"\n            exact\n            component={({ match }) => <ClueCompetition clueId={match.params.clueId} />}\n          />\n          <Redirect to=\"/\" />\n        </Switch>\n      </div>\n    </>\n  );\n};\n\nfunction App() {\n  return (\n    <SocketContext.Provider value={socket}>\n      <div className=\"App\">\n        <Router>\n          <AppContent />\n        </Router>\n      </div>\n    </SocketContext.Provider>\n  );\n}\n\nexport default App;\n","const reportWebVitals = onPerfEntry => {\n  if (onPerfEntry && onPerfEntry instanceof Function) {\n    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n      getCLS(onPerfEntry);\n      getFID(onPerfEntry);\n      getFCP(onPerfEntry);\n      getLCP(onPerfEntry);\n      getTTFB(onPerfEntry);\n    });\n  }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\nimport '@fortawesome/fontawesome-free/css/all.min.css'; \nimport 'bootstrap-css-only/css/bootstrap.min.css'; \nimport 'mdbreact/dist/css/mdb.css';\n\nReactDOM.render(\n  <React.StrictMode>\n    <App />\n  </React.StrictMode>,\n  document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}