"use client"; import React, { useState, type FC, type FormEvent } from "react"; import { saveSession, type ClientSession } from "@/lib/session"; import { clientService } from "@/services/client.service"; import { Spinner } from "../../Components/UI"; import { Alert } from "../../Components/UI"; import { Button } from "../../Components/UI"; import { Input } from "../../Components/UI"; // ─── Types ─────────────────────────────────── interface RegForm { name: string; email: string; phone: string; companyName: string; } interface RegErrors { name?: string; email?: string; phone?: string; } // ─── RegisterStep ──────────────────────────── interface RegisterStepProps { onSuccess: (s: ClientSession) => void; } const RegisterStep: FC = ({ onSuccess }) => { const [form, setForm] = useState({ name: "", email: "", phone: "", companyName: "" }); const [errors, setErrors] = useState({}); const [loading, setLoading] = useState(false); const [apiError, setApiError] = useState(""); const validate = (): boolean => { const e: RegErrors = {}; if (!form.name.trim()) e.name = "الاسم الكامل مطلوب"; if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(form.email)) e.email = "أدخل بريدًا إلكترونيًا صحيحًا"; if (!/^(\+966|0)?[5][0-9]{8}$/.test(form.phone.replace(/\s/g, ""))) e.phone = "أدخل رقم هاتف سعودي صحيح (+966 5x xxx xxxx)"; setErrors(e); return Object.keys(e).length === 0; }; const handleSubmit = async (e: FormEvent) => { e.preventDefault(); if (!validate()) return; setLoading(true); setApiError(""); try { const data = await clientService.create({ name: form.name.trim(), email: form.email.trim(), phone: form.phone.trim(), companyName: form.companyName.trim() || undefined, }); const session: ClientSession = { id: data.id, name: data.name, email: data.email, phone: data.phone, }; saveSession(session); onSuccess(session); } catch (err: unknown) { setApiError(err instanceof Error ? err.message : "فشل التسجيل، يرجى المحاولة مجددًا."); } finally { setLoading(false); } }; const set = (field: keyof RegForm) => (e: React.ChangeEvent) => { setForm(p => ({ ...p, [field]: e.target.value })); if (errors[field as keyof RegErrors]) setErrors(p => ({ ...p, [field]: undefined })); }; return (

إنشاء حساب جديد

أدخل بياناتك للبدء مع Slash.so.

{apiError && (
setApiError("")} />
)}
); }; export default RegisterStep;