import Link from "next/link"; import { ActionButton } from "@/components/ActionButton"; import { apiGet } from "@/lib/server-api"; import { fmtDay } from "@/lib/format"; import type { Holiday, Me } from "@/lib/types"; import { AddHolidayForm } from "./form"; type Search = Promise>; export default async function HolidaysPage({ searchParams }: { searchParams: Search }) { const sp = await searchParams; const yearParam = typeof sp.year === "string" ? sp.year : ""; const [{ year, holidays }, me] = await Promise.all([ apiGet<{ year: number; holidays: Holiday[] }>(`/holidays${yearParam ? `?year=${encodeURIComponent(yearParam)}` : ""}`), apiGet("/auth/me"), ]); const canEdit = me.account.role !== "viewer"; return ( <>

Feriados de {year}

Dias úteis: fim de semana não conta; depois vale esta tabela (feriados da feriadosapi.com e manuais). Se a API não responder e o ano não tiver sido sincronizado, segunda a sexta contam como úteis e os admins são avisados.

← {year - 1} · {year + 1} →

{canEdit && (
)}
{canEdit && } {holidays.length === 0 && ( )} {holidays.map((h) => ( {canEdit && ( )} ))}
Data Nome Origem
Nenhum feriado registrado para {year}.
{fmtDay(h.day)} {h.name} {h.source === "manual" ? manual : h.source} {h.source === "manual" && ( )}
{canEdit && (

Cadastrar feriado manual

)} ); }