diff --git a/components.d.ts b/components.d.ts index 54a4847..12d69fb 100644 --- a/components.d.ts +++ b/components.d.ts @@ -26,6 +26,10 @@ declare module 'vue' { AppStepper: typeof import('./src/@core/components/AppStepper.vue')['default'] AppTextarea: typeof import('./src/@core/components/app-form-elements/AppTextarea.vue')['default'] AppTextField: typeof import('./src/@core/components/app-form-elements/AppTextField.vue')['default'] + BookActions: typeof import('./src/components/bookdetail/BookActions.vue')['default'] + BookDetails: typeof import('./src/components/bookdetail/BookDetails.vue')['default'] + BookShops: typeof import('./src/components/bookdetail/BookShops.vue')['default'] + BookStats: typeof import('./src/components/bookdetail/BookStats.vue')['default'] Buchkarten: typeof import('./src/components/Buchkarten.vue')['default'] Buecherdatenbank: typeof import('./src/pages/buecherdatenbank.vue')['default'] BuyNow: typeof import('./src/@core/components/BuyNow.vue')['default'] @@ -48,17 +52,22 @@ declare module 'vue' { ErrorHeader: typeof import('./src/components/ErrorHeader.vue')['default'] Fieberkurve: typeof import('./src/components/Fieberkurve.vue')['default'] I18n: typeof import('./src/@core/components/I18n.vue')['default'] + MoreBooksFromAuthor: typeof import('./src/components/bookdetail/MoreBooksFromAuthor.vue')['default'] MoreBtn: typeof import('./src/@core/components/MoreBtn.vue')['default'] Notifications: typeof import('./src/@core/components/Notifications.vue')['default'] PaymentProvidersDialog: typeof import('./src/components/dialogs/PaymentProvidersDialog.vue')['default'] PricingPlanDialog: typeof import('./src/components/dialogs/PricingPlanDialog.vue')['default'] ProductDescriptionEditor: typeof import('./src/@core/components/ProductDescriptionEditor.vue')['default'] ReferAndEarnDialog: typeof import('./src/components/dialogs/ReferAndEarnDialog.vue')['default'] + ReviewForm: typeof import('./src/components/bookdetail/ReviewForm.vue')['default'] + Reviews: typeof import('./src/components/bookdetail/Reviews.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] ScrollToTop: typeof import('./src/@core/components/ScrollToTop.vue')['default'] ShareProjectDialog: typeof import('./src/components/dialogs/ShareProjectDialog.vue')['default'] + ShopButtons: typeof import('./src/components/bookdetail/ShopButtons.vue')['default'] Shortcuts: typeof import('./src/@core/components/Shortcuts.vue')['default'] + SimilarBooks: typeof import('./src/components/bookdetail/SimilarBooks.vue')['default'] TablePagination: typeof import('./src/@core/components/TablePagination.vue')['default'] TheCustomizer: typeof import('./src/@core/components/TheCustomizer.vue')['default'] ThemeSwitcher: typeof import('./src/@core/components/ThemeSwitcher.vue')['default'] diff --git a/src/components/bookdetail/BookActions.vue b/src/components/bookdetail/BookActions.vue new file mode 100644 index 0000000..f78266f --- /dev/null +++ b/src/components/bookdetail/BookActions.vue @@ -0,0 +1,75 @@ + + + diff --git a/src/components/bookdetail/BookDetails.vue b/src/components/bookdetail/BookDetails.vue new file mode 100644 index 0000000..da7a2f5 --- /dev/null +++ b/src/components/bookdetail/BookDetails.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/components/bookdetail/BookShops.vue b/src/components/bookdetail/BookShops.vue new file mode 100644 index 0000000..4e8a6bb --- /dev/null +++ b/src/components/bookdetail/BookShops.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/src/components/bookdetail/BookStats.vue b/src/components/bookdetail/BookStats.vue new file mode 100644 index 0000000..17a1e0a --- /dev/null +++ b/src/components/bookdetail/BookStats.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/bookdetail/MoreBooksFromAuthor.vue b/src/components/bookdetail/MoreBooksFromAuthor.vue new file mode 100644 index 0000000..cd6f6ef --- /dev/null +++ b/src/components/bookdetail/MoreBooksFromAuthor.vue @@ -0,0 +1,48 @@ + + + diff --git a/src/components/bookdetail/ReviewForm.vue b/src/components/bookdetail/ReviewForm.vue new file mode 100644 index 0000000..12585b3 --- /dev/null +++ b/src/components/bookdetail/ReviewForm.vue @@ -0,0 +1,45 @@ + + + diff --git a/src/components/bookdetail/Reviews.vue b/src/components/bookdetail/Reviews.vue new file mode 100644 index 0000000..93b3146 --- /dev/null +++ b/src/components/bookdetail/Reviews.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/components/bookdetail/ShopButtons.vue b/src/components/bookdetail/ShopButtons.vue new file mode 100644 index 0000000..dc571f7 --- /dev/null +++ b/src/components/bookdetail/ShopButtons.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/src/components/bookdetail/SimilarBooks.vue b/src/components/bookdetail/SimilarBooks.vue new file mode 100644 index 0000000..2772ded --- /dev/null +++ b/src/components/bookdetail/SimilarBooks.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/pages/buchdetailseite/[id].vue b/src/pages/buchdetailseite/[id].vue index 67c4b53..4cd2823 100644 --- a/src/pages/buchdetailseite/[id].vue +++ b/src/pages/buchdetailseite/[id].vue @@ -2,84 +2,20 @@ - +
- - - Shops - -
- - - Amazon - - - - Hugendubel - - - - Apple - - - - Thalia - - - -
-
-
- - - - Deine Aktionen - -
- - - {{ liked ? 'Gefällt mir' : 'Gefällt mir nicht mehr' }} - - - - {{ readingStatus ? 'Gelesen' : 'Noch nicht gelesen' }} - - - - {{ wishlist ? 'Auf der Wunschliste' : 'Zur Wunschliste' }} - - - - {{ collection ? 'In Sammlung' : 'Zur Sammlung hinzufügen' }} - -
-
-
- - - - Community-Statistik - - - In 47 Bibliotheken - Auf 20 Merkzettel - 4 Leser*innen lesen es gerade - - - + + +
- + +

{{ book.title }}

von {{ book.authors[0]?.name }}

@@ -99,18 +35,25 @@
- - - - Fieberkurve (Lesedynamik) - - - - - - + + + + + + Fieberkurve (Lesedynamik) + + + + + + + + + + + + + @@ -120,127 +63,41 @@ {{ book.blurb }} - - - - - - Buchdetails - - - ISBN: {{ book.isbn || '–' }}
- Sprache: {{ book.language }}
- Seiten: {{ book.pageCount }}
- Verlag: {{ book.publishers || '–' }}
- Veröffentlicht: {{ book.publishedDate }} -
-
-
- - - - Weitere Informationen - - - - - - -
- - - - Weitere Bücher von {{ book.authors[0]?.name }} + + + + Weitere Informationen + - - - - - - - {{ b.title }} - - - - - + - - + + - - Rezensionen & Bewertungen - - -
- {{ review.name }} am {{ review.date }} - -
-

{{ review.text }}

-
-
-
- - - - Absenden - - - - - - {{ snackbarText }} - + + - - Ähnliche Bücher - - - - - - - -
{{ similar.title }}
-
-
-
-
-
-
-
+
+ + + + {{ snackbarText }} +
@@ -250,16 +107,21 @@ import { useRoute } from 'vue-router' import { books } from '@/components/buecherdatenbank' import Fieberkurve from '@/components/Fieberkurve.vue' +// Komponenten +import BookShops from '@/components/bookdetail/BookShops.vue' +import BookActions from '@/components/bookdetail/BookActions.vue' +import BookStats from '@/components/bookdetail/BookStats.vue' +import BookDetails from '@/components/bookdetail/BookDetails.vue' +import MoreBooksFromAuthor from '@/components/bookdetail/MoreBooksFromAuthor.vue' +import Reviews from '@/components/bookdetail/Reviews.vue' +import ReviewForm from '@/components/bookdetail/ReviewForm.vue' +import SimilarBooks from '@/components/bookdetail/SimilarBooks.vue' + const route = useRoute() const id = parseInt(route.params.id) const book = books.find(b => b.id === id) || {} -const liked = ref(false) -const readingStatus = ref(false) -const wishlist = ref(false) -const collection = ref(false) const snackbar = ref(false) -snackbar.value = false const snackbarText = ref('') function showFeedback(text) { @@ -267,23 +129,6 @@ function showFeedback(text) { snackbar.value = true } -function toggleLike() { - liked.value = !liked.value - showFeedback(liked.value ? 'Zur Favoritenliste hinzugefügt ✅' : 'Aus Favoriten entfernt ❌') -} -function toggleReadingStatus() { - readingStatus.value = !readingStatus.value - showFeedback(readingStatus.value ? 'Als gelesen markiert 📘' : 'Markierung entfernt ❌') -} -function toggleWishlist() { - wishlist.value = !wishlist.value - showFeedback(wishlist.value ? 'Zur Wunschliste hinzugefügt 🎁' : 'Von Wunschliste entfernt ❌') -} -function toggleCollection() { - collection.value = !collection.value - showFeedback(collection.value ? 'Zur Sammlung hinzugefügt 📚' : 'Aus Sammlung entfernt ❌') -} - const authorBooks = computed(() => { if (!book?.authors?.[0]?.name) return [] return books.filter(b => b.authors?.[0]?.name === book.authors[0].name && b.id !== book.id) @@ -319,11 +164,3 @@ const genreIcon = genre => { return icons[genre] || 'tabler-book' } - - -