/* Gemeinsame Bausteine der Leistungsseiten KI-Server, Personalvermittlung und Bewertungsmanagement
(nur von ki-server.html, personalvermittlung.html und bewertungen.html geladen, vor der jeweiligen seite-*.jsx).
Abschnitts-Hülle, Auswahl- und Textfeld, Karten-Raster und das Kurzformular für Anfragen an api-contact.php. */
// Sektion mit Kopf wie alle übrigen Sektionen (Index, Eyebrow, Headline, Lead); Inhalt kommt als children
function Abschnitt({ id, index, eyebrow, title, lead, aside, children, className = "" }) {
const ref = useReveal();
return (
{children}
);
}
// Auswahl im Stil von Field (funnel.jsx); leerer Wert = „Bitte wählen“.
// optionen: Texte (Wert = Text) oder Paare [wert, beschriftung]
function AuswahlFeld({ id, label, value, onChange, optionen, error }) {
const errId = id + "-fehler";
return (
{error &&
{error}
}
);
}
// Mehrzeiliges Textfeld im Stil von Field
function TextFeld({ id, label, value, onChange, error, rows = 4, placeholder }) {
const errId = id + "-fehler";
return (
);
}
// Raster aus Karten mit Icon, Titel und Text (items: { Icon, titel, text, link?: [href, label] }).
// spalten: 2, 3 oder 4 ab Desktop; Klassen ausgeschrieben, damit das Tailwind-Skript sie findet.
const KARTEN_SPALTEN = { 2: "md:grid-cols-2", 3: "md:grid-cols-2 lg:grid-cols-3", 4: "md:grid-cols-2 lg:grid-cols-4" };
function KarteListe({ items, spalten = 3, className = "mt-12 lg:mt-14" }) {
return (