"use client";
import { useState } from "react";
import Link from "next/link";
import { marked } from "marked";
export default function ResumeEditor({ resume }: { resume: { id: string; name: string; markdown: string } }) {
const [md, setMd] = useState(resume.markdown);
const [saved, setSaved] = useState(true);
const [saving, setSaving] = useState(false);
const [preview, setPreview] = useState(true);
async function save() {
setSaving(true);
try {
await fetch(`/api/resumes/${resume.id}`, {
method: "PATCH",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ markdown: md }),
});
setSaved(true);
} finally {
setSaving(false);
}
}
function printResume() {
const w = window.open("", "_blank");
if (!w) return;
w.document.write(`
${resume.name}${marked.parse(md)}`);
w.document.close();
setTimeout(() => w.print(), 300);
}
return (
{/* Top Navigation & Toolbar */}
Back to Resumes
{resume.name}
{saved ? (
Saved
) : (
Unsaved changes
)}
{/* Action Toolbar Buttons */}
{/* Editor & Preview Split Grid */}
{/* Monospace Markdown Editor */}
Markdown Source
{md.length} characters
{/* Live Resume Document Preview */}
{preview && (
Document Live Preview
Formatted Output
)}
);
}