diff --git a/app/api/book-reviews/route.ts b/app/api/book-reviews/route.ts index 884cea6..ae4940e 100644 --- a/app/api/book-reviews/route.ts +++ b/app/api/book-reviews/route.ts @@ -25,6 +25,10 @@ export async function GET(request: NextRequest) { const locale = searchParams.get('locale') || 'en'; const reviews = await getBookReviews(locale); + + if (process.env.NODE_ENV === 'development') { + console.log(`[API] Book Reviews geladen für ${locale}:`, reviews?.length || 0); + } if (reviews && reviews.length > 0) { return NextResponse.json({ diff --git a/app/components/About.tsx b/app/components/About.tsx index ff0e368..be85d0a 100644 --- a/app/components/About.tsx +++ b/app/components/About.tsx @@ -160,7 +160,8 @@ const About = () => { Shield, Activity, Lightbulb, - Gamepad2 + Gamepad2, + Gamepad }; // Fallback Hobbies @@ -296,7 +297,7 @@ const About = () => { > {t("techStackTitle")} -
+
{techStack.map((stack, idx) => ( {
- {/* Hobbies */} -
- - {t("hobbiesTitle")} - -
- {hobbies.map((hobby, idx) => ( - - - - {String(hobby.text)} - - - ))} + {/* Hobbies & Reading Grid */} +
+ {/* Hobbies Column */} +
+ + {t("hobbiesTitle")} + +
+ {hobbies.map((hobby, idx) => ( + + + + {String(hobby.text)} + + + ))} +
+
+ + {/* Reading Column */} +
+ {/* Currently Reading */} + + + + + {/* Read Books */} + + +
- - {/* Currently Reading */} - - - - - {/* Read Books with Ratings */} - - -
diff --git a/app/components/ReadBooks.tsx b/app/components/ReadBooks.tsx index 8c46e6e..1f3169d 100644 --- a/app/components/ReadBooks.tsx +++ b/app/components/ReadBooks.tsx @@ -35,6 +35,12 @@ const StarRating = ({ rating }: { rating: number }) => { ); }; +const stripHtml = (html: string) => { + if (typeof window === 'undefined') return html; // Fallback for SSR + const doc = new DOMParser().parseFromString(html, 'text/html'); + return doc.body.textContent || ""; +}; + const ReadBooks = () => { const locale = useLocale(); const t = useTranslations("home.about.readBooks"); @@ -75,8 +81,12 @@ const ReadBooks = () => { fetchReviews(); }, [locale]); - if (loading || reviews.length === 0) { - return null; + if (loading) { + return
Lade Buch-Bewertungen...
; + } + + if (reviews.length === 0) { + return null; // Hier kannst du temporär "Keine Bücher gefunden" reinschreiben zum Testen } const visibleReviews = expanded ? reviews : reviews.slice(0, INITIAL_SHOW); @@ -169,7 +179,7 @@ const ReadBooks = () => { {/* Review Text (Optional) */} {review.review && (

- “{review.review}” + “{stripHtml(review.review)}”

)} diff --git a/lib/directus.ts b/lib/directus.ts index 64c1cce..51a930b 100644 --- a/lib/directus.ts +++ b/lib/directus.ts @@ -444,7 +444,7 @@ export async function getBookReviews(locale: string): Promise