import { useContext, useState } from "react";
import { DateTime } from "luxon";
import classNames from "classnames";
import { useTranslation } from "next-i18next";
import { IoMdCheckmarkCircleOutline } from "react-icons/io";
import { EventContext } from "../../utils/contexts/calendar";
export function Event({ event, colorVariants, showDate = false }) {
const [hover, setHover] = useState(false);
const { i18n } = useTranslation();
return (
setHover(!hover)}
onMouseLeave={() => setHover(!hover)}
>
{showDate &&
event.date.setLocale(i18n.language).startOf("day").toLocaleString({ month: "short", day: "numeric" })}
{hover && event.additional ? event.additional : event.title}
{event.isCompleted && (
)}
);
}
export default function Agenda({ service, colorVariants, showDate }) {
const { widget } = service;
const { events } = useContext(EventContext);
const { i18n } = useTranslation();
if (!showDate) {
return ;
}
const eventsArray = Object.keys(events)
.filter(
(eventKey) => showDate.startOf("day").toUnixInteger() <= events[eventKey].date?.startOf("day").toUnixInteger(),
)
.map((eventKey) => events[eventKey])
.sort((a, b) => a.date - b.date)
.slice(0, widget?.maxEvents ?? 10);
if (!eventsArray.length) {
return (
);
}
const days = Array.from(new Set(eventsArray.map((e) => e.date.startOf("day").ts)));
const eventsByDay = days.map((d) => eventsArray.filter((e) => e.date.startOf("day").ts === d));
return (
{eventsByDay.map((eventsDay, i) => (
{eventsDay.map((event, j) => (
))}
))}
);
}