Fix login quote to BSB wording, consolidate exports into one dropdown

The 2 Timothy 2:15 quote on the login screen was KJV phrasing ("shew
thyself", "needeth not") in an app that otherwise uses BSB throughout
— replaced with the actual BSB text (fetched from the same
bible.helloao.org API the app already calls) and labeled it as such.

The study page header had four separate export buttons (HTML, DOCX,
Markdown, Print/PDF) crowding the toolbar. Consolidated into a single
"Export" dropdown, same pattern as the existing Share panel.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
nmemmert
2026-07-06 14:01:10 -04:00
parent 60f3e4d489
commit f853d5e301
+23 -21
View File
@@ -1065,6 +1065,7 @@ const App = () => {
const [podcastNameInput, setPodcastNameInput] = useState(''); const [podcastNameInput, setPodcastNameInput] = useState('');
const [podcastNameSaving, setPodcastNameSaving] = useState(false); const [podcastNameSaving, setPodcastNameSaving] = useState(false);
const [podcastNameSaved, setPodcastNameSaved] = useState(false); const [podcastNameSaved, setPodcastNameSaved] = useState(false);
const [exportMenuOpen, setExportMenuOpen] = useState(false);
// Read-only share links // Read-only share links
const [shareToken, setShareToken] = useState(null); const [shareToken, setShareToken] = useState(null);
const [sharePanelOpen, setSharePanelOpen] = useState(false); const [sharePanelOpen, setSharePanelOpen] = useState(false);
@@ -3478,36 +3479,37 @@ const deleteProject = (id) => {
> >
🗣 Pronunciation Guide 🗣 Pronunciation Guide
</button> </button>
<div className="relative">
<button <button
type="button" type="button"
onClick={exportChapter} onClick={() => setExportMenuOpen((v) => !v)}
className="rounded-md bg-sky-500 px-4 py-2 text-sm font-medium text-white shadow-sm transition hover:bg-sky-400" className="flex items-center gap-1.5 rounded-md bg-sky-500 px-4 py-2 text-sm font-medium text-white shadow-sm transition hover:bg-sky-400"
> >
Export
</button>
{exportMenuOpen && (
<div className="absolute left-0 top-full z-20 mt-2 w-56 overflow-hidden rounded-2xl border border-slate-200 bg-white py-1.5 text-left shadow-lg">
<button type="button" onClick={() => { exportChapter(); setExportMenuOpen(false); }}
className="block w-full px-4 py-2 text-left text-sm text-slate-700 hover:bg-slate-50">
Export HTML Export HTML
</button> </button>
<button <button type="button" onClick={() => { exportChapterDocx(); setExportMenuOpen(false); }}
type="button" className="block w-full px-4 py-2 text-left text-sm text-slate-700 hover:bg-slate-50">
onClick={exportChapterDocx}
className="rounded-md bg-emerald-500 px-4 py-2 text-sm font-medium text-white shadow-sm transition hover:bg-emerald-400"
>
Export DOCX Export DOCX
</button> </button>
<button <button type="button" onClick={() => { exportChapterMarkdown(); setExportMenuOpen(false); }}
type="button" title="Handy for Obsidian, Notion, or any Markdown-based notes app"
onClick={exportChapterMarkdown} className="block w-full px-4 py-2 text-left text-sm text-slate-700 hover:bg-slate-50">
title="Download as a .md file — handy for Obsidian, Notion, or any Markdown-based notes app"
className="rounded-md bg-slate-600 px-4 py-2 text-sm font-medium text-white shadow-sm transition hover:bg-slate-500"
>
Export Markdown Export Markdown
</button> </button>
<button <button type="button" onClick={() => { printChapterPdf(); setExportMenuOpen(false); }}
type="button"
onClick={printChapterPdf}
title="Opens a print-friendly version in a new tab — choose 'Save as PDF' in the print dialog" title="Opens a print-friendly version in a new tab — choose 'Save as PDF' in the print dialog"
className="rounded-md border border-slate-300 bg-white px-4 py-2 text-sm font-medium text-slate-700 shadow-sm transition hover:bg-slate-50" className="block w-full px-4 py-2 text-left text-sm text-slate-700 hover:bg-slate-50">
>
🖨 Print / Save PDF 🖨 Print / Save PDF
</button> </button>
</div>
)}
</div>
<div className="relative"> <div className="relative">
<button <button
type="button" type="button"
@@ -3755,9 +3757,9 @@ const deleteProject = (id) => {
<li className="flex items-center gap-3"><span className="text-lg">🔒</span> Your studies stay private to your account, with optional 2FA</li> <li className="flex items-center gap-3"><span className="text-lg">🔒</span> Your studies stay private to your account, with optional 2FA</li>
</ul> </ul>
<blockquote className="mt-8 border-l-2 border-slate-700 pl-4 text-sm italic text-slate-400"> <blockquote className="mt-8 border-l-2 border-slate-700 pl-4 text-sm italic text-slate-400">
"Study to shew thyself approved unto God, a workman that needeth not to be ashamed, rightly "Make every effort to present yourself approved to God, an unashamed workman who accurately
dividing the word of truth." handles the word of truth."
<footer className="mt-1 not-italic text-slate-500"> 2 Timothy 2:15</footer> <footer className="mt-1 not-italic text-slate-500"> 2 Timothy 2:15 (BSB)</footer>
</blockquote> </blockquote>
</div> </div>