;
}
const set = (k, v) => setForm({ ...form, [k]: v });
const certOptions = certs.length > 0 ? certs.map(c => c.name) : DEFAULT_CERTS;
const toggleCert = (c) => set('certifications', form.certifications.includes(c) ? form.certifications.filter(x => x !== c) : [...form.certifications, c]);
const toggleAvail = (a) => set('availability', form.availability.includes(a) ? form.availability.filter(a2 => a2 !== a) : [...form.availability, a]);
const handleSelfie = async (e) => {
const file = e.target.files?.[0];
if (!file) return;
setUploadingSelfie(true);
try {
const { file_url } = await base44.integrations.Core.UploadFile({ file });
set('selfie_url', file_url);
} catch {}
setUploadingSelfie(false);
e.target.value = '';
};
const save = async () => {
if (!form.full_name.trim()) { toast.error('Your name is required.'); return; }
if (!form.selfie_url) { toast.error('Add a selfie to complete your identity.'); return; }
try {
const merged = { ...profile, ...form };
const patch = { ...form, ...recalcProfilePatch(merged) };
await update.mutateAsync({ id: profile.id, data: patch });
toast.success('KROW Identity created. Now let Owliver learn about you.');
navigate('/owliver');
} catch {
toast.error('Could not save identity.');
}
};
return (
{/* Living identity card — the experience, not the explanation */}
{/* Career Passport — verified credentials that make up the KROW Identity */}
{/* Selfie + name */}
{form.selfie_url ? (
) : (
)}
A quick selfie so employers recognize you. No resume, just you.