deniz bektaş

This commit is contained in:
2026-04-03 16:20:51 +03:00
parent d0cd1c7ee3
commit fb6933edd0
53 changed files with 4742 additions and 98 deletions

47
app/blog/[slug]/page.tsx Normal file
View File

@@ -0,0 +1,47 @@
import type { Metadata } from "next";
import Link from "next/link";
import { getPost, getPosts } from "@/lib/posts";
import { notFound } from "next/navigation";
export async function generateStaticParams() {
return getPosts("blog").map((p) => ({ slug: p.slug }));
}
export async function generateMetadata({ params }: { params: Promise<{ slug: string }> }): Promise<Metadata> {
const { slug } = await params;
const post = await getPost("blog", slug);
if (!post) return {};
return { title: post.title, description: post.excerpt };
}
export default async function BlogPostPage({ params }: { params: Promise<{ slug: string }> }) {
const { slug } = await params;
const post = await getPost("blog", slug);
if (!post) notFound();
return (
<div style={{ maxWidth: "100%" }}>
<Link href="/blog" style={{ fontSize: "0.78rem", color: "var(--text-muted)", display: "flex", alignItems: "center", gap: "0.3rem", marginBottom: "1.5rem" }}>
Blog&apos;a Dön
</Link>
<article>
<header style={{ marginBottom: "2rem" }}>
<h1 style={{ fontSize: "1.5rem", fontWeight: 800, color: "var(--text)", marginBottom: "0.5rem", lineHeight: 1.3 }}>
{post.title}
</h1>
<div style={{ display: "flex", alignItems: "center", gap: "1rem", flexWrap: "wrap" }}>
<span style={{ fontSize: "0.75rem", color: "var(--text-muted)" }}>
{new Date(post.date).toLocaleDateString("tr-TR", { year: "numeric", month: "long", day: "numeric" })}
</span>
<div style={{ display: "flex", gap: "0.3rem", flexWrap: "wrap" }}>
{post.tags.map((t) => <span key={t} className="tag">{t}</span>)}
</div>
</div>
</header>
<div className="card prose" dangerouslySetInnerHTML={{ __html: post.content || "" }} />
</article>
</div>
);
}

47
app/blog/page.tsx Normal file
View File

@@ -0,0 +1,47 @@
import type { Metadata } from "next";
import Link from "next/link";
import { getPosts } from "@/lib/posts";
export const metadata: Metadata = { title: "Personal Blog" };
export default function BlogPage() {
const posts = getPosts("blog");
return (
<div style={{ maxWidth: "100%" }}>
<div className="page-title">Personal Blog</div>
<p style={{ fontSize: "0.8rem", color: "var(--text-muted)", marginBottom: "2rem" }}>
Kişisel yazılar, düşünceler, kariyer notları
</p>
{posts.length === 0 ? (
<div className="card" style={{ color: "var(--text-muted)", fontSize: "0.85rem" }}>
Henüz yazı yok. Yakında...
</div>
) : (
<div style={{ display: "flex", flexDirection: "column", gap: "1rem" }}>
{posts.map((post) => (
<article key={post.slug} className="card">
<Link href={`/blog/${post.slug}`}>
<h2 style={{ fontSize: "1rem", fontWeight: 700, color: "var(--text)", marginBottom: "0.4rem", lineHeight: 1.4 }}>
{post.title}
</h2>
</Link>
<p style={{ fontSize: "0.82rem", color: "var(--text-muted)", marginBottom: "0.75rem", lineHeight: 1.6 }}>
{post.excerpt}
</p>
<div style={{ display: "flex", alignItems: "center", justifyContent: "space-between", flexWrap: "wrap", gap: "0.5rem" }}>
<div style={{ display: "flex", gap: "0.3rem", flexWrap: "wrap" }}>
{post.tags.map((t) => <span key={t} className="tag">{t}</span>)}
</div>
<span style={{ fontSize: "0.72rem", color: "var(--text-muted)" }}>
{new Date(post.date).toLocaleDateString("tr-TR", { year: "numeric", month: "long", day: "numeric" })}
</span>
</div>
</article>
))}
</div>
)}
</div>
);
}