"use client"; import { useState } from "react"; const contactItems = [ { icon: ( ), label: "Telefon", value: "+49 171 9345193", href: "tel:+4917193451093", }, { icon: ( ), label: "E-Mail", value: "kontakt@mbo-tech-it.de", href: "mailto:kontakt@mbo-tech-it.de", }, { icon: ( ), label: "Standort", value: "Crailsheim, 74564", href: "https://maps.google.com/?q=Mörikestr.+2,+74564+Crailsheim", }, ]; type Status = "idle" | "loading" | "success" | "error"; export default function Contact() { const [name, setName] = useState(""); const [email, setEmail] = useState(""); const [betreff, setBetreff] = useState(""); const [nachricht, setNachricht] = useState(""); const [status, setStatus] = useState("idle"); const [errorMsg, setErrorMsg] = useState(""); async function handleSubmit(e: React.FormEvent) { e.preventDefault(); setStatus("loading"); setErrorMsg(""); try { const res = await fetch("/api/contact", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ name, email, betreff, nachricht }), }); const data = await res.json(); if (!res.ok || !data.ok) { setErrorMsg(data.error ?? "Unbekannter Fehler"); setStatus("error"); } else { setStatus("success"); } } catch { setErrorMsg("Netzwerkfehler – bitte versuchen Sie es erneut."); setStatus("error"); } } return ( {/* Header */} Kontakt Projekt anfragen Sie haben ein IT-Projekt oder eine Frage? Schreiben Sie uns — wir melden uns schnellstmöglich bei Ihnen. {status === "success" ? ( Anfrage gesendet! Wir haben Ihre Nachricht erhalten und melden uns schnellstmöglich bei Ihnen. { setStatus("idle"); setName(""); setEmail(""); setBetreff(""); setNachricht(""); }} className="btn-secondary px-6 py-2" > Neue Anfrage ) : ( Name setName(e.target.value)} placeholder="Max Mustermann" className="w-full px-4 py-3 rounded-xl bg-slate-50 dark:bg-[#111925] border border-slate-300 dark:border-gray-700 text-slate-900 dark:text-white placeholder-slate-400 dark:placeholder-slate-600 focus:outline-none focus:border-orange-500/60 focus:ring-1 focus:ring-orange-500/20 transition-colors" /> E-Mail setEmail(e.target.value)} placeholder="max@beispiel.de" className="w-full px-4 py-3 rounded-xl bg-slate-50 dark:bg-[#111925] border border-slate-300 dark:border-gray-700 text-slate-900 dark:text-white placeholder-slate-400 dark:placeholder-slate-600 focus:outline-none focus:border-orange-500/60 focus:ring-1 focus:ring-orange-500/20 transition-colors" /> Betreff setBetreff(e.target.value)} className="w-full px-4 py-3 rounded-xl bg-slate-50 dark:bg-[#111925] border border-slate-300 dark:border-gray-700 text-slate-900 dark:text-white focus:outline-none focus:border-orange-500/60 focus:ring-1 focus:ring-orange-500/20 transition-colors appearance-none" > Thema auswählen... Hard- & Software Netzwerk & WLAN Datensicherung & Backup Docker Installation Fernwartung & Support Hetzner Cloud Infrastruktur IT-Beratung IT-Sicherheit & Datenschutz Kubernetes Setup Proxmox Virtualisierung Server & Hosting Webseiten & Webanwendungen Sonstiges Nachricht setNachricht(e.target.value)} placeholder="Beschreiben Sie Ihr Projekt oder Ihre Anfrage..." className="w-full px-4 py-3 rounded-xl bg-slate-50 dark:bg-[#111925] border border-slate-300 dark:border-gray-700 text-slate-900 dark:text-white placeholder-slate-400 dark:placeholder-slate-600 focus:outline-none focus:border-orange-500/60 focus:ring-1 focus:ring-orange-500/20 transition-colors resize-none" /> {status === "error" && ( Nachricht konnte nicht gesendet werden. Bitte versuchen Sie es erneut oder kontaktieren Sie uns direkt. {errorMsg && {errorMsg}} )} {status === "loading" ? ( <> Wird gesendet... > ) : ( "Nachricht senden" )} )} {/* Divider */} oder direkt {/* Contact info */} {contactItems.map((item) => ( {item.icon} {item.label} {item.value} ))} ); }
Sie haben ein IT-Projekt oder eine Frage? Schreiben Sie uns — wir melden uns schnellstmöglich bei Ihnen.
Wir haben Ihre Nachricht erhalten und melden uns schnellstmöglich bei Ihnen.