|
|
|
@ -2,20 +2,15 @@ import React, { useState } from "react"; |
|
|
|
|
import { Image } from "./Image"; |
|
|
|
|
import { useWindowDimension } from "../hooks/useWindowDimension"; |
|
|
|
|
import styles from "./TeamMemberCard.module.css"; |
|
|
|
|
import { getMemberImagePath } from "../lib/team"; |
|
|
|
|
|
|
|
|
|
export interface TeamMemberCardProps { |
|
|
|
|
name: string; |
|
|
|
|
role: string; |
|
|
|
|
image?: string; // path to image of person, relative to public directory
|
|
|
|
|
children: React.ReactNode; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
export function TeamMemberCard({ |
|
|
|
|
name, |
|
|
|
|
image, |
|
|
|
|
role, |
|
|
|
|
children, |
|
|
|
|
}: TeamMemberCardProps) { |
|
|
|
|
export function TeamMemberCard({ name, role, children }: TeamMemberCardProps) { |
|
|
|
|
const { width } = useWindowDimension(); |
|
|
|
|
const [isOpen, setIsOpen] = useState(false); |
|
|
|
|
const handleClick = () => { |
|
|
|
@ -29,7 +24,7 @@ export function TeamMemberCard({ |
|
|
|
|
<div className={styles.picture}> |
|
|
|
|
<Image |
|
|
|
|
className={styles.image} |
|
|
|
|
src={image ?? "/images/team/team-member-placeholder.svg"} |
|
|
|
|
src={getMemberImagePath(name)} |
|
|
|
|
alt={`Picture of ${name}`} |
|
|
|
|
/> |
|
|
|
|
</div> |
|
|
|
@ -38,12 +33,7 @@ export function TeamMemberCard({ |
|
|
|
|
<div className={styles.description}>{children}</div> |
|
|
|
|
</article> |
|
|
|
|
{isOpen && ( |
|
|
|
|
<ExecPopup |
|
|
|
|
name={name} |
|
|
|
|
role={role} |
|
|
|
|
image={image} |
|
|
|
|
handleClick={handleClick} |
|
|
|
|
> |
|
|
|
|
<ExecPopup name={name} role={role} handleClick={handleClick}> |
|
|
|
|
{children} |
|
|
|
|
</ExecPopup> |
|
|
|
|
)} |
|
|
|
@ -55,7 +45,7 @@ interface Propup extends TeamMemberCardProps { |
|
|
|
|
handleClick: () => void; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function ExecPopup({ name, image, role, children, handleClick }: Propup) { |
|
|
|
|
function ExecPopup({ name, role, children, handleClick }: Propup) { |
|
|
|
|
return ( |
|
|
|
|
<> |
|
|
|
|
<div className={styles.popupBackground} onClick={handleClick} /> |
|
|
|
@ -67,7 +57,7 @@ function ExecPopup({ name, image, role, children, handleClick }: Propup) { |
|
|
|
|
<div className={styles.picture}> |
|
|
|
|
<Image |
|
|
|
|
className={styles.popupImage} |
|
|
|
|
src={image ?? "/images/team/team-member-placeholder.svg"} |
|
|
|
|
src={getMemberImagePath(name)} |
|
|
|
|
alt={`Picture of ${name}`} |
|
|
|
|
/> |
|
|
|
|
</div> |
|
|
|
|