import React from 'react'; export enum Theme { Light = 'light', Dark = 'dark', System = 'system', } export interface Employee { id: string; name: string; initials: string; email: string; department?: string; role?: string; isOwner?: boolean; // Company owner/HR access } export interface Report { employeeId: string; department: string; role: string; roleAndOutput: { responsibilities: string; clarityOnRole: string; selfRatedOutput: string; recurringTasks: string; }; insights: { personalityTraits: string; psychologicalIndicators: string[]; selfAwareness: string; emotionalResponses: string; growthDesire: string; strengths?: string[]; weaknesses?: string[]; value?: number; }; actionableItems?: { id: string; title: string; impact: 'High' | 'Medium' | 'Low'; effort: 'High' | 'Medium' | 'Low'; description: string; }[]; roleFitCandidates?: { employeeId: string; roles: string[]; rationale: string; score: number; }[]; potentialExits?: { employeeId: string; risk: 'Low' | 'Medium' | 'High'; reason: string; }[]; traitWeighting?: { trait: string; weight: number; rationale?: string; }[]; strengths: string[]; weaknesses: { isCritical: boolean; description: string; }[]; opportunities: { roleAdjustment: string; accountabilitySupport: string; }; risks: string[]; recommendation: { action: 'Keep' | 'Restructure' | 'Terminate'; details: string[]; }; grading: { department: string; lead: string; support: string; grade: string; comment: string; scores: { subject: string; value: number; fullMark: number; }[]; }[]; suitabilityScore?: number; retentionRisk?: 'Low' | 'Medium' | 'High'; costEffectiveness?: 'Underperforming' | 'Aligned' | 'High Value'; } export interface Submission { employeeId: string; answers: { question: string; answer: string; }[]; } export interface FaqItem { question: string; answer: string; } export interface NavItem { href: string; label: string; icon: (props: { className?: string }) => React.ReactNode; } export interface ChatMessage { id: string; role: 'user' | 'assistant'; text: string; isLoading?: boolean; } export interface CompanyReport { id: string; createdAt: number; overview: { totalEmployees: number; departmentBreakdown: { department: string; count: number; }[]; submissionRate: number; // percentage of employees who submitted lastUpdated: number; // Optional aggregate metrics averagePerformanceScore?: number; riskLevel?: 'Low' | 'Medium' | 'High'; }; // Personnel lifecycle personnelChanges: { newHires: { name: string; department: string; role: string; impact?: string }[]; promotions: { name: string; fromRole: string; toRole: string; impact?: string }[]; departures: { name: string; department: string; reason: string; impact?: string }[]; }; // Backward-compatible flattened list (optional) keyPersonnelChanges?: Array<{ employeeName: string; role: string; department: string; changeType: 'newHire' | 'promotion' | 'departure'; impact?: string }>; // Hiring / talent gaps immediateHiringNeeds: { department: string; role: string; priority: 'High' | 'Medium' | 'Low'; reasoning: string; urgency?: 'high' | 'medium' | 'low'; // UI alias }[]; // Operating plan (dual naming for UI compatibility) operatingPlan: { nextQuarterGoals: string[]; keyInitiatives: string[]; resourceNeeds: string[]; riskMitigation: string[]; }; forwardOperatingPlan?: { // deprecated; kept for existing calls until phased out quarterlyGoals: string[]; resourceNeeds: string[]; riskMitigation: string[]; }; // Strengths / risks organizationalStrengths: Array<{ icon?: string; area: string; description: string }>; organizationalRisks: string[]; organizationalImpactSummary?: string; // Grading: array + map for UI gradingBreakdown: { category: string; value: number; // 0-100 rationale?: string; }[]; gradingOverview?: Record; // legacy (0-5 scale expected by old UI) executiveSummary: string; } export interface CompanyReportSummary { id: string; createdAt: number; summary: string; // For backwards compatibility }