diff --git a/src/components/sections/ContactSection.tsx b/src/components/sections/ContactSection.tsx
index 2756617..ac14373 100644
--- a/src/components/sections/ContactSection.tsx
+++ b/src/components/sections/ContactSection.tsx
@@ -101,8 +101,8 @@ export function ContactSection() {
{error("email")}
-
-
+
+
{error("phone")}
diff --git a/src/lib/contact.ts b/src/lib/contact.ts
index 23bc4a6..16ecd02 100644
--- a/src/lib/contact.ts
+++ b/src/lib/contact.ts
@@ -28,7 +28,13 @@ const optionalText = (max: number) =>
export const contactRequestSchema = z.object({
name: z.string().trim().min(2, "Bitte gib deinen Namen an.").max(120),
email: z.string().trim().max(200).pipe(z.email("Bitte gib eine gültige E-Mail-Adresse an.")),
- phone: optionalText(60),
+ // Gleiche Regel wie bei der Buchung.
+ phone: z
+ .string("Bitte gib eine Telefonnummer an.")
+ .trim()
+ .min(6, "Bitte gib eine Telefonnummer an.")
+ .max(40)
+ .regex(/^[+0-9 ()/-]+$/, "Die Telefonnummer darf nur Ziffern, Leerzeichen und + ( ) / - enthalten."),
availability: optionalText(200),
message: optionalText(2000),
privacy: z.literal(true, { error: "Bitte bestätige die Datenschutzhinweise." }),
diff --git a/tests/contact.integration.test.ts b/tests/contact.integration.test.ts
index 48ec55c..221b348 100644
--- a/tests/contact.integration.test.ts
+++ b/tests/contact.integration.test.ts
@@ -10,7 +10,7 @@ function request(overrides: Record = {}) {
return contactRequestSchema.parse({
name: "Lena Beispiel",
email: "lena@example.org",
- phone: "",
+ phone: "+49 170 1234567",
availability: "abends",
message: "Passt das Camp für Einsteigerinnen?",
privacy: true,
@@ -61,6 +61,10 @@ describe("Erstgespräch", () => {
test("Pflichtangaben und Einwilligung werden serverseitig geprüft", () => {
expect(contactRequestSchema.safeParse({ name: "L", email: "kein-mail", privacy: false }).success).toBe(false);
expect(contactRequestSchema.safeParse({ name: "Lena", email: "lena@example.org", privacy: false }).success).toBe(false);
- expect(request({ phone: " " }).phone).toBeNull();
+ const base = { name: "Lena", email: "lena@example.org", privacy: true };
+ expect(contactRequestSchema.safeParse(base).success).toBe(false);
+ expect(contactRequestSchema.safeParse({ ...base, phone: " " }).success).toBe(false);
+ expect(contactRequestSchema.safeParse({ ...base, phone: "abc123456" }).success).toBe(false);
+ expect(request({ phone: " +49 170 1234567 " }).phone).toBe("+49 170 1234567");
});
});