diff --git a/waybionic/package-lock.json b/waybionic/package-lock.json index 3e0ae6c..b3eac12 100644 --- a/waybionic/package-lock.json +++ b/waybionic/package-lock.json @@ -8,9 +8,12 @@ "name": "waybionic", "version": "0.1.0", "dependencies": { + "@emailjs/browser": "^4.4.1", + "emailjs": "^5.0.0", "next": "^15.4.10", "react": "^19.0.0", "react-dom": "^19.0.0", + "react-hot-toast": "^2.6.0", "react-responsive-carousel": "^3.2.23" }, "devDependencies": { @@ -35,6 +38,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@emailjs/browser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@emailjs/browser/-/browser-4.4.1.tgz", + "integrity": "sha512-DGSlP9sPvyFba3to2A50kDtZ+pXVp/0rhmqs2LmbMS3I5J8FSOgLwzY2Xb4qfKlOVHh29EAutLYwe5yuEZmEFg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@emnapi/runtime": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", @@ -958,8 +970,8 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/detect-libc": { "version": "2.1.2", @@ -971,6 +983,23 @@ "node": ">=8" } }, + "node_modules/emailjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/emailjs/-/emailjs-5.0.0.tgz", + "integrity": "sha512-J7gxswcLGRZQM+HQBgll0DJuEMFiJIa7UzgK3GsjlytyRS4X2z7K1brQLlezEs3ul+jqvYYoCTqPAgWrVZf0mw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "typescript": ">=5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/enhanced-resolve": { "version": "5.18.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", @@ -985,6 +1014,15 @@ "node": ">=10.13.0" } }, + "node_modules/goober": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.18.tgz", + "integrity": "sha512-2vFqsaDVIT9Gz7N6kAL++pLpp41l3PfDuusHcjnGLfR6+huZkl6ziX+zgVC3ZxpqWhzH6pyDdGrCeDhMIvwaxw==", + "license": "MIT", + "peerDependencies": { + "csstype": "^3.0.10" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -1447,6 +1485,23 @@ "node": ">= 6" } }, + "node_modules/react-hot-toast": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.6.0.tgz", + "integrity": "sha512-bH+2EBMZ4sdyou/DPrfgIouFpcRLCJ+HoCA32UoAYHn6T3Ur5yfcDCeSr5mwldl6pFOsiocmrXMuoCJ1vV8bWg==", + "license": "MIT", + "dependencies": { + "csstype": "^3.1.3", + "goober": "^2.1.16" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=16", + "react-dom": ">=16" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -1587,8 +1642,9 @@ "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/waybionic/package.json b/waybionic/package.json index 42acacf..0ed9ee4 100644 --- a/waybionic/package.json +++ b/waybionic/package.json @@ -9,9 +9,12 @@ "lint": "next lint" }, "dependencies": { + "@emailjs/browser": "^4.4.1", + "emailjs": "^5.0.0", "next": "^15.4.10", "react": "^19.0.0", "react-dom": "^19.0.0", + "react-hot-toast": "^2.6.0", "react-responsive-carousel": "^3.2.23" }, "devDependencies": { diff --git a/waybionic/src/app/contact/components/NonStudent.tsx b/waybionic/src/app/contact/components/NonStudent.tsx new file mode 100644 index 0000000..04ee703 --- /dev/null +++ b/waybionic/src/app/contact/components/NonStudent.tsx @@ -0,0 +1,65 @@ +import React from 'react' +import NonStudentMessage from './NonStudentMessage' +import NonStudentInput from './NonStudentInput' +import emailjs from "@emailjs/browser"; + +const NonStudent = ({ typeOfContact, setClubInfo, setBusinessInfo, setProfessionInfo, setSponsershipInfo, setPartnershipInfo, setOtherInfo, clubInfo, businessInfo, professionInfo, sponsershipInfo, partnershipInfo, message, setMessage, otherInfo }) => { + const getStateValue = () => { + switch(typeOfContact) { + case "Club": + return clubInfo + case "Business": + return businessInfo + case "Industry Professional": + return professionInfo + case "Sponsorship": + return sponsershipInfo + case "Partnership": + return partnershipInfo + case "Professor": + return professionInfo + default: + return otherInfo + } + } + + const setStateValue = (value: string) => { + switch(typeOfContact) { + case "Club": + setClubInfo(value) + break + case "Business": + setBusinessInfo(value) + break + case "Industry Professional": + setProfessionInfo(value) + break + case "Sponsorship": + setSponsershipInfo(value) + break + case "Partnership": + setPartnershipInfo(value) + break + case "Professor": + setProfessionInfo(value) + break + default: + setOtherInfo(value) + } + } + + if (typeOfContact && typeOfContact !== "Student") { + return ( + <> +