bendo / index.html
Ticoliro's picture
deixe a caixa azul de fundo transparente - Initial Deployment
c3f77ec verified
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Portal do Candidato - RHBrasil</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
.gradient-bg {
background: #0550c9;
--tw-ring-color: #033a8c;
}
.input-focus:focus {
box-shadow: 0 0 0 3px rgba(5, 80, 201, 255);
}
.shake {
animation: shake 0.5s;
}
@keyframes shake {
0%, 100% { transform: translateX(0); }
10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); }
20%, 40%, 60%, 80% { transform: translateX(5px); }
}
</style>
</head>
<body class="bg-gray-50 min-h-screen flex items-center justify-center p-4">
<div class="max-w-md w-full space-y-8 bg-[#0550c9] p-6 rounded-lg">
<!-- Logo Section -->
<div class="text-center">
<img src="https://raw.githubusercontent.com/GustavoNeneve/Cargos-e-Categorias/refs/heads/main/LOGO_RHBrasil.svg" alt="RHBrasil Logo" class="mx-auto h-12 w-auto hover:scale-105 transition-transform duration-200">
<h2 class="mt-6 text-3xl font-extrabold text-white">
Bem vind@ ao Portal do Candidato
</h2>
</div>
<!-- Alert Box -->
<div class="bg-yellow-100 border-l-4 border-yellow-500 p-4 rounded">
<div class="flex">
<div class="flex-shrink-0">
<svg class="h-5 w-5 text-yellow-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor">
<path fill-rule="evenodd" d="M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z" clip-rule="evenodd" />
</svg>
</div>
<div class="ml-3">
<p class="text-sm text-yellow-700">
Para você, candidato, a RHBrasil é totalmente gratuita. Se você, pessoa física, receber qualquer tipo de cobrança em nome da RHBrasil, cuidado! É golpe! Fique atento!
</p>
</div>
</div>
</div>
<!-- Login Form -->
<form id="loginForm" class="mt-8 space-y-6">
<div class="rounded-md shadow-sm space-y-4">
<div>
<label for="cpf" class="block text-sm font-medium text-white">Seu CPF</label>
<div class="mt-1 relative rounded-md shadow-sm">
<input id="cpf" name="cpf" type="text" required class="appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 input-focus focus:outline-none focus:ring-[#0550c9] focus:border-[#0550c9] sm:text-sm" placeholder="000.000.000-00">
<div class="absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none">
<i class="fas fa-user text-gray-400"></i>
</div>
</div>
<p class="mt-1 text-xs text-red-600 hidden" id="cpf-error">Esse campo é obrigatório!</p>
</div>
<div>
<label for="password" class="block text-sm font-medium text-white">Sua senha</label>
<div class="mt-1 relative rounded-md shadow-sm">
<input id="password" name="password" type="password" required class="appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 input-focus focus:outline-none focus:ring-[#0550c9] focus:border-[#0550c9] sm:text-sm" placeholder="********">
<div class="absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none">
<i class="fas fa-lock text-gray-400"></i>
</div>
</div>
<p class="mt-1 text-xs text-red-600 hidden" id="password-error">Esse campo é obrigatório!</p>
</div>
</div>
<div class="flex items-center justify-between">
<div class="flex items-center">
<input id="remember-me" name="remember-me" type="checkbox" class="h-4 w-4 text-[#033a8c] focus:ring-[#033a8c] border-gray-300 rounded">
<label for="remember-me" class="ml-2 block text-sm text-white">
Lembrar senha
</label>
</div>
<div class="text-sm">
<a href="#" id="forgotPassword" class="font-medium text-blue-300 hover:text-blue-200">
Esqueci minha senha
</a>
</div>
</div>
<div>
<button type="submit" class="group relative w-full flex justify-center py-2 px-4 border border-transparent text-sm font-medium rounded-md text-white bg-blue-800 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 transition duration-150">
<span class="absolute left-0 inset-y-0 flex items-center pl-3">
<i class="fas fa-sign-in-alt text-white"></i>
</span>
Entrar
</button>
</div>
</form>
<div class="text-center text-sm">
<p class="text-gray-200">
Ainda não tem cadastro?
<a href="https://www.rhbrasil.com.br/portaldocandidato/view/cadastro.php" class="font-medium text-blue-300 hover:text-blue-200 ml-1">
Clique aqui e cadastre seu currículo!
</a>
</p>
</div>
</div>
<!-- Forgot Password Modal -->
<div id="forgotPasswordModal" class="fixed inset-0 bg-gray-600 bg-opacity-50 flex items-center justify-center hidden z-50 p-4">
<div class="bg-white rounded-lg shadow-xl max-w-md w-full p-6">
<div class="flex justify-between items-center mb-4">
<h3 class="text-lg font-medium text-gray-900">Redefinir senha</h3>
<button id="closeModal" class="text-gray-400 hover:text-gray-500">
<i class="fas fa-times"></i>
</button>
</div>
<div id="step1" class="space-y-4">
<p class="text-sm text-gray-500">Qual é o seu CPF?</p>
<div>
<input id="recoveryCpf" type="text" class="appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 input-focus focus:outline-none focus:ring-[#0550c9] focus:border-[#0550c9] sm:text-sm" placeholder="000.000.000-00">
<p class="mt-1 text-xs text-red-600 hidden" id="recoveryCpf-error">Esse campo é obrigatório!</p>
</div>
<div class="flex justify-between pt-4">
<button id="backToLogin" type="button" class="inline-flex justify-center py-2 px-4 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500">
Voltar para o login
</button>
<button id="nextStep" type="button" class="inline-flex justify-center py-2 px-4 border border-transparent shadow-sm text-sm font-medium rounded-md text-white gradient-bg hover:opacity-90 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-[#0550c9]">
Continuar
</button>
</div>
</div>
<div id="step2" class="space-y-4 hidden">
<p class="text-sm text-gray-500">Escolha uma das opções para receber o código de redefinição de senha.</p>
<div class="space-y-2">
<div class="flex items-center">
<input id="emailOption" name="recoveryMethod" type="radio" class="focus:ring-[#0550c9] h-4 w-4 text-[#0550c9] border-gray-300" checked>
<label for="emailOption" class="ml-3 block text-sm font-medium text-gray-700">
E-mail
</label>
</div>
<div class="flex items-center">
<input id="smsOption" name="recoveryMethod" type="radio" class="focus:ring-[#0550c9] h-4 w-4 text-[#0550c9] border-gray-300">
<label for="smsOption" class="ml-3 block text-sm font-medium text-gray-700">
SMS
</label>
</div>
</div>
<p class="text-xs text-gray-500">Caso você não tenha acesso a esse e-mail, contate o <span class="font-medium">suporte@rhbrasil.com.br</span> informando seu Nome Completo e CPF, que retornaremos o contato com você!</p>
<div class="flex justify-between pt-4">
<button id="backToStep1" type="button" class="inline-flex justify-center py-2 px-4 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500">
Voltar
</button>
<button id="sendCode" type="button" class="inline-flex justify-center py-2 px-4 border border-transparent shadow-sm text-sm font-medium rounded-md text-white gradient-bg hover:opacity-90 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-[#0550c9]">
Enviar Código
</button>
</div>
</div>
<div id="step3" class="space-y-4 hidden">
<p class="text-sm text-gray-500">Informe o código enviado.</p>
<div>
<input id="verificationCode" type="text" class="appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 input-focus focus:outline-none focus:ring-[#0550c9] focus:border-[#0550c9] sm:text-sm" placeholder="Código de 6 dígitos">
<p class="mt-1 text-xs text-red-600 hidden" id="code-error">Esse campo é obrigatório!</p>
</div>
<div class="flex justify-between pt-4">
<button id="backToStep2" type="button" class="inline-flex justify-center py-2 px-4 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500">
Voltar
</button>
<button id="confirmCode" type="button" class="inline-flex justify-center py-2 px-4 border border-transparent shadow-sm text-sm font-medium rounded-md text-white gradient-bg hover:opacity-90 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-[#0550c9]">
Confirmar Código
</button>
</div>
</div>
</div>
</div>
<script>
// Form validation
document.getElementById('loginForm').addEventListener('submit', function(e) {
e.preventDefault();
let isValid = true;
// Validate CPF
const cpf = document.getElementById('cpf');
const cpfError = document.getElementById('cpf-error');
if (!cpf.value.trim()) {
cpf.classList.add('border-red-500');
cpfError.classList.remove('hidden');
isValid = false;
} else {
cpf.classList.remove('border-red-500');
cpfError.classList.add('hidden');
}
// Validate Password
const password = document.getElementById('password');
const passwordError = document.getElementById('password-error');
if (!password.value.trim()) {
password.classList.add('border-red-500');
passwordError.classList.remove('hidden');
isValid = false;
} else {
password.classList.remove('border-red-500');
passwordError.classList.add('hidden');
}
if (!isValid) {
document.getElementById('loginForm').classList.add('shake');
setTimeout(() => {
document.getElementById('loginForm').classList.remove('shake');
}, 500);
return;
}
// Form is valid, proceed with login
alert('Login realizado com sucesso!');
// In a real app, you would submit the form here
});
// Forgot password flow
const forgotPasswordBtn = document.getElementById('forgotPassword');
const forgotPasswordModal = document.getElementById('forgotPasswordModal');
const closeModalBtn = document.getElementById('closeModal');
const backToLoginBtn = document.getElementById('backToLogin');
const nextStepBtn = document.getElementById('nextStep');
const backToStep1Btn = document.getElementById('backToStep1');
const sendCodeBtn = document.getElementById('sendCode');
const backToStep2Btn = document.getElementById('backToStep2');
const confirmCodeBtn = document.getElementById('confirmCode');
const step1 = document.getElementById('step1');
const step2 = document.getElementById('step2');
const step3 = document.getElementById('step3');
forgotPasswordBtn.addEventListener('click', function(e) {
e.preventDefault();
forgotPasswordModal.classList.remove('hidden');
});
closeModalBtn.addEventListener('click', function() {
forgotPasswordModal.classList.add('hidden');
resetModal();
});
backToLoginBtn.addEventListener('click', function() {
forgotPasswordModal.classList.add('hidden');
resetModal();
});
nextStepBtn.addEventListener('click', function() {
const recoveryCpf = document.getElementById('recoveryCpf');
const recoveryCpfError = document.getElementById('recoveryCpf-error');
if (!recoveryCpf.value.trim()) {
recoveryCpf.classList.add('border-red-500');
recoveryCpfError.classList.remove('hidden');
return;
}
recoveryCpf.classList.remove('border-red-500');
recoveryCpfError.classList.add('hidden');
step1.classList.add('hidden');
step2.classList.remove('hidden');
});
backToStep1Btn.addEventListener('click', function() {
step2.classList.add('hidden');
step1.classList.remove('hidden');
});
sendCodeBtn.addEventListener('click', function() {
// In a real app, you would send the code here
step2.classList.add('hidden');
step3.classList.remove('hidden');
});
backToStep2Btn.addEventListener('click', function() {
step3.classList.add('hidden');
step2.classList.remove('hidden');
});
confirmCodeBtn.addEventListener('click', function() {
const verificationCode = document.getElementById('verificationCode');
const codeError = document.getElementById('code-error');
if (!verificationCode.value.trim()) {
verificationCode.classList.add('border-red-500');
codeError.classList.remove('hidden');
return;
}
verificationCode.classList.remove('border-red-500');
codeError.classList.add('hidden');
// In a real app, you would verify the code here
alert('Código verificado com sucesso! Um link para redefinição de senha foi enviado.');
forgotPasswordModal.classList.add('hidden');
resetModal();
});
function resetModal() {
step1.classList.remove('hidden');
step2.classList.add('hidden');
step3.classList.add('hidden');
document.getElementById('recoveryCpf').value = '';
document.getElementById('verificationCode').value = '';
document.getElementById('recoveryCpf').classList.remove('border-red-500');
document.getElementById('recoveryCpf-error').classList.add('hidden');
document.getElementById('verificationCode').classList.remove('border-red-500');
document.getElementById('code-error').classList.add('hidden');
}
// CPF mask
document.getElementById('cpf').addEventListener('input', function(e) {
let value = e.target.value.replace(/\D/g, '');
if (value.length > 3) {
value = value.substring(0, 3) + '.' + value.substring(3);
}
if (value.length > 7) {
value = value.substring(0, 7) + '.' + value.substring(7);
}
if (value.length > 11) {
value = value.substring(0, 11) + '-' + value.substring(11);
}
if (value.length > 14) {
value = value.substring(0, 14);
}
e.target.value = value;
});
document.getElementById('recoveryCpf').addEventListener('input', function(e) {
let value = e.target.value.replace(/\D/g, '');
if (value.length > 3) {
value = value.substring(0, 3) + '.' + value.substring(3);
}
if (value.length > 7) {
value = value.substring(0, 7) + '.' + value.substring(7);
}
if (value.length > 11) {
value = value.substring(0, 11) + '-' + value.substring(11);
}
if (value.length > 14) {
value = value.substring(0, 14);
}
e.target.value = value;
});
</script>
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=Ticoliro/bendo" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>