diff --git a/src/app/page.tsx b/src/app/page.tsx index aa06db6..6160afd 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,6 +1,7 @@ import FilterMenu from "@/components/FilterMenu"; import Navbar from "@/components/Navbar"; import RecipeSummary from "@/components/RecipeSummary"; +import WeeklyMenu from "@/components/WeeklyMenu"; import ComboCard from "@/components/ComboCard"; export default function Home() { @@ -21,6 +22,7 @@ export default function Home() {

Dashboard

Hello world!

+ diff --git a/src/components/WeeklyMenu.tsx b/src/components/WeeklyMenu.tsx new file mode 100644 index 0000000..cb66408 --- /dev/null +++ b/src/components/WeeklyMenu.tsx @@ -0,0 +1,67 @@ +"use client"; +import { useState } from "react"; +import { ChevronLeft, ChevronRight } from "lucide-react"; + +interface WeeklyMenuProps { + dateToday: Date; +} + +const getOffsetDate = (date: Date, offset: number) => { + const newDate = new Date(date); + newDate.setDate(date.getDate() + offset * 7); + return newDate; +}; + +const getCurrentWeekDates = (today: Date) => { + const dayOfWeek = today.getDay(); // 0 (Sun) - 6 (Sat) + const startOfWeek = new Date(today); + startOfWeek.setDate(today.getDate() - dayOfWeek + 1); // start from Monday + + return Array.from({ length: 5 }, (_, i) => { + const date = new Date(startOfWeek); + date.setDate(startOfWeek.getDate() + i); + return date; + }); +}; + +export default function WeeklyMenu({ dateToday }: WeeklyMenuProps) { + const [weekOffset, setWeekOffset] = useState(0); + const weekDates = getCurrentWeekDates(getOffsetDate(dateToday, weekOffset)); + + return ( +
+
+ + + {weekDates.map((date, idx) => ( +
+ + {date.toLocaleDateString(undefined, { weekday: "short" }).toUpperCase()} + + + {String(date.getDate()).padStart(2, "0")} + +
+
+
+
+
+ ))} + + +
+
+ ); +}