Add Equal Employment Opportunity (EEO) legal declarations card for Veteran, Disability, Clearance & Work Authorization
This commit is contained in:
@@ -19,7 +19,8 @@ import {
|
|||||||
Zap,
|
Zap,
|
||||||
RefreshCw,
|
RefreshCw,
|
||||||
AlertCircle,
|
AlertCircle,
|
||||||
Server
|
Server,
|
||||||
|
ShieldCheck
|
||||||
} from 'lucide-react';
|
} from 'lucide-react';
|
||||||
|
|
||||||
interface ProfileSettingsProps {
|
interface ProfileSettingsProps {
|
||||||
@@ -345,6 +346,105 @@ export const ProfileSettings: React.FC<ProfileSettingsProps> = ({
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{/* Equal Employment Opportunity (EEO) & Legal Self-Identification Declarations */}
|
||||||
|
<div className="lg:col-span-3 p-6 rounded-2xl bg-slate-900 border border-slate-800 shadow-xl space-y-4">
|
||||||
|
<div className="flex items-center justify-between pb-3 border-b border-slate-800">
|
||||||
|
<h3 className="text-sm font-bold text-white flex items-center gap-2">
|
||||||
|
<ShieldCheck className="w-4 h-4 text-emerald-400" /> Voluntary EEO, Veteran, Disability & Legal Declarations
|
||||||
|
</h3>
|
||||||
|
<span className="text-[10px] text-slate-400 font-mono">Used for Auto-Filling Application Questions</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="grid grid-cols-1 md:grid-cols-3 gap-4 text-xs">
|
||||||
|
|
||||||
|
{/* Veteran Status */}
|
||||||
|
<div>
|
||||||
|
<label className="block font-semibold text-slate-300 mb-1">Veteran Status</label>
|
||||||
|
<select
|
||||||
|
value={profile.eeoDeclarations?.veteranStatus || 'NOT_VETERAN'}
|
||||||
|
onChange={(e) => handleUpdateField('eeoDeclarations', { ...profile.eeoDeclarations, veteranStatus: e.target.value })}
|
||||||
|
className="w-full px-3 py-2 rounded-xl bg-slate-950 border border-slate-800 text-slate-200 focus:outline-none focus:border-indigo-500"
|
||||||
|
>
|
||||||
|
<option value="NOT_VETERAN">I am not a protected veteran</option>
|
||||||
|
<option value="PROTECTED_VETERAN">I identify as one or more of the classifications of protected veteran</option>
|
||||||
|
<option value="PREFER_NOT_TO_SAY">I decline to disclose / Prefer not to say</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Disability Status */}
|
||||||
|
<div>
|
||||||
|
<label className="block font-semibold text-slate-300 mb-1">Disability Status</label>
|
||||||
|
<select
|
||||||
|
value={profile.eeoDeclarations?.disabilityStatus || 'NO_DISABILITY'}
|
||||||
|
onChange={(e) => handleUpdateField('eeoDeclarations', { ...profile.eeoDeclarations, disabilityStatus: e.target.value })}
|
||||||
|
className="w-full px-3 py-2 rounded-xl bg-slate-950 border border-slate-800 text-slate-200 focus:outline-none focus:border-indigo-500"
|
||||||
|
>
|
||||||
|
<option value="NO_DISABILITY">No, I do not have a disability</option>
|
||||||
|
<option value="YES_DISABILITY">Yes, I have a disability (or previously had a disability)</option>
|
||||||
|
<option value="PREFER_NOT_TO_SAY">I decline to disclose / Prefer not to say</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Work Authorization */}
|
||||||
|
<div>
|
||||||
|
<label className="block font-semibold text-slate-300 mb-1">Work Authorization</label>
|
||||||
|
<select
|
||||||
|
value={profile.eeoDeclarations?.workAuthorization || 'US_CITIZEN'}
|
||||||
|
onChange={(e) => handleUpdateField('eeoDeclarations', { ...profile.eeoDeclarations, workAuthorization: e.target.value })}
|
||||||
|
className="w-full px-3 py-2 rounded-xl bg-slate-950 border border-slate-800 text-slate-200 focus:outline-none focus:border-indigo-500"
|
||||||
|
>
|
||||||
|
<option value="US_CITIZEN">US Citizen / Authorized to work for any employer</option>
|
||||||
|
<option value="PERMANENT_RESIDENT">Permanent Resident (Green Card Holder)</option>
|
||||||
|
<option value="VISA_SPONSORSHIP_REQUIRED">Require Visa Sponsorship</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Visa Sponsorship Question */}
|
||||||
|
<div>
|
||||||
|
<label className="block font-semibold text-slate-300 mb-1">Will you now or in the future require visa sponsorship?</label>
|
||||||
|
<select
|
||||||
|
value={profile.eeoDeclarations?.requiresSponsorshipNowOrFuture ? 'YES' : 'NO'}
|
||||||
|
onChange={(e) => handleUpdateField('eeoDeclarations', { ...profile.eeoDeclarations, requiresSponsorshipNowOrFuture: e.target.value === 'YES' })}
|
||||||
|
className="w-full px-3 py-2 rounded-xl bg-slate-950 border border-slate-800 text-slate-200 focus:outline-none focus:border-indigo-500"
|
||||||
|
>
|
||||||
|
<option value="NO">No</option>
|
||||||
|
<option value="YES">Yes</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Security Clearance Level */}
|
||||||
|
<div>
|
||||||
|
<label className="block font-semibold text-slate-300 mb-1">Security Clearance Level</label>
|
||||||
|
<select
|
||||||
|
value={profile.eeoDeclarations?.clearanceLevel || 'NONE'}
|
||||||
|
onChange={(e) => handleUpdateField('eeoDeclarations', { ...profile.eeoDeclarations, clearanceLevel: e.target.value })}
|
||||||
|
className="w-full px-3 py-2 rounded-xl bg-slate-950 border border-slate-800 text-slate-200 focus:outline-none focus:border-indigo-500"
|
||||||
|
>
|
||||||
|
<option value="NONE">None / Not Active</option>
|
||||||
|
<option value="SECRET">Secret Clearance</option>
|
||||||
|
<option value="TOP_SECRET">Top Secret (TS)</option>
|
||||||
|
<option value="TS_SCI">TS/SCI</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Gender */}
|
||||||
|
<div>
|
||||||
|
<label className="block font-semibold text-slate-300 mb-1">Gender Identification</label>
|
||||||
|
<select
|
||||||
|
value={profile.eeoDeclarations?.gender || 'MALE'}
|
||||||
|
onChange={(e) => handleUpdateField('eeoDeclarations', { ...profile.eeoDeclarations, gender: e.target.value })}
|
||||||
|
className="w-full px-3 py-2 rounded-xl bg-slate-950 border border-slate-800 text-slate-200 focus:outline-none focus:border-indigo-500"
|
||||||
|
>
|
||||||
|
<option value="MALE">Male</option>
|
||||||
|
<option value="FEMALE">Female</option>
|
||||||
|
<option value="NON_BINARY">Non-Binary / Other</option>
|
||||||
|
<option value="PREFER_NOT_TO_SAY">I decline to disclose</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
{/* Master Professional Summary & Technical Skills */}
|
{/* Master Professional Summary & Technical Skills */}
|
||||||
<div className="lg:col-span-2 p-6 rounded-2xl bg-slate-900 border border-slate-800 shadow-xl space-y-5">
|
<div className="lg:col-span-2 p-6 rounded-2xl bg-slate-900 border border-slate-800 shadow-xl space-y-5">
|
||||||
|
|
||||||
|
|||||||
@@ -67,9 +67,12 @@ export const WalkthroughTailor: React.FC<WalkthroughTailorProps> = ({
|
|||||||
fullName: userProfile.fullName || 'David Kifer',
|
fullName: userProfile.fullName || 'David Kifer',
|
||||||
email: userProfile.email || 'dkifer19@gmail.com',
|
email: userProfile.email || 'dkifer19@gmail.com',
|
||||||
phone: userProfile.phone || '(555) 019-2831',
|
phone: userProfile.phone || '(555) 019-2831',
|
||||||
linkedin: userProfile.linkedin || 'https://linkedin.com/in/david-kifer',
|
linkedin: userProfile.linkedinUrl || 'https://linkedin.com/in/david-kifer',
|
||||||
yearsExperience: '8+ Years',
|
yearsExperience: '10+ Years',
|
||||||
workAuthorization: 'US Citizen / Authorized',
|
workAuthorization: userProfile.eeoDeclarations?.workAuthorization || 'US Citizen / Authorized',
|
||||||
|
veteranStatus: userProfile.eeoDeclarations?.veteranStatus === 'PROTECTED_VETERAN' ? 'Protected Veteran' : 'Not a Veteran',
|
||||||
|
disabilityStatus: userProfile.eeoDeclarations?.disabilityStatus === 'YES_DISABILITY' ? 'Yes, Disability' : 'No Disability',
|
||||||
|
clearanceLevel: userProfile.eeoDeclarations?.clearanceLevel || 'None',
|
||||||
tailoredBulletsText: '',
|
tailoredBulletsText: '',
|
||||||
customCoverLetterText: ''
|
customCoverLetterText: ''
|
||||||
});
|
});
|
||||||
@@ -525,6 +528,26 @@ export const WalkthroughTailor: React.FC<WalkthroughTailorProps> = ({
|
|||||||
className="w-full bg-slate-900 border border-slate-800 rounded-xl px-3 py-2 text-slate-100 focus:border-amber-400 focus:outline-none"
|
className="w-full bg-slate-900 border border-slate-800 rounded-xl px-3 py-2 text-slate-100 focus:border-amber-400 focus:outline-none"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label className="block text-slate-400 mb-1 font-semibold">Veteran Status Declaration</label>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
value={surfingFormData.veteranStatus}
|
||||||
|
onChange={(e) => setSurfingFormData({ ...surfingFormData, veteranStatus: e.target.value })}
|
||||||
|
className="w-full bg-slate-900 border border-slate-800 rounded-xl px-3 py-2 text-slate-100 focus:border-amber-400 focus:outline-none"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label className="block text-slate-400 mb-1 font-semibold">Disability Status Declaration</label>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
value={surfingFormData.disabilityStatus}
|
||||||
|
onChange={(e) => setSurfingFormData({ ...surfingFormData, disabilityStatus: e.target.value })}
|
||||||
|
className="w-full bg-slate-900 border border-slate-800 rounded-xl px-3 py-2 text-slate-100 focus:border-amber-400 focus:outline-none"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -12,6 +12,15 @@ export const INITIAL_USER_PROFILE: UserProfile = {
|
|||||||
experience: [],
|
experience: [],
|
||||||
skills: [],
|
skills: [],
|
||||||
education: [],
|
education: [],
|
||||||
|
eeoDeclarations: {
|
||||||
|
veteranStatus: 'NOT_VETERAN',
|
||||||
|
disabilityStatus: 'NO_DISABILITY',
|
||||||
|
gender: 'MALE',
|
||||||
|
ethnicity: 'WHITE',
|
||||||
|
workAuthorization: 'US_CITIZEN',
|
||||||
|
requiresSponsorshipNowOrFuture: false,
|
||||||
|
clearanceLevel: 'NONE'
|
||||||
|
},
|
||||||
autoApplyCriteria: {
|
autoApplyCriteria: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
targetRoles: [],
|
targetRoles: [],
|
||||||
|
|||||||
+10
-1
@@ -105,7 +105,16 @@ export interface UserProfile {
|
|||||||
year: string;
|
year: string;
|
||||||
}[];
|
}[];
|
||||||
|
|
||||||
// Autonomous settings
|
// Equal Employment Opportunity (EEO) & Legal Declarations
|
||||||
|
eeoDeclarations?: {
|
||||||
|
veteranStatus: 'NOT_VETERAN' | 'PROTECTED_VETERAN' | 'PREFER_NOT_TO_SAY';
|
||||||
|
disabilityStatus: 'NO_DISABILITY' | 'YES_DISABILITY' | 'PREFER_NOT_TO_SAY';
|
||||||
|
gender: 'MALE' | 'FEMALE' | 'NON_BINARY' | 'PREFER_NOT_TO_SAY';
|
||||||
|
ethnicity: 'WHITE' | 'HISPANIC' | 'BLACK' | 'ASIAN' | 'TWO_OR_MORE' | 'PREFER_NOT_TO_SAY';
|
||||||
|
workAuthorization: 'US_CITIZEN' | 'PERMANENT_RESIDENT' | 'VISA_SPONSORSHIP_REQUIRED' | 'NEED_SPONSORSHIP';
|
||||||
|
requiresSponsorshipNowOrFuture: boolean;
|
||||||
|
clearanceLevel?: 'NONE' | 'SECRET' | 'TOP_SECRET' | 'TS_SCI';
|
||||||
|
};
|
||||||
autoApplyCriteria: {
|
autoApplyCriteria: {
|
||||||
enabled: boolean;
|
enabled: boolean;
|
||||||
targetRoles: string[];
|
targetRoles: string[];
|
||||||
|
|||||||
Reference in New Issue
Block a user