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

@@ -5,6 +5,7 @@ import { Sparkles, Loader2, Briefcase, Star } from 'lucide-react';
import { Image } from '@/components/ui/image';
import { getScoreBand, toFICO } from '@/lib/talentHome';
import TalentDetailModal from '@/components/krow/TalentDetailModal';
import { useTranslation } from 'react-i18next';
const PORTRAIT_PHOTOS = [
'photo-1500648767731-7d3514ad8b31',
@@ -40,6 +41,7 @@ interface SuggestedTalentProps {
}
export default function SuggestedTalent({ job, onContact, onSchedule, onHire }: SuggestedTalentProps) {
const { t } = useTranslation();
const { data: profiles = [] } = useWorkerProfiles();
const matchTalent = useMatchTalentForJob();
const [matches, setMatches] = useState([]);
@@ -84,7 +86,7 @@ export default function SuggestedTalent({ job, onContact, onSchedule, onHire }:
<div className="w-7 h-7 rounded-lg bg-[#EEF3FE] flex items-center justify-center">
<Sparkles className="w-4 h-4 text-[#0838E0]" />
</div>
<h3 className="text-[15px] font-semibold text-[#111827]">Suggested Talent</h3>
<h3 className="text-[15px] font-semibold text-[#111827]">{t('suggestedTalent.suggestedTalent')}</h3>
</div>
{matches.length > 0 && (
<button onClick={runMatch} disabled={matchTalent.isPending} className="text-[12px] font-medium text-[#0838E0] hover:underline disabled:opacity-50">
@@ -92,16 +94,16 @@ export default function SuggestedTalent({ job, onContact, onSchedule, onHire }:
</button>
)}
</div>
<p className="text-[12px] text-[#6B7280] mb-4">Don't wait for applications — KROW matched these talents from the pool against your job. Tap a profile to see the full KROW Identity.</p>
<p className="text-[12px] text-[#6B7280] mb-4">{t('suggestedTalent.dontWaitForApplicationsKrowMatched')}</p>
{matchTalent.isPending && matches.length === 0 ? (
<div className="flex items-center justify-center py-10 gap-2 text-[#6B7280]">
<Loader2 className="w-5 h-5 animate-spin" />
<span className="text-[13px]">Matching talent from the pool…</span>
<span className="text-[13px]">{t('suggestedTalent.matchingTalentFromThePool')}</span>
</div>
) : enriched.length === 0 ? (
<div className="text-center py-10">
<p className="text-[13px] text-[#6B7280]">No strong matches yet. Try widening your requirements, or re-run the match.</p>
<p className="text-[13px] text-[#6B7280]">{t('suggestedTalent.noStrongMatchesYetTryWidening')}</p>
</div>
) : (
<div className="space-y-3">
@@ -130,9 +132,9 @@ export default function SuggestedTalent({ job, onContact, onSchedule, onHire }:
<Briefcase className="w-3 h-3" />{p.desired_position || p.current_position}
</span>
)}
{p.experience_years > 0 && <span>{p.experience_years}yr exp</span>}
{p.experience_years > 0 && <span>{p.experience_years}{t('suggestedTalent.yrExp')}</span>}
<span className="inline-flex items-center gap-1 text-[#F59E0B] font-medium">
<Star className="w-3 h-3 fill-[#F59E0B]" />Career {toFICO(p.krow_score || 0)}
<Star className="w-3 h-3 fill-[#F59E0B]" />{t('suggestedTalent.career')} {toFICO(p.krow_score || 0)}
</span>
</div>
{m.reasons?.length > 0 && (