"use client"; import { useRouter } from "next/navigation"; import { useState, type FormEvent } from "react"; import { WindowFields } from "@/components/WindowFields"; import { apiFetch, errorMessage } from "@/lib/client-api"; import type { QueryWindow, WindowPreview } from "@/lib/types"; export function SettingsForm({ initial, disabled }: { initial: QueryWindow; disabled: boolean }) { const router = useRouter(); const [value, setValue] = useState(initial); const [preview, setPreview] = useState(null); const [message, setMessage] = useState<{ ok: boolean; text: string } | null>(null); const [busy, setBusy] = useState(false); async function runPreview() { setBusy(true); setMessage(null); try { setPreview(await apiFetch("/settings/preview", { method: "POST", body: value })); } catch (err) { setMessage({ ok: false, text: errorMessage(err) }); } finally { setBusy(false); } } async function save(e: FormEvent) { e.preventDefault(); if (!window.confirm("Salvar a nova janela global? Ela vale para todos os usuários sem janela personalizada.")) return; setBusy(true); setMessage(null); try { await apiFetch("/settings", { method: "PUT", body: value }); setMessage({ ok: true, text: "Janela salva." }); router.refresh(); } catch (err) { setMessage({ ok: false, text: errorMessage(err) }); } finally { setBusy(false); } } return (
{ setValue(w); setPreview(null); }} disabled={disabled} /> {!disabled && (
)} {message &&

{message.text}

} {preview && (
{preview.errors.length > 0 ? (
    {preview.errors.map((e) => (
  • {e.message}
  • ))}
) : (
Consultas por usuário (máximo)
{preview.max_queries_per_user} por dia
Consultas num dia típico
{preview.typical_queries_per_user} por usuário
Consultas num dia de folga
{preview.day_off_queries_per_user} por usuário
Lembretes que sairiam atrasados
{preview.affected_users} usuário(s), {preview.affected_days} dia(s) nos últimos 30 dias (aviso de retorno antes do início da janela)
Não afetados
{preview.custom_window_users} usuário(s) com janela personalizada
)}
)} ); }