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,8 +5,10 @@ import { useJobPostings, useApplications } from '@/lib/krowHooks';
import { base44 } from '@/api/base44Client';
import KROWJobPostingCard from '@/components/krow/KROWJobPostingCard';
import CertificationManager from '@/components/krow/CertificationManager';
import { useTranslation } from 'react-i18next';
export default function Positions() {
const { t } = useTranslation();
const navigate = useNavigate();
const { data: postings = [], isLoading } = useJobPostings();
const { data: applications = [] } = useApplications();
@@ -36,8 +38,8 @@ export default function Positions() {
return (
<div className="space-y-5">
<div>
<h1 className="text-[22px] font-bold text-[#111827]">Positions</h1>
<p className="text-[13px] text-[#6B7280] mt-0.5">{postings.length} job postings</p>
<h1 className="text-[22px] font-bold text-[#111827]">{t('positions.positions')}</h1>
<p className="text-[13px] text-[#6B7280] mt-0.5">{postings.length} {t('positions.jobPostings')}</p>
</div>
{/* Action Bar */}
@@ -47,7 +49,7 @@ export default function Positions() {
<input
value={search}
onChange={(e) => setSearch(e.target.value)}
placeholder="Search positions..."
placeholder={t('positions.searchPositions')}
className="w-full h-9 pl-10 pr-4 rounded-full border border-[#E5E7EB] bg-white text-[13px] text-[#111827] shadow-2xs hover:border-[#D1D5DB] focus:border-[#2563EB] focus:ring-2 focus:ring-[#2563EB]/20 focus:outline-none transition-all"
/>
</div>
@@ -56,18 +58,18 @@ export default function Positions() {
onChange={(e) => setStatusFilter(e.target.value)}
className="h-9 px-3.5 rounded-full border border-[#E5E7EB] bg-white text-[13px] text-[#1F2937] shadow-2xs hover:border-[#D1D5DB] focus:border-[#2563EB] focus:outline-none transition-all cursor-pointer"
>
<option value="all">All</option>
<option value="active">Hiring</option>
<option value="draft">Draft</option>
<option value="paused">Paused</option>
<option value="closed">Closed</option>
<option value="all">{t('positions.all')}</option>
<option value="active">{t('positions.hiring')}</option>
<option value="draft">{t('positions.draft')}</option>
<option value="paused">{t('positions.paused')}</option>
<option value="closed">{t('positions.closed')}</option>
</select>
{isAdmin && <CertificationManager />}
<button
onClick={() => navigate('/positions/new')}
className="inline-flex items-center justify-center gap-1.5 bg-[#111827] hover:bg-[#1F2937] text-white text-[13px] font-medium px-4 h-9 rounded-full shadow-xs transition-colors whitespace-nowrap"
>
<Plus className="w-4 h-4" /> New Position
<Plus className="w-4 h-4" /> {t('positions.newPosition')}
</button>
</div>
@@ -78,9 +80,9 @@ export default function Positions() {
</div>
) : filtered.length === 0 ? (
<div className="text-center py-16">
<p className="text-[14px] text-[#6B7280] mb-3">No positions found</p>
<p className="text-[14px] text-[#6B7280] mb-3">{t('positions.noPositionsFound')}</p>
<button onClick={() => navigate('/positions/new')} className="inline-flex items-center gap-1.5 bg-[#2563EB] text-white text-[13px] font-medium px-4 py-2 rounded-lg">
<Plus className="w-4 h-4" /> Create your first position
<Plus className="w-4 h-4" /> {t('positions.createYourFirstPosition')}
</button>
</div>
) : (