"use client"; import { useQueryState, parseAsStringLiteral } from "nuqs"; import { EventItem } from "./EventItem"; import { EventFilter } from "./EventFilter"; import { EventFragment, getSingularEvents, organizeEventsByDate, } from "@/lib/event"; import { isTodayOrFuture } from "@/lib/date"; import styles from "./eventContainer.module.scss"; import { formatDate, formatYearMonth } from "@/lib/date"; import { getYear, parse } from "date-fns"; type EventContainerMode = "list" | "calendar"; export const EventContainer = ({ events }: { events: EventFragment[] }) => { const [mode, setMode] = useQueryState( "mode", parseAsStringLiteral(["list", "calendar"]).withDefault("list") ); return (
{mode === "list" && } {mode === "calendar" && }
); }; const EventList = ({ events }: { events: EventFragment[] }) => { return ( ); }; const EventCalendar = ({ events }: { events: EventFragment[] }) => { const futureSingularEvents = getSingularEvents(events).filter( (x) => x.occurrence?.start && isTodayOrFuture(x.occurrence.start) ); const eventsByDate = organizeEventsByDate(futureSingularEvents); return (
{Object.keys(eventsByDate).map((yearMonth) => (

{formatYearMonth(yearMonth)}

{Object.keys(eventsByDate[yearMonth]).map((week) => (
{Object.keys(eventsByDate[yearMonth][week]).map((day) => (

{formatDate( parse(day, "yyyy-MM-dd", new Date()), "eeee dd.MM." )}

    {eventsByDate[yearMonth][week][day].map((event) => ( ))}
))}
))}
))}
); };