import { useMemo, useState } from "react"; import { useLocation, useNavigate, useParams } from "react-router-dom"; import { CafeEvent, mockCafeEvents } from "../data/mockCafeEvents"; import { mockReservations, Reservation } from "../data/mockReservations"; import { formatPersianNumber } from "../utils/formatNumber"; function ChevronIcon({ className = "" }: { className?: string }) { return ( ); } function SearchIcon({ className = "" }: { className?: string }) { return ( ); } function CheckIcon() { return ( ); } function toEnglishDigits(value: string) { const persianDigits = "۰۱۲۳۴۵۶۷۸۹"; return value.replace(/[۰-۹]/g, (digit) => String(persianDigits.indexOf(digit)), ); } function reservationMatches(reservation: Reservation, query: string) { if (!query) return true; const haystack = toEnglishDigits( `${reservation.name} ${reservation.phone} ${reservation.count} ${formatPersianNumber(reservation.count)} ${reservation.code}`, ).toLowerCase(); return haystack.includes(toEnglishDigits(query).toLowerCase()); } function downloadReservationsCsv(reservations: Reservation[]) { const header = ["کد رزرو", "تعداد", "نام", "شماره تماس"]; const rows = reservations.map((r) => [ r.code, String(r.count), r.name, toEnglishDigits(r.phone), ]); const csvContent = [header, ...rows] .map((row) => row.map((cell) => `"${cell.replace(/"/g, '""')}"`).join(",")) .join("\n"); const blob = new Blob(["" + csvContent], { type: "text/csv;charset=utf-8;", }); const url = URL.createObjectURL(blob); const link = document.createElement("a"); link.href = url; link.download = "reservations.csv"; link.click(); URL.revokeObjectURL(url); } function ReservationCard({ reservation, selected, onToggle, }: { reservation: Reservation; selected: boolean; onToggle: () => void; }) { return (
{reservation.name}
{reservation.phone}