"use client";
import { useActionState, useState } from "react";
import { useFormStatus } from "react-dom";
import { motion } from "framer-motion";
import { CheckMark } from "../ui/CheckMark";
import { Spinner } from "../ui/Spinner";
import { sendContact, type ContactState } from "@/app/actions/contact";
import { CONTACT_CHANNELS } from "@/lib/site";
import { EASE_OUT_EXPO } from "@/lib/motion";
const initialState: ContactState = { status: "idle", message: "" };
function SubmitButton() {
const { pending } = useFormStatus();
return (
);
}
const inputBase =
"w-full bg-surface border px-4 py-3 text-sm text-foreground placeholder:text-foreground-muted focus:outline-none transition-colors duration-200";
/** Field errors slide in under their input rather than appearing under it. */
function FieldError({ children, id }: { children: string; id: number }) {
return (
MESSAGE SENT
{state.message}