@@ -3,13 +3,14 @@ import { useParams, useNavigate } from 'react-router-dom';
33import { renderMarkdown } from '@/utils/mdparser-utils' ;
44import { getPostBySlug , Post } from '@/utils/posts-utils' ;
55import { motion } from 'framer-motion' ;
6+ import Header from '@/sections/Header' ;
7+ import Footer from '@/sections/Footer' ;
68
79const NewsDetailPage : React . FC = ( ) => {
810 const { slug } = useParams < { slug : string } > ( ) ;
911 const navigate = useNavigate ( ) ;
1012 const [ post , setPost ] = useState < Post | null > ( null ) ;
1113 const [ isLoading , setIsLoading ] = useState < boolean > ( true ) ;
12- const [ readingProgress , setReadingProgress ] = useState < number > ( 0 ) ;
1314 const contentRef = useRef < HTMLDivElement > ( null ) ;
1415 const [ modalImage , setModalImage ] = useState < {
1516 src : string ;
@@ -33,19 +34,6 @@ const NewsDetailPage: React.FC = () => {
3334 } ;
3435
3536 loadPost ( ) ;
36-
37- // Calculate reading progress
38- const handleScroll = ( ) => {
39- const totalHeight =
40- document . documentElement . scrollHeight -
41- document . documentElement . clientHeight ;
42- const scrollPosition = document . documentElement . scrollTop ;
43- const progress = ( scrollPosition / totalHeight ) * 100 ;
44- setReadingProgress ( progress ) ;
45- } ;
46-
47- window . addEventListener ( 'scroll' , handleScroll ) ;
48- return ( ) => window . removeEventListener ( 'scroll' , handleScroll ) ;
4937 } , [ slug ] ) ;
5038
5139 useEffect ( ( ) => {
@@ -113,15 +101,8 @@ const NewsDetailPage: React.FC = () => {
113101
114102 return (
115103 < >
116- < div className = "container mx-auto px-4 py-8 max-w-4xl bg-white" >
117- { /* Reading Progress Bar */ }
118- < div className = "fixed top-0 left-0 w-full h-1 z-50" >
119- < div
120- className = "h-full bg-blue-600"
121- style = { { width : `${ readingProgress } %` } }
122- > </ div >
123- </ div >
124-
104+ < Header />
105+ < div className = "container mx-auto px-4 py-8 max-w-4xl bg-white mt-10" >
125106 { /* Back button */ }
126107 < motion . button
127108 onClick = { handleGoBack }
@@ -221,13 +202,14 @@ const NewsDetailPage: React.FC = () => {
221202 </ motion . div >
222203 ) }
223204
224- { /* Article Content */ }
205+ { /* Article Content - Updated with key for proper re-rendering */ }
225206 < motion . div
226207 ref = { contentRef }
227- className = "mb-12"
208+ className = "mb-12 prose prose-lg max-w-none "
228209 initial = { { opacity : 0 } }
229210 animate = { { opacity : 1 } }
230211 transition = { { duration : 0.5 } }
212+ key = { slug } // This ensures re-rendering when the slug changes
231213 dangerouslySetInnerHTML = { { __html : renderMarkdown ( post . content ) } }
232214 />
233215
@@ -328,6 +310,7 @@ const NewsDetailPage: React.FC = () => {
328310 </ div >
329311 </ motion . div >
330312 ) }
313+ < Footer />
331314 </ >
332315 ) ;
333316} ;
0 commit comments