"use client" import { createEvent } from "ics" import { useIntl } from "react-intl" import { dt } from "@/lib/dt" import { CalendarAddIcon } from "@/components/Icons" import Button from "@/components/TempDesignSystem/Button" import useLang from "@/hooks/useLang" import type { AddToCalendarProps } from "@/types/components/hotelReservation/bookingConfirmation/actions/addToCalendar" export default function AddToCalendar({ checkInDate, event, hotelName, }: AddToCalendarProps) { const intl = useIntl() const lang = useLang() async function downloadBooking() { const d = dt(checkInDate).locale(lang).format("YYYY-MM-DD") const filename = `${hotelName.toLowerCase().split(" ").join("_")}-${d}.ics` const file: Blob = await new Promise((resolve, reject) => { createEvent(event, (error, value) => { if (error) { reject(error) } resolve(new File([value], filename, { type: "text/calendar" })) }) }) const url = URL.createObjectURL(file) const anchor = document.createElement("a") anchor.href = url anchor.download = filename document.body.appendChild(anchor) anchor.click() document.body.removeChild(anchor) URL.revokeObjectURL(url) } return ( ) }