From 2488cddb63d86a24cc8360c1b504ff3c2449eae4 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Wed, 28 Jan 2026 13:50:47 +0000 Subject: [PATCH] Changes --- src/components/AbonnemangForm.tsx | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/components/AbonnemangForm.tsx b/src/components/AbonnemangForm.tsx index ea159ad..64be198 100644 --- a/src/components/AbonnemangForm.tsx +++ b/src/components/AbonnemangForm.tsx @@ -3,12 +3,28 @@ import { z } from "zod"; import { useAuth } from "@/hooks/useAuth"; import { supabase } from "@/integrations/supabase/client"; +// Validate Stockholm postal codes (100 00 - 199 99) +const isStockholmPostalCode = (postalCode: string) => { + const cleaned = postalCode.replace(/\s/g, ""); + if (!/^\d{5}$/.test(cleaned)) return false; + const num = parseInt(cleaned, 10); + return num >= 10000 && num <= 19999; +}; + const formSchema = z.object({ företag: z.string().trim().min(1, "Fyll i företagsnamn").max(100), epost: z.string().trim().email("Ange en giltig e-postadress").max(255), telefon: z.string().trim().max(20).optional(), adress: z.string().trim().max(200).optional(), - postnummer: z.string().trim().max(10).optional(), + postnummer: z + .string() + .trim() + .min(1, "Fyll i postnummer för leverans") + .max(10) + .refine( + (val) => isStockholmPostalCode(val), + { message: "Vi levererar endast inom Storstockholm (100 00 – 199 99)" } + ), stad: z.string().trim().max(100).optional(), abonnemang: z.string().min(1, "Välj ett abonnemang"), kommentarer: z.string().trim().max(1000).optional(), @@ -219,15 +235,19 @@ const AbonnemangForm = ({ selectedPlan, onClose }: AbonnemangFormProps) => {
+ {errors.postnummer && ( +

{errors.postnummer}

+ )}