From d92c8c0354cc3b5c0167f92b02d52dd85dbbd58b 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:59:55 +0000 Subject: [PATCH] Changes --- src/components/AbonnemangForm.tsx | 25 +++++++++++++++++--- src/pages/Account.tsx | 38 +++++++++++++++++++++++++++++-- 2 files changed, 58 insertions(+), 5 deletions(-) diff --git a/src/components/AbonnemangForm.tsx b/src/components/AbonnemangForm.tsx index 64be198..bb60f99 100644 --- a/src/components/AbonnemangForm.tsx +++ b/src/components/AbonnemangForm.tsx @@ -11,6 +11,19 @@ const isStockholmPostalCode = (postalCode: string) => { return num >= 10000 && num <= 19999; }; +// Get error message for postal code (for real-time validation display) +const getPostalCodeError = (postalCode: string) => { + if (!postalCode || postalCode.trim() === "") return null; + const cleaned = postalCode.replace(/\s/g, ""); + if (cleaned.length < 5) return null; // Don't show error while typing + if (!/^\d{5}$/.test(cleaned)) return "Ange ett giltigt postnummer (5 siffror)"; + const num = parseInt(cleaned, 10); + if (num < 10000 || num > 19999) { + return "Vi levererar endast inom Storstockholm (100 00 – 199 99)"; + } + return null; +}; + 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), @@ -243,10 +256,16 @@ const AbonnemangForm = ({ selectedPlan, onClose }: AbonnemangFormProps) => { placeholder="t.ex. 114 32" value={formData.postnummer} onChange={handleChange} - className="w-full px-4 py-3 rounded-sm bg-background border border-border text-foreground focus:outline-none focus:ring-2 focus:ring-primary/30" + className={`w-full px-4 py-3 rounded-sm bg-background border text-foreground focus:outline-none focus:ring-2 ${ + getPostalCodeError(formData.postnummer) + ? "border-destructive focus:ring-destructive/30" + : "border-border focus:ring-primary/30" + }`} /> - {errors.postnummer && ( -
{errors.postnummer}
+ {(errors.postnummer || getPostalCodeError(formData.postnummer)) && ( ++ {errors.postnummer || getPostalCodeError(formData.postnummer)} +
)}+ {getPostalCodeError(profile.postal_code)} +
+ )}