"use client"; import { useQueryState, parseAsStringLiteral, parseAsString } from "nuqs"; import { EventItem } from "./EventItem"; import { EventFilter } from "./EventFilter"; import { EventFragment, EventCategory, SingularEvent, getSingularEvents, organizeEventsByDate, } from "@/lib/event"; import { isTodayOrFuture } from "@/lib/date"; import styles from "./eventContainer.module.scss"; import { formatDate, formatYearMonth } from "@/lib/date"; import { parse } from "date-fns"; /* TODO: canonical / alternate URLs https://github.com/47ng/nuqs?tab=readme-ov-file#seo */ export const EventContainer = ({ events, eventCategories, }: { events: EventFragment[]; eventCategories: EventCategory[]; }) => { const [mode, setMode] = useQueryState( "mode", parseAsStringLiteral(["list", "calendar"]).withDefault("list") ); const filterableCategories = eventCategories.filter((x) => x.showInFilters); const [category, setCategory] = useQueryState("category", parseAsString); const filteredEvents = events.filter( (x) => !category || x.categories.map((eventCategory) => eventCategory.slug).includes(category) ); return (