"use client"; import styles from "./eventItem.module.scss"; import Link from "next/link"; import { Image } from "@/components/general/Image"; import { SingularEvent, EventFragment, getFutureOccurrences, } from "@/lib/event"; import { formatDate, formatDateRange, formatExtendedDateTime, groupConsecutiveDates, } from "@/lib/date"; const DATE_PILLS_TO_SHOW = 2; export const EventItem = ({ event, mode, size, }: { event: SingularEvent | EventFragment; mode: "list" | "calendar" | "singular-time-only"; size?: "small" | "medium" | "large"; }) => { const futureOccurrences = getFutureOccurrences(event); const groupedOccurrences = groupConsecutiveDates( futureOccurrences.map((occurrence) => occurrence.start) ); const numOccurrences = event?.occurrences?.length ?? 0; const nextOccurrence = numOccurrences ? groupedOccurrences[0] : null; const featuredImage: any = event.featuredImage; return (
  • {featuredImage && ( {featuredImage.alt} )}
    {mode === "list" && nextOccurrence && (
    {groupedOccurrences.slice(0, DATE_PILLS_TO_SHOW).map((group) => ( {formatDateRange(group)} ))} {groupedOccurrences.length > DATE_PILLS_TO_SHOW && ( {`+${groupedOccurrences .slice(DATE_PILLS_TO_SHOW) .reduce((sum, group) => sum + group.length, 0)}`} )}
    )} {(mode === "calendar" || mode === "singular-time-only") && "occurrence" in event && event.occurrence?.start && (

    {formatDate(event.occurrence?.start, "'kl.' HH:mm")}

    )}

    {event.title}

    Evt. andre detaljer

    Mer om arrangementet {event.title}
  • ); };