From 8c9050638000748730eb8c02bc249a269fc9baca Mon Sep 17 00:00:00 2001 From: DaKheera47 Date: Mon, 15 Dec 2025 17:32:22 +0000 Subject: [PATCH] copy job info --- .../src/client/components/JobCard.tsx | 17 +++ .../src/client/components/JobTable.tsx | 17 +++ orchestrator/src/client/lib/jobCopy.ts | 110 ++++++++++++++++++ 3 files changed, 144 insertions(+) create mode 100644 orchestrator/src/client/lib/jobCopy.ts diff --git a/orchestrator/src/client/components/JobCard.tsx b/orchestrator/src/client/components/JobCard.tsx index 9642363..cde1b99 100644 --- a/orchestrator/src/client/components/JobCard.tsx +++ b/orchestrator/src/client/components/JobCard.tsx @@ -6,6 +6,7 @@ import React from "react"; import { Calendar, CheckCircle2, + Copy, DollarSign, Download, ExternalLink, @@ -15,10 +16,12 @@ import { RefreshCcw, XCircle, } from "lucide-react"; +import { toast } from "sonner"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"; +import { copyTextToClipboard, formatJobForLlmContext } from "@client/lib/jobCopy"; import type { Job } from "../../shared/types"; import { ScoreIndicator } from "./ScoreIndicator"; import { StatusBadge } from "./StatusBadge"; @@ -68,6 +71,15 @@ export const JobCard: React.FC = ({ const pdfHref = `/pdfs/resume_${job.id}.pdf`; const deadline = formatDate(job.deadline); + const handleCopyInfo = async () => { + try { + await copyTextToClipboard(formatJobForLlmContext(job)); + toast.success("Copied job info", { description: "LLM-ready context copied to clipboard." }); + } catch { + toast.error("Could not copy job info"); + } + }; + return ( @@ -132,6 +144,11 @@ export const JobCard: React.FC = ({ + + {hasPdf && (