add referal code for registration

This commit is contained in:
smanylov
2026-02-06 13:13:29 +07:00
parent c4de107fba
commit f6ca797802
4 changed files with 55 additions and 4 deletions
+2
View File
@@ -137,6 +137,7 @@ export type FormState = {
phone: string;
companyName?: string;
agree: string;
referralCode?: string
},
mailConfirm?: boolean,
error: Record<string, string> | null
@@ -155,6 +156,7 @@ export async function registration(
const phone = formData.get('phone') as string || '';
const companyName = formData.get('companyName') as string || '';
const agree = formData.get('agree') as string || '';
const referralCode = formData.get('referralCode');
const SignupFormSchema = await getSignupFormSchema(accountType);
+48 -1
View File
@@ -8,9 +8,13 @@ import Link from 'next/link';
import { useTranslations } from 'next-intl';
import { IconEye } from '@/app/ui/icons/icons';
import { SignupFormSchema } from '@/app/actions/definitions';
import { useSearchParams } from 'next/navigation';
import * as z from 'zod'
export default function RegisterForm() {
const searchParams = useSearchParams();
const referralCode = searchParams.get('referralCode');
const [state, formAction, isPending] = useActionState(
registration,
undefined,
@@ -37,6 +41,10 @@ export default function RegisterForm() {
}, [state])
useEffect(() => {
console.log(referralCode);
}, [referralCode]);
function showPassowrd(target: 'password' | 'confirm-password') {
if (target === 'password') {
setShowPassword(!showPassword);
@@ -77,6 +85,7 @@ export default function RegisterForm() {
case 'email':
case 'fullName':
case 'phone':
case 'referralCode':
case 'password':
case 'companyName':
case 'agree':
@@ -87,6 +96,9 @@ export default function RegisterForm() {
if (fieldName === 'companyName' && accountType === 'b2c') {
return { success: true, data: value };
}
if (fieldName === 'referralCode') {
return { success: true, data: value };
}
return schema.safeParse(value);
default:
@@ -242,7 +254,7 @@ export default function RegisterForm() {
)}
</div>
{accountType === 'b2b' && (
{accountType === 'b2b' ? (
<div className={`${styles['form-group']}`}>
<label
className={`${styles['form-label']} ${styles['required']}`}
@@ -273,7 +285,40 @@ export default function RegisterForm() {
</p>
)}
</div>
) : (
<div className={`${styles['form-group']}`}>
<label className={`${styles['form-label']}`}>
{t('referal-code')}
</label>
<input
type="text"
id="referralCode"
name="referralCode"
className={`${styles['form-input']}`}
placeholder={t('referal-code')}
defaultValue={referralCode ? referralCode : ''}
onChange={(e) => {
e.target.value = e.target.value.toLocaleLowerCase();
onChangeHandler(e)
}}
/>
{formState?.error?.referralCode && (
<p className="text-sm text-red-500">
{
formState?.error?.referralCode.split('&').map((e, index) => {
return (
<span key={index}>
{t(e)}
<br />
</span>
)
})
}
</p>
)}
</div>
)
}
<div className={`${styles['form-group']}`}>
<label className={`${styles['form-label']} ${styles['required']}`}>
@@ -306,6 +351,7 @@ export default function RegisterForm() {
</p>
)}
</div>
<div className={`${styles['form-group']}`}>
<label className={`${styles['form-label']} ${styles['required']}`}>
{t('phone')}
@@ -369,6 +415,7 @@ export default function RegisterForm() {
</p>
)}
</div>
<div className={`${styles['form-group']}`}>
<label className={`${styles['form-label']} ${styles['required']}`}>
{t('confirm-password')}
+2 -1
View File
@@ -279,6 +279,7 @@
"personal": "Personal",
"unknown-error": "Unknown error",
"change-password": "Change Password",
"recovery-code": "Recovery code"
"recovery-code": "Recovery code",
"referal-code": "Referal code"
}
}
+2 -1
View File
@@ -279,6 +279,7 @@
"personal": "Личный",
"unknown-error": "Неизвестная ошибка",
"change-password": "Изменить пароль",
"recovery-code": "Код восстановления"
"recovery-code": "Код восстановления",
"referal-code": "Реферальный код"
}
}