"use client"; import { useState } from "react"; import { useParams } from "next/navigation"; import { Calendar } from "@mantine/dates"; import dayjs from "dayjs"; import { clientApi } from "@homarr/api/client"; import type { CalendarEvent } from "@homarr/integrations/types"; import type { WidgetComponentProps } from "../definition"; import { CalendarDay } from "./calender-day"; import classes from "./component.module.css"; export default function CalendarWidget({ isEditMode, integrationIds, options }: WidgetComponentProps<"calendar">) { const [month, setMonth] = useState(new Date()); const [events] = clientApi.widget.calendar.findAllEvents.useSuspenseQuery( { integrationIds, month: month.getMonth(), year: month.getFullYear(), releaseType: options.releaseType, }, { refetchOnMount: false, refetchOnWindowFocus: false, refetchOnReconnect: false, retry: false, }, ); const params = useParams(); const locale = params.locale as string; const [firstDayOfWeek] = clientApi.user.getFirstDayOfWeekForUserOrDefault.useSuspenseQuery(); return ( { const eventsForDate = events .map((event) => ({ ...event, date: (event.dates?.filter(({ type }) => options.releaseType.includes(type)) ?? [event]).find(({ date }) => dayjs(date).isSame(tileDate, "day"), )?.date, })) .filter((event): event is CalendarEvent => Boolean(event.date)); return ; }} /> ); }