Remove ExportBook component and integrate new export workflows

- Deleted `ExportBook` component and its usage in `BookCard.tsx`.
- Integrated improved book export workflows in `BookSettingOption` for better user experience.
- Updated database models and repositories to support export options with chapter/version selection.
- Added localization support for export-related messages and tooltips.
- Upgraded dependencies to include libraries required for export formats (e.g., DOCX, PDF, EPUB).
- Bumped app version to 0.4.1.
This commit is contained in:
natreex
2026-03-05 16:31:56 -05:00
parent 94cac463fb
commit ceaecb19fc
16 changed files with 780 additions and 245 deletions

View File

@@ -207,6 +207,11 @@
"title": "Create a series",
"description": "Create a series to group multiple books.",
"badge": "SERIES"
},
"importBook": {
"title": "Import a book",
"description": "Import a book from a DOCX file.",
"badge": "IMPORT"
}
}
},
@@ -640,9 +645,27 @@
"objectsList": "Objects list",
"bookGoals": "Book goals",
"quillsense": "QuillSense Settings",
"export": "Export Book",
"save": "Save",
"notAvailable": "Option not available"
},
"exportOption": {
"title": "Export Your Book",
"description": "Choose the format and chapters to export.",
"format": "Format",
"selectFormat": "Select a format",
"chapters": "Chapters",
"selectAll": "Select all",
"deselectAll": "Deselect all",
"version": "Version",
"export": "Export",
"exporting": "Exporting...",
"noChapters": "No chapters available for export.",
"success": "Book exported successfully!",
"cancelled": "Export cancelled.",
"error": "Error exporting the book.",
"loadingChapters": "Loading chapters..."
},
"noBookHome": {
"title": "Your work is waiting for its first words",
"description": "This work does not have any chapters yet. To start writing, create your first chapter.",
@@ -987,6 +1010,7 @@
"characters": "Characters",
"spells": "Spell Book",
"quillsense": "QuillSense (AI)",
"export": "Export",
"objects": "Objects",
"goals": "Goals"
},
@@ -1333,5 +1357,51 @@
"enable_characters": "Enable character management for this book",
"enable_worlds": "Enable world management for this book",
"enable_locations": "Enable location management for this book"
},
"importBook": {
"header": {
"title": "Import a Book"
},
"pickFile": "Choose a DOCX file",
"parsing": "Analyzing file...",
"chaptersDetected": "{count} chapters detected",
"noChaptersDetected": "No chapters detected in the file",
"fields": {
"title": {
"label": "Book Title",
"placeholder": "Enter the title"
},
"subTitle": {
"label": "Subtitle",
"placeholder": "Enter the subtitle"
},
"summary": {
"label": "Summary",
"placeholder": "Enter a summary"
},
"type": {
"label": "Book Type"
},
"version": {
"label": "Chapter Version"
}
},
"chapters": {
"title": "Chapters to import",
"words": "{count} words",
"selectAll": "Select all",
"deselectAll": "Deselect all"
},
"submit": "Import",
"importing": "Importing...",
"success": "Book imported successfully",
"error": {
"titleRequired": "Book title is required",
"typeRequired": "Book type is required",
"noChaptersSelected": "Select at least one chapter",
"parseFailed": "Error analyzing the file",
"importFailed": "Error during import",
"invalidFormat": "Invalid format. Only DOCX files are accepted"
}
}
}

View File

@@ -207,6 +207,11 @@
"title": "Créer une série",
"description": "Créez une série pour regrouper plusieurs livres.",
"badge": "SÉRIE"
},
"importBook": {
"title": "Importer une oeuvre",
"description": "Importez un livre à partir d'un fichier DOCX.",
"badge": "IMPORT"
}
}
},
@@ -631,9 +636,27 @@
"objectsList": "Liste des objets",
"bookGoals": "Objectifs du livre",
"quillsense": "Parametres QuillSense",
"export": "Exporter le livre",
"save": "Sauvegarder",
"notAvailable": "Option non disponible"
},
"exportOption": {
"title": "Exporter votre livre",
"description": "Choisissez le format et les chapitres à exporter.",
"format": "Format",
"selectFormat": "Sélectionner un format",
"chapters": "Chapitres",
"selectAll": "Tout sélectionner",
"deselectAll": "Tout désélectionner",
"version": "Version",
"export": "Exporter",
"exporting": "Exportation en cours...",
"noChapters": "Aucun chapitre disponible pour l'export.",
"success": "Livre exporté avec succès !",
"cancelled": "Export annulé.",
"error": "Erreur lors de l'exportation du livre.",
"loadingChapters": "Chargement des chapitres..."
},
"noBookHome": {
"title": "Votre œuvre attend ses premiers mots",
"description": "Cette œuvre n'a pas encore de chapitres. Pour commencer à écrire, créez votre premier chapitre.",
@@ -953,7 +976,8 @@
"spells": "Sortilèges",
"objects": "Objets",
"goals": "Buts",
"quillsense": "QuillSense"
"quillsense": "QuillSense",
"export": "Export"
},
"basicInformationSetting": {
"error": {
@@ -1336,5 +1360,51 @@
"enable_characters": "Activer la gestion des personnages pour ce livre",
"enable_worlds": "Activer la gestion des mondes pour ce livre",
"enable_locations": "Activer la gestion des lieux pour ce livre"
},
"importBook": {
"header": {
"title": "Importer un livre"
},
"pickFile": "Choisir un fichier DOCX",
"parsing": "Analyse du fichier en cours...",
"chaptersDetected": "{count} chapitres détectés",
"noChaptersDetected": "Aucun chapitre détecté dans le fichier",
"fields": {
"title": {
"label": "Titre du livre",
"placeholder": "Entrez le titre"
},
"subTitle": {
"label": "Sous-titre",
"placeholder": "Entrez le sous-titre"
},
"summary": {
"label": "Résumé",
"placeholder": "Entrez un résumé"
},
"type": {
"label": "Type de livre"
},
"version": {
"label": "Version des chapitres"
}
},
"chapters": {
"title": "Chapitres à importer",
"words": "{count} mots",
"selectAll": "Tout sélectionner",
"deselectAll": "Tout désélectionner"
},
"submit": "Importer",
"importing": "Import en cours...",
"success": "Livre importé avec succès",
"error": {
"titleRequired": "Le titre du livre est requis",
"typeRequired": "Le type de livre est requis",
"noChaptersSelected": "Sélectionnez au moins un chapitre",
"parseFailed": "Erreur lors de l'analyse du fichier",
"importFailed": "Erreur lors de l'import",
"invalidFormat": "Format invalide. Seuls les fichiers DOCX sont acceptés"
}
}
}