{% include '@Application/inc/central_header.html.twig' %}
<style>
:root {
--n-cream: #F7F5F0;
--n-dark: #1A1D2E;
--n-amber: #C07D2A;
--n-muted: #6B7280;
--n-border: rgba(26,29,46,.09);
--n-error: #dc2626;
}
.n-auth-page {
min-height: calc(100vh - 140px);
background: var(--n-cream);
display: flex;
align-items: center;
justify-content: center;
padding: 72px 24px 96px;
}
.n-auth-card {
width: 100%;
max-width: 440px;
background: #fff;
border: 1.5px solid var(--n-border);
border-radius: 20px;
padding: 44px 40px 40px;
box-shadow: 0 8px 40px rgba(26,29,46,.08);
}
@media(max-width:480px) {
.n-auth-card { padding: 32px 24px 28px; }
}
.n-auth-logo {
text-align: center;
margin-bottom: 28px;
}
.n-auth-logo .n-brand-mark {
display: inline-flex;
align-items: center;
justify-content: center;
width: 52px;
height: 52px;
background: var(--n-dark);
border-radius: 14px;
margin-bottom: 12px;
}
.n-auth-logo .n-brand-mark img { width: 30px; height: 30px; filter: brightness(0) invert(1); }
.n-auth-logo h1 {
font-family: 'Montserrat', sans-serif;
font-size: 1.45rem;
font-weight: 700;
color: var(--n-dark);
margin: 0 0 4px;
}
.n-auth-logo p {
font-size: .85rem;
color: var(--n-muted);
margin: 0;
}
.n-error-msg {
background: #fef2f2;
border: 1.5px solid #fca5a5;
border-radius: 8px;
padding: 10px 14px;
font-size: .85rem;
color: var(--n-error);
margin-bottom: 20px;
text-align: center;
}
.n-field {
margin-bottom: 16px;
}
.n-field label {
display: block;
font-size: .8rem;
font-weight: 600;
color: var(--n-dark);
margin-bottom: 6px;
letter-spacing: .02em;
}
.n-field input {
width: 100%;
padding: 11px 14px;
border: 1.5px solid var(--n-border);
border-radius: 8px;
font-size: .95rem;
color: var(--n-dark);
background: var(--n-cream);
font-family: 'DM Sans', sans-serif;
outline: none;
transition: border-color .2s, background .2s;
box-sizing: border-box;
}
.n-field input:focus { border-color: var(--n-amber); background: #fff; }
.n-field input.error_class { border-color: var(--n-error); }
.n-password-wrap {
position: relative;
}
.n-password-wrap input { padding-right: 42px; }
.n-toggle-pw {
position: absolute;
right: 12px;
top: 50%;
transform: translateY(-50%);
background: none;
border: none;
cursor: pointer;
padding: 0;
opacity: .5;
transition: opacity .2s;
}
.n-toggle-pw:hover { opacity: 1; }
.n-toggle-pw img { width: 18px; }
.n-remember-row {
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 8px;
margin-bottom: 22px;
font-size: .83rem;
}
@media(max-width:360px) {
.n-remember-row { flex-direction: column; align-items: flex-start; }
}
.n-remember-row label {
display: flex;
align-items: center;
gap: 7px;
color: var(--n-muted);
cursor: pointer;
}
.n-remember-row a {
color: var(--n-amber);
font-weight: 600;
text-decoration: none;
}
.n-remember-row a:hover { text-decoration: underline; }
.n-submit-btn {
width: 100%;
padding: 13px;
background: var(--n-dark);
color: #fff;
border: none;
border-radius: 10px;
font-family: 'DM Sans', sans-serif;
font-size: .97rem;
font-weight: 700;
cursor: pointer;
transition: background .2s, transform .15s;
margin-bottom: 16px;
}
.n-submit-btn:hover { background: var(--n-amber); transform: translateY(-1px); }
.n-submit-btn.ready { background: var(--n-amber); }
.n-auth-link {
text-align: center;
font-size: .85rem;
color: var(--n-muted);
margin-bottom: 24px;
}
.n-auth-link a { color: var(--n-amber); font-weight: 600; text-decoration: none; }
.n-auth-link a:hover { text-decoration: underline; }
.n-divider {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 16px;
color: var(--n-muted);
font-size: .8rem;
}
.n-divider::before,
.n-divider::after {
content: '';
flex: 1;
border-top: 1px solid var(--n-border);
}
.n-social-btn {
width: 100%;
padding: 11px 16px;
border: 1.5px solid var(--n-border);
border-radius: 10px;
background: #fff;
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
font-family: 'DM Sans', sans-serif;
font-size: .9rem;
font-weight: 600;
color: var(--n-dark);
text-decoration: none;
cursor: pointer;
transition: background .2s, border-color .2s;
}
.n-social-btn:hover { background: var(--n-cream); border-color: rgba(26,29,46,.2); color: var(--n-dark); text-decoration: none; }
.n-social-btn img { width: 18px; }
</style>
<section class="n-auth-page login-account">
<div class="n-auth-card">
<div class="n-auth-logo">
<div class="n-brand-mark">
<img src="{{ absolute_url(path('dashboard')) }}honeybee_web_assets/icons/honeybeeicon.svg?version={{ constant('ApplicationBundle\\Constants\\GeneralConstant::ENTITY_APP_VERSION') }}" alt="HoneyBee">
</div>
<h1>Welcome Back</h1>
<p>Sign in to your HoneyBee ERP account</p>
</div>
<form action="{{ url('core_login') }}" class="login-form" method="post" id="relevantForm">
{% if message != '' %}
<div class="n-error-msg">{{ message }}</div>
{% endif %}
<div class="n-field">
<label for="username">User ID / Email Address</label>
<div class="login-inputs">
<input type="text" id="username" name="username" placeholder="your@company.com" required>
</div>
</div>
<div class="n-field">
<label for="password">Password</label>
<div class="n-password-wrap login-inputs">
<input type="password" id="password" name="password" placeholder="Your password" required>
<button type="button" class="n-toggle-pw toggle-password">
<img src="{{ absolute_url(path('dashboard')) }}honeybee_web_assets/icons/eye-close.svg?version={{ constant('ApplicationBundle\\Constants\\GeneralConstant::ENTITY_APP_VERSION') }}" class="eyeicon" alt="Toggle password">
</button>
</div>
</div>
<div class="n-remember-row">
<label>
<input type="hidden" id="applicantDirectLogin" name="applicantDirectLogin" value="1">
<input type="checkbox" id="check">
Remember me
</label>
<a href="{{ url('find_account_forgot_password', { 'encData': (encData|json_encode)|nzo_encrypt }) }}">Forgot Password?</a>
</div>
<button type="submit" class="n-submit-btn rel_form_submit">Sign In</button>
<p class="n-auth-link">Don't have an account? <a href="{{ url('sign_up') }}">Create Account</a></p>
<div class="n-divider">Or continue with</div>
<a href="{{ oAuthLink }}" class="n-social-btn social-button google">
<img src="{{ absolute_url(path('dashboard')) }}honeybee_web_assets/images/login/google.svg?version={{ constant('ApplicationBundle\\Constants\\GeneralConstant::ENTITY_APP_VERSION') }}" alt="Google">
Sign in with Google
</a>
</form>
</div>
</section>
{% include '@HoneybeeWeb/footer/central_footer.html.twig' %}
<script>
var fbt = '';
function check_doc_and_submit(submitFlag) {
var checkFailed = 0;
submitFlag = submitFlag || 0;
$('.login-inputs input').each(function(ind, elem) {
if ($(this).prop('required')) {
if ($(this).val() == '' || $(this).val() == 0) checkFailed = 1;
}
});
$('.small_error_text').each(function(ind, elem) {
if ($(elem).text() != '') checkFailed = 1;
});
if (checkFailed == 0) $('.rel_form_submit').addClass('ready');
else $('.rel_form_submit').removeClass('ready');
if (checkFailed == 0 && submitFlag == 1) {
$('.rel_form_submit').removeClass('ready');
$('.rel_form_submit').hide();
$('#relevantForm').submit();
}
}
$(document).ready(function() {
$('.login-inputs input').focus(function() { $(this).removeClass('error_class'); });
$('.login-inputs input').change(function() { check_doc_and_submit(0); });
$('input[type="submit"], button[type="submit"], .rel_form_submit').click(function(event) {
event.preventDefault();
check_doc_and_submit(1);
});
check_doc_and_submit(0);
});
</script>