"use client"; import { useEffect, useState } from "react"; import dynamic from "next/dynamic"; import pt_br_locale from "@fullcalendar/core/locales/pt-br"; import FullCalendar from "@fullcalendar/react"; import dayGridPlugin from "@fullcalendar/daygrid"; import interactionPlugin from "@fullcalendar/interaction"; import timeGridPlugin from "@fullcalendar/timegrid"; import { EventInput } from "@fullcalendar/core/index.js"; import { Sidebar } from "@/components/dashboard/sidebar"; import { PagesHeader } from "@/components/dashboard/header"; import { Button } from "@/components/ui/button"; import { mockAppointments, mockWaitingList, } from "@/lib/mocks/appointment-mocks"; import "./index.css"; import Link from "next/link"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; const ListaEspera = dynamic( () => import("@/components/agendamento/ListaEspera"), { ssr: false } ); export default function AgendamentoPage() { const [appointments, setAppointments] = useState(mockAppointments); const [waitingList, setWaitingList] = useState(mockWaitingList); const [activeTab, setActiveTab] = useState<"calendar" | "espera">("calendar"); const [requestsList, setRequestsList] = useState(); useEffect(() => { document.addEventListener("keydown", (event) => { if (event.key === "c") { setActiveTab("calendar"); } if (event.key === "f") { setActiveTab("espera"); } }); }, []); useEffect(() => { let events: EventInput[] = []; appointments.forEach((obj) => { const event: EventInput = { title: `${obj.patient}: ${obj.type}`, start: new Date(obj.time), end: new Date(new Date(obj.time).getTime() + obj.duration * 60 * 1000), color: obj.status === "confirmed" ? "#68d68a" : obj.status === "pending" ? "#ffe55f" : "#ff5f5fff", }; events.push(event); }); setRequestsList(events); }, [appointments]); // mantive para caso a lógica de salvar consulta passe a funcionar const handleSaveAppointment = (appointment: any) => { if (appointment.id) { setAppointments((prev) => prev.map((a) => (a.id === appointment.id ? appointment : a)) ); } else { const newAppointment = { ...appointment, id: Date.now().toString(), }; setAppointments((prev) => [...prev, newAppointment]); } }; const handleNotifyPatient = (patientId: string) => { console.log(`Notificando paciente ${patientId}`); }; return (

{activeTab === "calendar" ? "Calendário" : "Lista de Espera"}

Navegue através dos atalhos: Calendário (C) ou Fila de espera (F).

{/* */} Opções » Agendamento Procedimento Financeiro
{activeTab === "calendar" ? (
{ info.view.calendar.changeView("timeGridDay", info.dateStr); }} selectable={true} selectMirror={true} dayMaxEvents={true} dayMaxEventRows={3} />
) : ( {}} /> )}
); }