feat: improve book reviews, restore detailed privacy policy, fix header logo, add theme toggle, integrate boneyard-js
Some checks failed
CI / CD / test-build (push) Failing after 5m28s
CI / CD / deploy-dev (push) Has been skipped
CI / CD / deploy-production (push) Has been skipped

- Book reviews: add line-clamp for longer review text with expand/collapse per review
- Privacy policy: restore full detailed DSGVO-compliant fallback content
- Header (legal pages): change logo from 'dk' to 'dk0' in circle
- Header (main page): add ThemeToggle for dark/light mode switching
- Skeleton loading: integrate boneyard-js for ReadBooks, CurrentlyReading, Projects
- Add boneyard.config.json and bones/registry.ts placeholder
This commit is contained in:
2026-04-15 14:26:08 +02:00
parent 7b5fdbd611
commit 87e337a3a0
14 changed files with 201 additions and 69 deletions

View File

@@ -6,7 +6,7 @@ import { ArrowUpRight } from "lucide-react";
import Link from "next/link";
import Image from "next/image";
import { useLocale, useTranslations } from "next-intl";
import { Skeleton } from "./ui/Skeleton";
import { Skeleton } from "boneyard-js/react";
interface Project {
id: number;
@@ -63,18 +63,9 @@ const Projects = () => {
</Link>
</div>
<Skeleton name="projects-grid" loading={loading} animate="shimmer" transition>
<div className="grid grid-cols-1 md:grid-cols-2 gap-6 md:gap-12">
{loading ? (
Array.from({ length: 2 }).map((_, i) => (
<div key={i} className="space-y-6">
<Skeleton className="aspect-[4/3] rounded-[2.5rem]" />
<div className="space-y-3">
<Skeleton className="h-8 w-1/2" />
<Skeleton className="h-4 w-3/4" />
</div>
</div>
))
) : projects.length === 0 ? (
{projects.length === 0 && !loading ? (
<div className="col-span-2 py-12 text-center text-stone-400 dark:text-stone-600 text-sm">
No projects yet.
</div>
@@ -125,6 +116,7 @@ const Projects = () => {
</motion.div>
)))}
</div>
</Skeleton>
</div>
</section>
);