From ff3f4caf5eac42e02876426ae9b0aea5f9deff14 Mon Sep 17 00:00:00 2001 From: Joseph Kifle Date: Mon, 16 Feb 2026 23:10:22 -0500 Subject: [PATCH 1/4] Sticky Date Header --- src/app/HomePageClient.tsx | 73 ++++++++++++++++++++++------ src/app/VolunteerEventCardHeader.tsx | 23 --------- src/app/WelcomeCard.tsx | 1 + src/app/page.tsx | 2 - 4 files changed, 60 insertions(+), 39 deletions(-) delete mode 100644 src/app/VolunteerEventCardHeader.tsx diff --git a/src/app/HomePageClient.tsx b/src/app/HomePageClient.tsx index d9535b0..152af69 100644 --- a/src/app/HomePageClient.tsx +++ b/src/app/HomePageClient.tsx @@ -1,5 +1,5 @@ "use client"; -import { Box } from "@mui/material"; +import { Box, Typography } from "@mui/material"; import { useSession } from "next-auth/react"; import { DefaultButton } from "@/components/Button/DefaultButton"; @@ -23,21 +23,66 @@ export default function HomePageClient({ events, }: HomePageClientProps): React.ReactElement { const { status } = useSession(); + + // Group events using a standard loop + const groups: Record = {}; + + for (const event of events) { + const date = event.eventDate; + if (!groups[date]) { + groups[date] = []; + } + groups[date].push(event); + } + + // Sort the dates + const sortedDates = Object.keys(groups).sort(); + return ( <> - {events.map((event) => ( - - ))} + {sortedDates.map((dateString) => { + // Convert "2026-01-02" to "1/2/2026" + const [year, month, day] = dateString.split("-").map(Number); + const dateObj = new Date(year, month - 1, day); + + const weekday = dateObj.toLocaleDateString("en-US", { + weekday: "long", + }); + const displayDate = `${weekday}, ${month}/${day}/${year}`; + return ( + <> + + + {displayDate} + + + {groups[dateString].map((event) => ( + + ))} + + ); + })} {/* Temporary event creation form */} {status === "authenticated" && ( - - {weekday}, {formattedDate} - - - ); -} diff --git a/src/app/WelcomeCard.tsx b/src/app/WelcomeCard.tsx index 2d90b38..cdd8021 100644 --- a/src/app/WelcomeCard.tsx +++ b/src/app/WelcomeCard.tsx @@ -10,6 +10,7 @@ export default function WelcomeCard(): React.ReactElement { display: "flex", justifyContent: "center", alignItems: "center", + mb: 4, }} > { }} > - From 8ee84be81506d95089d86864fe427bd0f591e83d Mon Sep 17 00:00:00 2001 From: Joseph Kifle Date: Mon, 16 Feb 2026 23:21:41 -0500 Subject: [PATCH 2/4] feat: Sticky Date Header --- src/app/HomePageClient.tsx | 73 ++++++---------------------- src/app/VolunteerEventCardHeader.tsx | 23 +++++++++ src/app/WelcomeCard.tsx | 1 - src/app/page.tsx | 2 + 4 files changed, 39 insertions(+), 60 deletions(-) create mode 100644 src/app/VolunteerEventCardHeader.tsx diff --git a/src/app/HomePageClient.tsx b/src/app/HomePageClient.tsx index 152af69..d9535b0 100644 --- a/src/app/HomePageClient.tsx +++ b/src/app/HomePageClient.tsx @@ -1,5 +1,5 @@ "use client"; -import { Box, Typography } from "@mui/material"; +import { Box } from "@mui/material"; import { useSession } from "next-auth/react"; import { DefaultButton } from "@/components/Button/DefaultButton"; @@ -23,66 +23,21 @@ export default function HomePageClient({ events, }: HomePageClientProps): React.ReactElement { const { status } = useSession(); - - // Group events using a standard loop - const groups: Record = {}; - - for (const event of events) { - const date = event.eventDate; - if (!groups[date]) { - groups[date] = []; - } - groups[date].push(event); - } - - // Sort the dates - const sortedDates = Object.keys(groups).sort(); - return ( <> - {sortedDates.map((dateString) => { - // Convert "2026-01-02" to "1/2/2026" - const [year, month, day] = dateString.split("-").map(Number); - const dateObj = new Date(year, month - 1, day); - - const weekday = dateObj.toLocaleDateString("en-US", { - weekday: "long", - }); - const displayDate = `${weekday}, ${month}/${day}/${year}`; - return ( - <> - - - {displayDate} - - - {groups[dateString].map((event) => ( - - ))} - - ); - })} + {events.map((event) => ( + + ))} {/* Temporary event creation form */} {status === "authenticated" && ( + + {weekday}, {formattedDate} + + + ); +} diff --git a/src/app/WelcomeCard.tsx b/src/app/WelcomeCard.tsx index cdd8021..2d90b38 100644 --- a/src/app/WelcomeCard.tsx +++ b/src/app/WelcomeCard.tsx @@ -10,7 +10,6 @@ export default function WelcomeCard(): React.ReactElement { display: "flex", justifyContent: "center", alignItems: "center", - mb: 4, }} > { }} > + From b54a142d00efd592e99aac97a51df92bdbfa018c Mon Sep 17 00:00:00 2001 From: Joseph Kifle Date: Tue, 24 Feb 2026 13:17:15 -0500 Subject: [PATCH 3/4] Revert "feat: Sticky Date Header" This reverts commit 8ee84be81506d95089d86864fe427bd0f591e83d. --- src/app/HomePageClient.tsx | 73 ++++++++++++++++++++++------ src/app/VolunteerEventCardHeader.tsx | 23 --------- src/app/WelcomeCard.tsx | 1 + src/app/page.tsx | 2 - 4 files changed, 60 insertions(+), 39 deletions(-) delete mode 100644 src/app/VolunteerEventCardHeader.tsx diff --git a/src/app/HomePageClient.tsx b/src/app/HomePageClient.tsx index d9535b0..152af69 100644 --- a/src/app/HomePageClient.tsx +++ b/src/app/HomePageClient.tsx @@ -1,5 +1,5 @@ "use client"; -import { Box } from "@mui/material"; +import { Box, Typography } from "@mui/material"; import { useSession } from "next-auth/react"; import { DefaultButton } from "@/components/Button/DefaultButton"; @@ -23,21 +23,66 @@ export default function HomePageClient({ events, }: HomePageClientProps): React.ReactElement { const { status } = useSession(); + + // Group events using a standard loop + const groups: Record = {}; + + for (const event of events) { + const date = event.eventDate; + if (!groups[date]) { + groups[date] = []; + } + groups[date].push(event); + } + + // Sort the dates + const sortedDates = Object.keys(groups).sort(); + return ( <> - {events.map((event) => ( - - ))} + {sortedDates.map((dateString) => { + // Convert "2026-01-02" to "1/2/2026" + const [year, month, day] = dateString.split("-").map(Number); + const dateObj = new Date(year, month - 1, day); + + const weekday = dateObj.toLocaleDateString("en-US", { + weekday: "long", + }); + const displayDate = `${weekday}, ${month}/${day}/${year}`; + return ( + <> + + + {displayDate} + + + {groups[dateString].map((event) => ( + + ))} + + ); + })} {/* Temporary event creation form */} {status === "authenticated" && ( - - {weekday}, {formattedDate} - - - ); -} diff --git a/src/app/WelcomeCard.tsx b/src/app/WelcomeCard.tsx index 2d90b38..cdd8021 100644 --- a/src/app/WelcomeCard.tsx +++ b/src/app/WelcomeCard.tsx @@ -10,6 +10,7 @@ export default function WelcomeCard(): React.ReactElement { display: "flex", justifyContent: "center", alignItems: "center", + mb: 4, }} > { }} > - From 90812586b738eaff905a046e3bd90d49357ad13e Mon Sep 17 00:00:00 2001 From: AgustinSV Date: Tue, 24 Feb 2026 14:04:39 -0500 Subject: [PATCH 4/4] updated sticky header --- src/app/HomePageClient.tsx | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/src/app/HomePageClient.tsx b/src/app/HomePageClient.tsx index 152af69..afbac40 100644 --- a/src/app/HomePageClient.tsx +++ b/src/app/HomePageClient.tsx @@ -1,6 +1,7 @@ "use client"; import { Box, Typography } from "@mui/material"; import { useSession } from "next-auth/react"; +import { Fragment } from "react"; import { DefaultButton } from "@/components/Button/DefaultButton"; @@ -24,7 +25,6 @@ export default function HomePageClient({ }: HomePageClientProps): React.ReactElement { const { status } = useSession(); - // Group events using a standard loop const groups: Record = {}; for (const event of events) { @@ -35,13 +35,11 @@ export default function HomePageClient({ groups[date].push(event); } - // Sort the dates const sortedDates = Object.keys(groups).sort(); return ( <> {sortedDates.map((dateString) => { - // Convert "2026-01-02" to "1/2/2026" const [year, month, day] = dateString.split("-").map(Number); const dateObj = new Date(year, month - 1, day); @@ -49,24 +47,26 @@ export default function HomePageClient({ weekday: "long", }); const displayDate = `${weekday}, ${month}/${day}/${year}`; + return ( - <> + - + {displayDate} + {groups[dateString].map((event) => ( ))} - + ); })} - {/* Temporary event creation form */} + {status === "authenticated" && ( - +