- {/* Logo */}
-
-

-
+
+
+
+
+ Já tem conta? Login
+
+
- Criar conta
- Selecione se você é empresa ou aluno
-
-
-
- setIsStudent(true)} isActive={isStudent}>
- Aluno
-
-
-
-
- setIsStudent(false)} isActive={!isStudent}>
- Empresa
-
-
-
+
+ Criar conta
+
- {isStudent ? (
-
- ) : (
-
- )}
+
-
- Já tem conta?
- Faça o login aqui!
-
+
+
+
+
+
+
+
+
+ Precisa de ajuda?
+
+
+
+ Fale com nosso suporte:{" "}
+
+ suporte@certify.com.br
+
+
+
+
+
-
-
+ {/* Div da imagem */}
+
+
+
+
+
);
};
diff --git a/src/schemas/SignUp.ts b/src/schemas/SignUp.ts
index cab86e6..a519873 100644
--- a/src/schemas/SignUp.ts
+++ b/src/schemas/SignUp.ts
@@ -27,8 +27,24 @@ export const SignUpStudentSchema = z.object({
}),
password: z
.string()
- .min(8, { message: "A senha deve ter pelo menos 8 caracteres" })
- .max(100, { message: "A senha deve ter no máximo 100 caracteres" }),
+ .min(8, {
+ message: "A senha deve ter pelo menos 8 caracteres",
+ })
+ .max(100, {
+ message: "A senha deve ter no máximo 100 caracteres",
+ })
+ .regex(/\d/, {
+ message: "A senha deve conter pelo menos 1 número",
+ })
+ .regex(/[A-Z]/, {
+ message: "A senha deve conter pelo menos 1 letra maiúscula",
+ })
+ .regex(/[a-z]/, {
+ message: "A senha deve conter pelo menos 1 letra minúscula",
+ })
+ .regex(/[!@#$%^&*(),.?":{}|<>]/, {
+ message: "A senha deve conter pelo menos 1 caractere especial",
+ }),
confirmPassword: z
.string()
.min(8, { message: "Confirme sua senha" }),
diff --git a/src/utils/passwordRules.ts b/src/utils/passwordRules.ts
new file mode 100644
index 0000000..ef9ac4d
--- /dev/null
+++ b/src/utils/passwordRules.ts
@@ -0,0 +1,29 @@
+export interface PasswordRule {
+ label: string;
+ valid: boolean;
+}
+
+export function getPasswordRules(password: string): PasswordRule[] {
+ return [
+ {
+ label: "Mínimo 8 caracteres",
+ valid: password.length >= 8,
+ },
+ {
+ label: "1 número",
+ valid: /\d/.test(password),
+ },
+ {
+ label: "Letras maiúscula",
+ valid: /[A-Z]/.test(password),
+ },
+ {
+ label: "Letra minúscula",
+ valid: /[a-z]/.test(password),
+ },
+ {
+ label: "1 caractere especial",
+ valid: /[!@#$%^&*(),.?":{}|<>]/.test(password),
+ },
+ ];
+}