refactor: katalog feature'ı — sayfalar senkron kompozisyona geçti (Faz 2)

- 8 katalog bileşeni src/features/katalog/components/ altına taşındı;
  katalog-queries.ts (server-only) lib/katalog'un feature kapısı oldu
- /bolumler ve /universiteler'in sayfa içi fetch+inline bileşenleri
  BolumKatalogu/UniversiteKatalogu feature bileşenlerine çıkarıldı
- 6 sayfa async'ten senkron'a: params.then() + sayfada Suspense,
  skeleton'lar feature bileşeninin yanında (BolumIcerikSkeleton vb.)
- generateStaticParams artık *-queries yerine bileşen dosyasının
  helper'larını kullanıyor (bolumStaticSlugs, uniSayfaStaticParams)
- Davranış değişikliği yok; route durumları aynı (◐), 1917 statik sayfa

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
bilalgursen
2026-08-08 01:14:00 +03:00
parent 820eea7eca
commit 8d26e375ff
19 changed files with 425 additions and 258 deletions

View File

@@ -1,25 +1,31 @@
import { Suspense } from "react";
import type { Metadata } from "next";
import { getAllUniversiteSlugs } from "@/lib/katalog";
import { UniversiteIcerik, uniSayfaMetadata } from "./universite-icerik";
import {
UniversiteIcerik,
UniversiteIcerikSkeleton,
uniSayfaMetadata,
uniStaticSlugs,
} from "@/features/katalog/components/universite-icerik";
export function generateStaticParams() {
return getAllUniversiteSlugs().map((slug) => ({ slug }));
return uniStaticSlugs().map((slug) => ({ slug }));
}
export async function generateMetadata({
params,
}: {
params: Promise<{ slug: string }>;
}): Promise<Metadata> {
}: PageProps<"/universite/[slug]">): Promise<Metadata> {
const { slug } = await params;
return uniSayfaMetadata(slug, 1);
}
export default async function UniversitePage({
export default function UniversitePage({
params,
}: {
params: Promise<{ slug: string }>;
}) {
const { slug } = await params;
return <UniversiteIcerik slug={slug} sayfa={1} />;
}: PageProps<"/universite/[slug]">) {
return (
<Suspense fallback={<UniversiteIcerikSkeleton />}>
{params.then(({ slug }) => (
<UniversiteIcerik slug={slug} sayfa={1} />
))}
</Suspense>
);
}