// The "Save for offline" control: a button, or progress with a Stop button while a download runs. import { canSaveOffline } from '../utils/offline.js'; export function DownloadProgress({ job, onCancel }) { const pct = job.total ? Math.round((job.done / job.total) * 100) : 0; return (
Saving {job.label}… {job.done} of {job.total}
); } // One book of a translation. export function SaveBookOffline({ offline, translation, book, name }) { if (!canSaveOffline(translation)) { return

Saving for offline works with the BSB and NET. The {translation}’s licence doesn’t allow it.

; } if (offline.job) return
; const saved = offline.isSaved(translation, book); return (
{saved ? `✓ ${name} (${translation}) is saved for offline` : `Read ${name} without a connection`} {!saved && ( )}
); }