Update Owliver language and suggestions

This commit is contained in:
2026-10-07 19:15:44 +05:30
parent 8ac4e1ee88
commit 81e5979f8f
156 changed files with 7330 additions and 1755 deletions

View File

@@ -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>