From c85a52b8d203abb730d8ff25c6a59862c1471adb Mon Sep 17 00:00:00 2001 From: valerie-wong <74160103+valerie-wong@users.noreply.github.com> Date: Thu, 19 Mar 2026 15:42:26 -0400 Subject: [PATCH 1/7] Fixed alumni Card responsivity for tablet/mobile --- .../src/components/Alumni/Alumni.module.css | 51 +++++++++++++++++-- 1 file changed, 48 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/Alumni/Alumni.module.css b/frontend/src/components/Alumni/Alumni.module.css index a64e1d80f..28973e0fd 100644 --- a/frontend/src/components/Alumni/Alumni.module.css +++ b/frontend/src/components/Alumni/Alumni.module.css @@ -229,15 +229,15 @@ .infoGrid { display: flex; - gap: 44px; + gap: 0; flex-wrap: wrap; } .infoColumn { - display: flex; + display: flex;; flex-direction: column; gap: 10px; - min-width: 83px; + flex: 1 1 0; } .infoItem { @@ -256,6 +256,8 @@ font-size: 12px; font-weight: 500; color: #000; + word-break: break-word; + overflow-wrap: break-word; } .socialIcons { @@ -278,3 +280,46 @@ .socialLink:hover { color: #4183c4; } + +@media (max-width: 1024px) { + .infoGrid { + display: grid; + grid-template-columns: 1fr 1fr; + grid-template-rows: auto auto auto; + gap: 10px; + } + + .infoColumn { + flex: unset; + } +} + +@media (max-width: 640px) { + .alumniCard { + flex-direction: column; + align-items: center; + } + + .profileImage { + width: 80px !important; + height: 80px !important; + } + + .cardContent { + width: 100%; + } + + .infoGrid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 10px; + } + + .infoColumn { + flex: unset; + } + + .socialIcons { + align-self: flex-end; + } +} From f2dc9db89c52e814ac3eaaca212577a327d15309 Mon Sep 17 00:00:00 2001 From: valerie-wong <74160103+valerie-wong@users.noreply.github.com> Date: Thu, 19 Mar 2026 15:46:30 -0400 Subject: [PATCH 2/7] yarn format --- frontend/src/components/Alumni/Alumni.module.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/Alumni/Alumni.module.css b/frontend/src/components/Alumni/Alumni.module.css index 28973e0fd..abb8ee955 100644 --- a/frontend/src/components/Alumni/Alumni.module.css +++ b/frontend/src/components/Alumni/Alumni.module.css @@ -234,7 +234,7 @@ } .infoColumn { - display: flex;; + display: flex; flex-direction: column; gap: 10px; flex: 1 1 0; From a21e8a01a841acdbbce53bf65bebda2705f46b17 Mon Sep 17 00:00:00 2001 From: valerie-wong <74160103+valerie-wong@users.noreply.github.com> Date: Mon, 13 Apr 2026 03:54:11 -0400 Subject: [PATCH 3/7] fix responsivity --- .../src/components/Alumni/Alumni.module.css | 116 ++++++++--- frontend/src/components/Alumni/Alumni.tsx | 183 ++++++++++-------- frontend/src/components/Alumni/AlumniCard.tsx | 56 +++--- 3 files changed, 223 insertions(+), 132 deletions(-) diff --git a/frontend/src/components/Alumni/Alumni.module.css b/frontend/src/components/Alumni/Alumni.module.css index abb8ee955..460337a9d 100644 --- a/frontend/src/components/Alumni/Alumni.module.css +++ b/frontend/src/components/Alumni/Alumni.module.css @@ -92,6 +92,10 @@ align-items: flex-start; } +.filterToggleWrapper { + display: none; +} + .filtersSidebar { width: 225px; display: flex; @@ -228,18 +232,12 @@ } .infoGrid { - display: flex; - gap: 0; + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1rem; flex-wrap: wrap; } -.infoColumn { - display: flex; - flex-direction: column; - gap: 10px; - flex: 1 1 0; -} - .infoItem { display: flex; flex-direction: column; @@ -281,23 +279,82 @@ color: #4183c4; } -@media (max-width: 1024px) { - .infoGrid { - display: grid; - grid-template-columns: 1fr 1fr; - grid-template-rows: auto auto auto; - gap: 10px; + + +.filterOverlay { + position: fixed; + inset: 0; + background: rgba(0, 0, 0, 0.4); + z-index: 2000; + display: flex; + align-items: flex-end; +} + +.filterModal { + background: var(--bg-default); + width: 100%; + border-radius: 12px 12px 0 0; + max-height: 80vh; + display: flex; + flex-direction: column; +} + +.filterModalHeader { + display: flex; + justify-content: space-between; + align-items: center; + padding: 16px; + border-bottom: 1px solid var(--border-default); +} + +.filterModalBody { + padding: 16px; + overflow-y: auto; + display: flex; + flex-direction: column; + gap: 20px; +} + +.filterModalFooter { + padding: 16px; + border-top: 1px solid var(--border-default); + display: flex; +} + +.filterModalFooter > * { + flex: 1; +} + +@media (max-width: 768px) { + .filterToggleWrapper { + display: block; } - .infoColumn { - flex: unset; + .filtersSidebar { + display: none; + } + + .topBarSpacer { + display: none; } -} -@media (max-width: 640px) { + .searchContainer { + max-width: none; + } + + .searchInput { + flex: 1; + min-width: 0; + width: auto; + } + + .searchInput input { + min-width: 0 !important; + width: 100% !important; + } .alumniCard { flex-direction: column; - align-items: center; + align-items: left; } .profileImage { @@ -311,15 +368,24 @@ .infoGrid { display: grid; - grid-template-columns: 1fr 1fr; + grid-template-columns: 1 1; gap: 10px; } - .infoColumn { - flex: unset; - } - .socialIcons { align-self: flex-end; } } + +@media (max-width: 440px) { + .infoGrid { + display: grid; + grid-template-columns: 1fr; + gap: 10px; + } + .infoItem { + display: flex; + flex-direction: row; + gap: 2px; + } +} \ No newline at end of file diff --git a/frontend/src/components/Alumni/Alumni.tsx b/frontend/src/components/Alumni/Alumni.tsx index 9c6354570..5002f3238 100644 --- a/frontend/src/components/Alumni/Alumni.tsx +++ b/frontend/src/components/Alumni/Alumni.tsx @@ -5,6 +5,7 @@ import { Emitters } from '../../utils'; import AlumniAPI from '../../API/AlumniAPI'; import AlumniCard from './AlumniCard'; import styles from './Alumni.module.css'; +import Button from '../Common/Button/Button'; const AlumniMap = dynamic(() => import('./AlumniMap'), { ssr: false }); @@ -25,6 +26,14 @@ const Alumni: React.FC = () => { DEFAULT_MIN_YEAR, DEFAULT_MAX_YEAR ]); + const [filtersOpen, setFiltersOpen] = useState(false); + + useEffect(() => { + document.body.style.overflow = filtersOpen ? 'hidden' : ''; + return () => { + document.body.style.overflow = ''; + }; + }, [filtersOpen]); useEffect(() => { setIsLoading(true); @@ -108,6 +117,84 @@ const Alumni: React.FC = () => { })); }, [alumni]); + const filterContent = ( + <> +