import { Link, useParams, Navigate } from 'react-router-dom'; import { useEffect, useState } from 'react'; import ReactMarkdown from 'react-markdown'; import remarkGfm from 'remark-gfm'; import rehypeHighlight from 'rehype-highlight'; import { getPostBySlug, formatDate } from '@/lib/blog'; import { ArrowLeft } from 'lucide-react'; import 'highlight.js/styles/github-dark.css'; const BlogPost = () => { const { slug } = useParams<{ slug: string }>(); const post = slug ? getPostBySlug(slug) : undefined; const [mousePos, setMousePos] = useState({ x: 0, y: 0 }); useEffect(() => { if (post) { document.title = `${post.title} — damaj.tech`; const meta = document.querySelector('meta[name="description"]'); if (meta && post.description) meta.setAttribute('content', post.description); } }, [post]); if (!post) return ; return (
setMousePos({ x: e.clientX, y: e.clientY })} className="min-h-screen bg-background relative overflow-hidden" >
all posts

{formatDate(post.date)}

{post.title}

{post.description && (

{post.description}

)} {post.tags && post.tags.length > 0 && (
{post.tags.map((tag) => ( {tag} ))}
)}
{post.content}
); }; export default BlogPost;