Update Owliver language and suggestions
This commit is contained in:
@@ -6,6 +6,7 @@ import { KROW_LOGO_URL } from '@/assets/brand';
|
||||
import { Checkbox } from '@/components/ds';
|
||||
import { useAuth } from '@/lib/AuthContext';
|
||||
import { safeReturnTo } from '@/lib/authReturnTo';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
const DEMO_EMAIL = 'demo@krow.app';
|
||||
|
||||
@@ -23,6 +24,7 @@ const GENERIC_AUTH_ERROR =
|
||||
'That email and password do not match an account. Check both and try again.';
|
||||
|
||||
export default function AdminLogin() {
|
||||
const { t } = useTranslation();
|
||||
const navigate = useNavigate();
|
||||
const location = useLocation();
|
||||
const { login } = useAuth();
|
||||
@@ -123,7 +125,7 @@ export default function AdminLogin() {
|
||||
<div className="flex items-center gap-3">
|
||||
<img src={KROW_LOGO_URL} alt="KROW" className="h-8 w-auto object-contain" />
|
||||
<span className="text-[11px] font-extrabold uppercase tracking-widest px-3 py-1 rounded-full bg-[#F9E547] text-[#0F172A] border border-[#FACC15] shadow-sm">
|
||||
Enterprise
|
||||
{t('login.enterprise')}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -133,7 +135,7 @@ export default function AdminLogin() {
|
||||
<div className="relative rounded-2xl overflow-hidden shadow-md border border-[#E2E8F0] bg-white p-2 max-w-xs">
|
||||
<img
|
||||
src="/krow-logo-visual.jpeg"
|
||||
alt="KROW Logo Visual"
|
||||
alt={t('login.krowLogoVisual')}
|
||||
className="w-full h-auto object-cover rounded-xl transition-transform duration-500 hover:scale-105"
|
||||
/>
|
||||
</div>
|
||||
@@ -143,13 +145,13 @@ export default function AdminLogin() {
|
||||
<div className="relative z-10 space-y-2">
|
||||
<div className="flex items-center gap-1.5 text-xs font-bold text-[#0838E0] uppercase tracking-wider">
|
||||
<Sparkles className="w-3.5 h-3.5 text-[#0838E0]" />
|
||||
Recruiting Intelligence Platform
|
||||
{t('login.recruitingIntelligencePlatform')}
|
||||
</div>
|
||||
<h2 className="text-xl font-bold text-[#0F172A] tracking-tight leading-snug">
|
||||
Workforce decisions powered by intelligence
|
||||
{t('login.workforceDecisionsPoweredByIntelligence')}
|
||||
</h2>
|
||||
<p className="text-xs text-[#64748B] leading-relaxed">
|
||||
AI-driven candidate screening, verified score dimensions, and talent matching.
|
||||
{t('login.aiDrivenCandidateScreeningVerifiedScore')}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -162,12 +164,12 @@ export default function AdminLogin() {
|
||||
<div className="flex items-center gap-2 mb-3 md:hidden">
|
||||
<img src={KROW_LOGO_URL} alt="KROW" className="h-7 w-auto object-contain" />
|
||||
<span className="text-[10px] font-bold uppercase tracking-widest px-2 py-0.5 rounded bg-[#F9E547] text-[#0F172A]">
|
||||
Admin
|
||||
{t('login.admin')}
|
||||
</span>
|
||||
</div>
|
||||
<h1 className="text-2xl font-extrabold text-[#0F172A] tracking-tight">Welcome back</h1>
|
||||
<h1 className="text-2xl font-extrabold text-[#0F172A] tracking-tight">{t('login.welcomeBack')}</h1>
|
||||
<p className="mt-1.5 text-xs text-[#64748B] leading-relaxed">
|
||||
Sign in to manage hiring, candidates, talent intelligence, and workforce decisions.
|
||||
{t('login.signInToManageHiringCandidates')}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -184,7 +186,7 @@ export default function AdminLogin() {
|
||||
{/* Email */}
|
||||
<div className="space-y-1.5">
|
||||
<label className="block text-xs font-bold text-[#334155] uppercase tracking-wider">
|
||||
Work email
|
||||
{t('login.workEmail')}
|
||||
</label>
|
||||
<input
|
||||
type="email"
|
||||
@@ -197,7 +199,7 @@ export default function AdminLogin() {
|
||||
"w-full h-11 px-3.5 rounded-xl bg-[#FAF9F5] border text-sm text-[#0F172A] placeholder-slate-400 focus:outline-none transition-all",
|
||||
errors.email ? "border-red-500 focus:border-red-500" : "border-[#E2E8F0] focus:border-[#F59E0B] focus:ring-2 focus:ring-[#FEF3C7]"
|
||||
)}
|
||||
placeholder="name@company.com"
|
||||
placeholder={t('login.nameCompanyCom')}
|
||||
/>
|
||||
{errors.email && <p className="text-xs text-red-600 font-medium">{errors.email}</p>}
|
||||
</div>
|
||||
@@ -205,7 +207,7 @@ export default function AdminLogin() {
|
||||
{/* Password */}
|
||||
<div className="space-y-1.5">
|
||||
<label className="block text-xs font-bold text-[#334155] uppercase tracking-wider">
|
||||
Password
|
||||
{t('login.password')}
|
||||
</label>
|
||||
<div className="relative">
|
||||
<input
|
||||
@@ -239,7 +241,7 @@ export default function AdminLogin() {
|
||||
onCheckedChange={(v) => setForm({ ...form, remember: Boolean(v) })}
|
||||
disabled={busy}
|
||||
/>
|
||||
Remember me
|
||||
{t('login.rememberMe')}
|
||||
</label>
|
||||
<button
|
||||
type="button"
|
||||
@@ -247,7 +249,7 @@ export default function AdminLogin() {
|
||||
onClick={() => setAuthError('Password resets are not available yet — ask an administrator to set a new password.')}
|
||||
className="text-[#D97706] hover:text-[#B45309] font-semibold transition-colors"
|
||||
>
|
||||
Forgot password?
|
||||
{t('login.forgotPassword')}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -265,8 +267,7 @@ export default function AdminLogin() {
|
||||
</form>
|
||||
|
||||
<p className="text-center text-xs text-[#94A3B8] leading-relaxed pt-2">
|
||||
Sign in with your Krow account. Passwords are set by an administrator with
|
||||
the <span className="text-[#64748B] font-semibold">setpassword</span> utility.
|
||||
{t('login.signInWithYourKrowAccount')} <span className="text-[#64748B] font-semibold">setpassword</span> {t('login.utility')}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user