diff --git a/public/assets/img/logos/contacts/linkedin.png b/public/assets/img/logos/contacts/linkedin.png new file mode 100644 index 00000000..4b3bd5f5 Binary files /dev/null and b/public/assets/img/logos/contacts/linkedin.png differ diff --git a/src/components/OfficerCard.js b/src/components/OfficerCard.js index 2f9c716f..a6a8bcda 100644 --- a/src/components/OfficerCard.js +++ b/src/components/OfficerCard.js @@ -1,14 +1,30 @@ import styles from "@/styles/OfficerCard.module.css"; +import OfficerModal from "@/components/OfficerModal.js"; +import {useState} from "react"; + +export default function OfficerCard({name, position, netid, officer}) { + const [show, setShow] = useState(false); + + const openModal = () => { + setShow(true); + }; + + const closeModal = () => { + setShow(false); + }; -export default function OfficerCard({ name, position, img, netid }) { return ( -
- -

{name}

-

{position}

-
+ <> +
+ +

{name}

+

{position}

+
+ + + ); } diff --git a/src/components/OfficerModal.js b/src/components/OfficerModal.js new file mode 100644 index 00000000..7d9249d5 --- /dev/null +++ b/src/components/OfficerModal.js @@ -0,0 +1,63 @@ +import ComputerWindow from "./ComputerWindow"; +import styles from "@/styles/OfficerModal.module.css"; + +export default function OfficerModal({isOpen, closeModal, officer}) { + return isOpen ? OfficerInformation(closeModal, officer) : null; +} + +function OfficerInformation( + closeModal, + officer +) { + return ( + <> +
+ +
+

{officer.name} - {officer.position}

+ +
+
+ +
+ +
+

Major: {officer.major}

+

Year: {officer.year}

+

From: {officer.place}

+

Involvements: {officer.involvements}

+

Interests: {officer.interests}

+

Hobbies: {officer.hobbies}

+

Fun Fact: {officer.fact}

+

Advice: {officer.advice}

+

+ + + + + + + + +
+ +
+ +
+ +
+
+ + ); +} diff --git a/src/pages/officers.js b/src/pages/officers.js index 39cb8d2e..eba2e4f3 100644 --- a/src/pages/officers.js +++ b/src/pages/officers.js @@ -7,9 +7,9 @@ export default function Officers({children}) { return (

WCS Officer Board

- {/*

+

Click on a photo to learn more about our officers! -

*/} +

{officerData.admin.map((officer, index) => ( ))}
diff --git a/src/styles/OfficerCard.module.css b/src/styles/OfficerCard.module.css index 213218ba..400963c6 100644 --- a/src/styles/OfficerCard.module.css +++ b/src/styles/OfficerCard.module.css @@ -10,6 +10,7 @@ justify-content: space-between; padding: 2rem; margin: 1rem; + cursor: pointer; } .img { diff --git a/src/styles/OfficerModal.module.css b/src/styles/OfficerModal.module.css new file mode 100644 index 00000000..be8a40d9 --- /dev/null +++ b/src/styles/OfficerModal.module.css @@ -0,0 +1,92 @@ +.closeButton { + width: 100%; + height: 3rem; + border: none; + color: #21636c; + background-color: #e9e1e6; + font-weight: 700; + font-size: 16px; +} + +.columnContainer { + display: flex; + flex-direction: row; + justify-content: space-between; + width: 100%; + gap: 2rem; +} + +.container { + width: 100svw; + height: 100svh; + position: fixed; + inset: 0; + z-index: 999; + background-color: rgba(10, 10, 10, 0.6); +} + +.officerInfo { + padding: 1rem 5svw 1rem 5svw; + display: flex; + flex-direction: column; + text-align: center; + max-height: 85svh; + overflow-y: auto; +} + +.officerInfo .left { + width: calc(50% - 10px); + padding: 10px; + box-sizing: border-box; + float: left; +} + +.officerInfo .right { + width: calc(50% - 10px); + padding: 10px; + box-sizing: border-box; + float: right; + text-align: left; +} + +@media (max-width: 767px) { + .officerInfo .left, + .officerInfo .right { + width: 100%; + } +} + +.photo { + border: 6px solid #65c7cc; + border-radius: 10%; + height: 400px; + width: 400px; + object-fit: cover; + max-width: 100%; +} + +.socials { + height: 100px; + width: 100px; + margin: 1%; + object-fit: cover; + max-width: 100%; + float: right; +} + +.title { + font-family: "Audiowide" !important; + margin-bottom: 1rem; + font-size: 36px; + font-weight: 400; + color: #65c7cc; +} + +.window { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + max-width: 90svw; + width: max-content; +}