Postpartum Recovery Planner

Postpartum Recovery Planner

Your personal guide to a healthy and mindful recovery.

Recovery Dashboard

Baby's Birth Date

Set this to track your postpartum weeks.

Latest Mood Entry

No mood logged yet.

Last Feeding Logged

No feeding logged yet.

Next Appointment

No upcoming appointments.

Daily Log

Feeding Log

Logged Entries

Your daily logs will appear here.

Appointments Tracker

Add New Appointment

Upcoming Appointments

Your appointments will appear here.

My Support Team

Add a Contact

Contact List

Your support contacts will appear here.

My Postpartum Recovery Plan

Review your consolidated plan above. When you're ready, you can download it as a PDF.

Feeding: ${l.feedTime}, ${l.feedType}, ${l.feedAmount}

` : ''}
`).join('')}
` : `

No Daily Logs Recorded

`; summaryResourcesContainer.innerHTML = plannerData.resources.length > 0 ? `

My Support Team

${plannerData.resources.map(r => `

${r.name} - ${r.role}

${r.phone || ''} ${r.email ? `| ${r.email}` : ''}

`).join('')}
` : `

No Support Contacts Added

`; }; downloadPdfBtn.addEventListener('click', () => { const content = document.getElementById('pdf-content'); if (!content) return; pdfLoader.classList.remove('hidden'); downloadPdfBtn.disabled = true; html2canvas(content, { scale: 2, useCORS: true, backgroundColor: '#ffffff' }) .then(canvas => { const imgData = canvas.toDataURL('image/png'); const pdf = new jsPDF({ orientation: 'p', unit: 'mm', format: 'a4' }); const pdfWidth = pdf.internal.pageSize.getWidth(); const pdfHeight = pdf.internal.pageSize.getHeight(); const ratio = canvas.width / canvas.height; const imgWidth = pdfWidth - 20; const imgHeight = imgWidth / ratio; let heightLeft = imgHeight; let position = 10; pdf.addImage(imgData, 'PNG', 10, position, imgWidth, imgHeight); heightLeft -= (pdfHeight - 20); while (heightLeft > 0) { position = -heightLeft - 10; pdf.addPage(); pdf.addImage(imgData, 'PNG', 10, position, imgWidth, imgHeight); heightLeft -= (pdfHeight - 20); } pdf.save('Postpartum-Recovery-Plan.pdf'); }) .catch(err => console.error("PDF Generation Error:", err)) .finally(() => { pdfLoader.classList.add('hidden'); downloadPdfBtn.disabled = false; }); }); // --- UTILITY FUNCTIONS --- const formatDate = (dateString) => { if (!dateString) return 'N/A'; const date = new Date(dateString + 'T00:00:00'); return date.toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: 'numeric' }); }; // --- RUN INITIALIZATION --- initialize(); });
Scroll to Top