'use client';
import Button from '@/components/ui/Button';
import React from 'react';
import Link from 'next/link';
import { signUp } from '@/utils/auth-helpers/server';
import { handleRequest } from '@/utils/auth-helpers/client';
import { useRouter } from 'next/navigation';
import { useState } from 'react';
// Define prop type with allowEmail boolean
interface SignUpProps {
allowEmail: boolean;
redirectMethod: string;
}
export default function SignUp({ allowEmail, redirectMethod }: SignUpProps) {
const router = useRouter();
const [isSubmitting, setIsSubmitting] = useState(false);
const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
setIsSubmitting(true); // Disable the button while the request is being handled
await handleRequest(e, signUp, redirectMethod === 'client' ? router : null);
setIsSubmitting(false);
};
return (
<div className="my-8">
<form
noValidate={true}
className="mb-4"
onSubmit={(e) => handleSubmit(e)}
>
<div className="grid gap-2">
<div className="grid gap-1">
<label htmlFor="email">Имейл</label>
<input
id="email"
placeholder="name@example.com"
type="email"
name="email"
autoCapitalize="none"
autoComplete="email"
autoCorrect="off"
className="w-full p-3 rounded-md bg-zinc-800"
/>
<label htmlFor="password">Парола</label>
<input
id="password"
placeholder="Парола"
type="password"
name="password"
autoComplete="current-password"
className="w-full p-3 rounded-md bg-zinc-800"
/>
</div>
<Button
variant="slim"
type="submit"
className="mt-1"
loading={isSubmitting}
>
Регистрация
</Button>
</div>
</form>
<p>Вече имате акаунт?</p>
<p>
<Link href="/signin/password_signin" className="font-light text-sm">
Влез с имейл и парола
</Link>
</p>
{allowEmail && (
<p>
<Link href="/signin/email_signin" className="font-light text-sm">
Влез с магически линк
</Link>
</p>
)}
</div>
);
}