// Services page — Custom Educational & Training Videos function ServicesApp() { const [tweaks, setTweak] = useTweaks(/*EDITMODE-BEGIN*/{ "themeColor": "navy" } /*EDITMODE-END*/); const [status, setStatus] = React.useState(""); useLucideIcons([tweaks]); useTweakBodyClasses(tweaks); async function handleIntake(e) { e.preventDefault(); const f = e.target; setStatus("sending"); try { const res = await fetch("contact.php", { method: "POST", body: new FormData(f) }); const data = await res.json(); if (data.ok) { setStatus("sent"); f.reset(); } else setStatus("error"); } catch (err) { setStatus("error"); } } const videoTypes = [ { icon: "graduation-cap", k: "vt1" }, { icon: "file-video", k: "vt2" }, { icon: "presentation", k: "vt3" }, { icon: "languages", k: "vt4" }, ]; const steps = ["how1", "how2", "how3", "how4"]; const options = [ { icon: "square-play", k: "opt1" }, { icon: "layers", k: "opt2" }, { icon: "languages", k: "opt3" }, ]; const questions = ["q1","q2","q3","q4","q5","q6","q7","q8","q9","q10","q11","q12"]; return ( <>
Professional educational and training video production for teams
{t("services.eyebrow")}

{t("services.title")}

{t("services.sub")}

{t("services.heroBody1")}

{t("services.heroBody2")}

{/* What you can commission */}
01

{t("services.commissionTitle")}

{t("services.commissionSub")}

{videoTypes.map((v) => (

{t("services." + v.k + "Title")}

{t("services." + v.k + "Tag")}

{t("services." + v.k + "Desc")}

))}
{/* Why work with me */}
02

{t("services.whyTitle")}

{t("services.whyBio")}

{t("services.whyIntro")}

  • {t("services.why1")}
  • {t("services.why2")}
  • {t("services.why3")}
{/* How it works */}
03

{t("services.howTitle")}

{t("services.howSub")}

{steps.map((s, i) => (
{i + 1}

{t("services." + s)}

))}
{/* Service options */}
04

{t("services.optTitle")}

{t("services.optSub")}

{options.map((o) => (

{t("services." + o.k + "Title")}

{t("services." + o.k + "Desc")}

))}
{/* Start a project */}

{t("services.startTitle")}

{t("services.startBody")}

{t("services.startCta")}
{/* Client intake form */}
{t("services.eyebrow")}

{t("services.intakeTitle")}

{t("services.intakeSub")}

{questions.map((q, i) => ( ))} {status === "sent" &&

{t("services.intakeSuccess")}

} {status === "error" &&

{t("services.intakeError")}

}

{t("services.intakeClosing")}

{t("services.ytTitle")}

{t("services.ytBody")}

{t("services.ytButton")}
setTweak("themeColor", v)} options={[ { value: "navy", label: "Navy" }, { value: "graphite", label: "Graphite" }, { value: "emerald", label: "Emerald" }, { value: "gold", label: "Gold" }] } /> ); } window.ServicesApp = ServicesApp;