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
+35 -33
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>
<button <div className="relative">
type="button" <button
onClick={exportChapter} type="button"
className="rounded-md bg-sky-500 px-4 py-2 text-sm font-medium text-white shadow-sm transition hover:bg-sky-400" onClick={() => setExportMenuOpen((v) => !v)}
> 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 HTML >
</button> Export
<button </button>
type="button" {exportMenuOpen && (
onClick={exportChapterDocx} <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">
className="rounded-md bg-emerald-500 px-4 py-2 text-sm font-medium text-white shadow-sm transition hover:bg-emerald-400" <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 DOCX 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={exportChapterMarkdown} Export DOCX
title="Download as a .md file — handy for Obsidian, Notion, or any Markdown-based notes app" </button>
className="rounded-md bg-slate-600 px-4 py-2 text-sm font-medium text-white shadow-sm transition hover:bg-slate-500" <button type="button" onClick={() => { exportChapterMarkdown(); setExportMenuOpen(false); }}
> title="Handy for Obsidian, Notion, or any Markdown-based notes app"
Export Markdown className="block w-full px-4 py-2 text-left text-sm text-slate-700 hover:bg-slate-50">
</button> Export Markdown
<button </button>
type="button" <button type="button" onClick={() => { printChapterPdf(); setExportMenuOpen(false); }}
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="block w-full px-4 py-2 text-left text-sm text-slate-700 hover:bg-slate-50">
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" 🖨 Print / Save PDF
> </button>
🖨 Print / Save PDF </div>
</button> )}
</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>