From c9e01ce8feb3e794b083b50a09123e29a60fed0d Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Sat, 18 Apr 2026 21:39:28 +0000 Subject: [PATCH 1/3] Changes Co-authored-by: renee-png <262607627+renee-png@users.noreply.github.com> --- src/components/forms/letter-generator.tsx | 31 ++++++++++++++++------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/src/components/forms/letter-generator.tsx b/src/components/forms/letter-generator.tsx index 8c492f7..d451065 100644 --- a/src/components/forms/letter-generator.tsx +++ b/src/components/forms/letter-generator.tsx @@ -52,6 +52,8 @@ export function LetterGenerator() { const [contacts, setContacts] = useState([]); const [caseContactIds, setCaseContactIds] = useState>(new Set()); const [recipientId, setRecipientId] = useState(""); + const [recipientAddress, setRecipientAddress] = useState(""); + const [recipientEdited, setRecipientEdited] = useState(false); const [firm, setFirm] = useState(null); const [logoDataUrl, setLogoDataUrl] = useState(null); const [attorneyName, setAttorneyName] = useState(""); @@ -76,6 +78,12 @@ export function LetterGenerator() { return { linked, others }; }, [contacts, caseContactIds]); + // Auto-fill recipient address block from selected contact (unless user edited it). + useEffect(() => { + if (recipientEdited) return; + setRecipientAddress(contactMailingLines(recipient).join("\n")); + }, [recipient, recipientEdited]); + useEffect(() => { fetchFirm().then(async (f) => { setFirm(f); @@ -244,13 +252,17 @@ export function LetterGenerator() { doc.text(fmtDateLong(date), centerX, y, { align: "center" }); y += 28; - // ----- Recipient (from selected contact) ----- + // ----- Recipient (editable address block) ----- doc.setFont(bodyFont, "normal"); doc.setFontSize(bodyFontSize); - contactMailingLines(recipient).forEach((l) => { - doc.text(l, margin, y); - y += lh - 1; - }); + recipientAddress + .split("\n") + .map((l) => l.trimEnd()) + .filter((l) => l.length > 0) + .forEach((l) => { + doc.text(l, margin, y); + y += lh - 1; + }); // Certified mail line (right-aligned, italic) — only when a number is provided if (certifiedMailNumber.trim() && template.showCertifiedMail !== false) { @@ -264,11 +276,12 @@ export function LetterGenerator() { y += 18; if (renderedSubject) { - doc.setFont(bodyFont, "bold"); - const subjLines = doc.splitTextToSize(`Re: ${renderedSubject}`, maxW); - doc.text(subjLines, margin, y); - y += subjLines.length * lh + 14; + // Re: line — not bold, indented from the left margin. doc.setFont(bodyFont, "normal"); + const reIndent = 72; // ~1 inch indent + const subjLines = doc.splitTextToSize(`Re: ${renderedSubject}`, maxW - reIndent); + doc.text(subjLines, margin + reIndent, y); + y += subjLines.length * lh + 14; } // ----- Body (reserve room for footer) ----- From 4c63a1d34a5f1a28138e30054c283a233dfdafc9 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Sat, 18 Apr 2026 21:39:40 +0000 Subject: [PATCH 2/3] Changes Co-authored-by: renee-png <262607627+renee-png@users.noreply.github.com> --- src/components/forms/letter-generator.tsx | 30 ++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/components/forms/letter-generator.tsx b/src/components/forms/letter-generator.tsx index d451065..4298736 100644 --- a/src/components/forms/letter-generator.tsx +++ b/src/components/forms/letter-generator.tsx @@ -410,9 +410,33 @@ export function LetterGenerator() { -
-
- +
+
+ + {recipientEdited && recipient ? ( + + ) : null} +
+