diff --git a/app/(dashboard)/interviews/page.tsx b/app/(dashboard)/interviews/page.tsx index 62c5b64..7e7408c 100644 --- a/app/(dashboard)/interviews/page.tsx +++ b/app/(dashboard)/interviews/page.tsx @@ -415,269 +415,288 @@ export default function InterviewsPage() {

) : ( -
+
{/* COLUMN 1: Open Positions Sidebar */} -
-

- {t.openPositions} -

- - +
+
+

+ {t.openPositions} +

+ + - {jobs.map((job) => { - const count = getInterviewCountForJob(job.id); - return ( - - ); - })} + {jobs.map((job) => { + const count = getInterviewCountForJob(job.id); + return ( + + ); + })} +
{/* COLUMN 2: Candidates List */} -
-
-

- {t.candidates} -

-
+
+
+
+

+ {t.candidates} +

+
- {sortedInterviews.length === 0 ? ( -

- {t.noCandidatesInStage} -

- ) : ( -
- {sortedInterviews.map((interview) => ( -
setSelectedInterviewId(interview.id)} - className={`cursor-pointer p-4 rounded-lg shadow-sm border transition duration-200 relative ${ - selectedInterviewId === interview.id - ? "bg-slate-50 dark:bg-slate-800/40 border-blue-300 dark:border-blue-800" - : "bg-white dark:bg-slate-900 border-slate-200 dark:border-slate-800 hover:border-slate-300 dark:hover:border-slate-700" - } ${ - interview.pinned - ? "border-l-4 border-l-blue-600 pl-3" - : "border-l border-l-slate-200 dark:border-l-slate-800 pl-4" - }`} - > -
-
-

- {interview.candidates?.name || t.unknownCandidate} -

-

- {interview.jobs?.title || t.unknownJob} -

-
- -
- - {translateStage(interview.stage, lang)} - + {sortedInterviews.length === 0 ? ( +

+ {t.noCandidatesInStage} +

+ ) : ( +
+ {sortedInterviews.map((interview) => ( +
setSelectedInterviewId(interview.id)} + className={`cursor-pointer p-4 rounded-lg shadow-sm border transition duration-200 relative ${ + selectedInterviewId === interview.id + ? "bg-slate-50 dark:bg-slate-800/40 border-blue-300 dark:border-blue-800" + : "bg-white dark:bg-slate-900 border-slate-200 dark:border-slate-800 hover:border-slate-300 dark:hover:border-slate-700" + } ${ + interview.pinned + ? "border-l-4 border-l-blue-600 pl-3" + : "border-l border-l-slate-200 dark:border-l-slate-800 pl-4" + }`} + > +
+
+

+ {interview.candidates?.name || t.unknownCandidate} +

+

+ {interview.jobs?.title || t.unknownJob} +

+
+
+ + {translateStage(interview.stage, lang)} + + + +
+
+
+ ))} +
+ )} +
+
+ + {/* COLUMN 3: Candidate Details Pane */} +
+
+ {!selectedInterview ? ( +
+ + + +

+ {t.selectCandidateDetails} +

+
+ ) : ( +
+ {/* Details Header */} +
+

+ {selectedInterview.candidates?.name || t.unknownCandidate} +

+ +
+ + {t.role}: {selectedInterview.jobs?.title || t.unknownJob} + + | + + {t.dateScheduled}: {new Date(selectedInterview.interview_date).toLocaleString()} + +
+
+ + {/* Stage Dropdown Selector */} +
+ + +
+ + {/* Comments Thread System */} +
+
+

+ {t.interviewFeedback} +

+ + {/* AI Suggestion Button */} + +
+ + {/* Comment List */} +
+ {selectedInterviewComments.length === 0 ? ( +

+ {t.noCommentsYet} +

+ ) : ( + selectedInterviewComments.map((comment) => { + const isCollapsed = collapsedComments[comment.id] || false; + const isAiComment = comment.isAi || comment.author === "AI Assistant" || comment.author === "Asistente IA"; + return ( +
+
+ + {comment.author || t.postedByAgent} + +
+ + {new Date(comment.timestamp).toLocaleString()} + + +
+
+ + {!isCollapsed && ( +
+ {comment.text} +
+ )} +
+ ); + }) + )} +
+ + {/* Add Comment Input */} +
+