'use client'; import * as React from 'react'; import { useEffect, useState } from 'react'; import { useRouter } from 'next/navigation'; interface BlogPostClientProps { readingTime: number; title: string; } export const BlogPostClient: React.FC = ({ readingTime, title }) => { const router = useRouter(); const [isScrolled, setIsScrolled] = useState(false); useEffect(() => { const handleScroll = () => { setIsScrolled(window.scrollY > 100); // Update progress bar const winScroll = document.body.scrollTop || document.documentElement.scrollTop; const height = document.documentElement.scrollHeight - document.documentElement.clientHeight; const scrolled = (winScroll / height); const progressBar = document.querySelector('.reading-progress-bar') as HTMLElement; if (progressBar) { progressBar.style.transform = `scaleX(${scrolled})`; } }; window.addEventListener('scroll', handleScroll); return () => window.removeEventListener('scroll', handleScroll); }, []); const handleBack = () => { // Lovely exit animation const content = document.getElementById('post-content'); if (content) { content.style.transition = 'opacity 0.5s ease-out, transform 0.5s ease-out'; content.style.opacity = '0'; content.style.transform = 'translateY(20px) scale(0.98)'; } const topNav = document.getElementById('top-nav'); if (topNav) { topNav.style.transition = 'opacity 0.4s ease-out'; topNav.style.opacity = '0'; } const overlay = document.createElement('div'); overlay.className = 'fixed inset-0 bg-gradient-to-br from-white via-slate-50 to-white z-[100] opacity-0 transition-opacity duration-500'; document.body.appendChild(overlay); setTimeout(() => { overlay.style.opacity = '1'; }, 100); setTimeout(() => { router.push('/blog?from=post'); }, 500); }; const handleShare = async () => { const url = window.location.href; if (navigator.share) { try { await navigator.share({ title, url }); } catch (err) { console.error('Share failed:', err); } } else { // Fallback: copy to clipboard try { await navigator.clipboard.writeText(url); alert('Link copied to clipboard!'); } catch (err) { console.error('Copy failed:', err); } } }; return ( <>
); };