PR-8c (part 1) — the UI that makes the offline store + download service (#651) usable.
`OfflineDownloadButtonComponent` on each reading-journey book card, with four states driven by `BookOfflineDownloadService` + `BookOfflineStoreService`:
- **idle** → download icon (starts the download),
- **downloading** → live determinate spinner + %,
- **downloaded** → offline-pin icon (tap to remove the offline copy),
- **stale** → sync-problem icon when the server's sha256 changed (tap to re-download).
Click handlers stop propagation so the control never opens the book. i18n en + es.
**Follow-up (PR-8c rest):** profile offline-books section (list + delete + quota bar); reader offline fallback + blob-URL resource rewriting; `book-reader` prefers stored Blob; `auth.guard` offline entry.
PR: spikersoft-angular `feat/reader-offline-download-button`.
Verified complete: spikersoft-angular PR #226 merged ('download-for-offline button on book cards'); the offline.download/downloading/removeDownload i18n strings ship in the live bundle. Closing (ticket-hygiene sweep).
Verified complete: spikersoft-angular PR #226 merged ('download-for-offline button on book cards'); the offline.download/downloading/removeDownload i18n strings ship in the live bundle. Closing (ticket-hygiene sweep).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
PR-8c (part 1) — the UI that makes the offline store + download service (#651) usable.
OfflineDownloadButtonComponenton each reading-journey book card, with four states driven byBookOfflineDownloadService+BookOfflineStoreService:Click handlers stop propagation so the control never opens the book. i18n en + es.
Follow-up (PR-8c rest): profile offline-books section (list + delete + quota bar); reader offline fallback + blob-URL resource rewriting;
book-readerprefers stored Blob;auth.guardoffline entry.PR: spikersoft-angular
feat/reader-offline-download-button.Verified complete: spikersoft-angular PR #226 merged ('download-for-offline button on book cards'); the offline.download/downloading/removeDownload i18n strings ship in the live bundle. Closing (ticket-hygiene sweep).