11import {
2+ Cell ,
23 H1 ,
3- Link ,
44 H2 ,
55 H3 ,
66 H4 ,
7- TypographyP ,
8- TypographyBlockquote ,
9- Table ,
10- Cell ,
117 Head ,
128 HeadCell ,
13- Row ,
9+ Link ,
1410 OrderedList ,
11+ Row ,
12+ Table ,
13+ TypographyBlockquote ,
14+ TypographyP ,
1515 UnOrderList ,
1616} from '@/components/typography'
1717import { buttonVariants } from '@/components/ui'
@@ -21,9 +21,9 @@ import { cn } from '@/lib/utils'
2121import { format } from 'date-fns'
2222import { ArrowLeft , ArrowRight } from 'lucide-react'
2323import {
24- useLoaderData ,
2524 Link as RLink ,
2625 ScrollRestoration ,
26+ useLoaderData ,
2727} from 'react-router-dom'
2828
2929const HelpDetail = ( ) => {
@@ -34,78 +34,82 @@ const HelpDetail = () => {
3434 }
3535
3636 return (
37- < div className = 'container py-6' >
38- < ScrollRestoration />
39- < div className = 'max-w-3xl mx-auto' >
40- < div >
41- < div className = 'mb-8' >
42- < H1 className = 'mb-4' > { data . article . title } </ H1 >
43- < div className = 'flex items-center gap-2' >
44- < span className = 'text-muted-foreground text-sm' >
45- { format ( new Date ( data . article . date ) , 'MMMM dd, yyyy' ) }
46- </ span >
47- < span className = 'font-semibold text-sm' >
48- By { data . article . author }
49- </ span >
50- </ div >
51- </ div >
37+ < div className = 'pt-header' >
38+ < div className = 'container py-6' >
39+ < ScrollRestoration />
40+ < div className = 'max-w-3xl mx-auto' >
5241 < div >
53- { data . article . content ( {
54- components : {
55- a : ( props : any ) => (
56- < Link
57- { ...props }
58- to = { ( props . href as string ) || props ?. to || '#' }
59- />
60- ) ,
61- h1 : ( props : any ) => < H1 { ...props } /> ,
62- h2 : ( props : any ) => < H2 { ...props } /> ,
63- h3 : ( props : any ) => < H3 { ...props } /> ,
64- h4 : ( props : any ) => < H4 { ...props } /> ,
65- p : ( props : any ) => < TypographyP { ...props } /> ,
66- blockquote : ( props : any ) => < TypographyBlockquote { ...props } /> ,
67- ul : ( props : any ) => < UnOrderList { ...props } /> ,
68- table : ( props : any ) => < Table { ...props } /> ,
69- th : ( props : any ) => < HeadCell { ...props } /> ,
70- tr : ( props : any ) => < Row { ...props } /> ,
71- td : ( props : any ) => < Cell { ...props } /> ,
72- thead : ( props : any ) => < Head { ...props } /> ,
73- ol : ( props : any ) => < OrderedList { ...props } /> ,
74- } ,
75- } ) }
76- </ div >
77-
78- { data . prev || data . next ? (
79- < div >
80- < hr className = 'my-8' />
81- < div className = 'flex flex-col gap-4' >
82- { data . prev ? (
83- < RLink
84- to = { `${ ROUTES . PUBLIC . HELP } /${ data . prev . slug } ` }
85- className = { cn (
86- buttonVariants ( { variant : 'outline' } ) ,
87- 'min-h-16 justify-start gap-4' ,
88- ) }
89- >
90- < ArrowLeft />
91- < span > { data . prev . title } </ span >
92- </ RLink >
93- ) : null }
94- { data . next ? (
95- < RLink
96- to = { `${ ROUTES . PUBLIC . HELP } /${ data . next . slug } ` }
97- className = { cn (
98- buttonVariants ( { variant : 'outline' } ) ,
99- 'min-h-16 justify-end gap-4' ,
100- ) }
101- >
102- < span > { data . next . title } </ span >
103- < ArrowRight />
104- </ RLink >
105- ) : null }
42+ < div className = 'mb-8' >
43+ < H1 className = 'mb-4' > { data . article . title } </ H1 >
44+ < div className = 'flex items-center gap-2' >
45+ < span className = 'text-muted-foreground text-sm' >
46+ { format ( new Date ( data . article . date ) , 'MMMM dd, yyyy' ) }
47+ </ span >
48+ < span className = 'font-semibold text-sm' >
49+ By { data . article . author }
50+ </ span >
10651 </ div >
10752 </ div >
108- ) : null }
53+ < div >
54+ { data . article . content ( {
55+ components : {
56+ a : ( props : any ) => (
57+ < Link
58+ { ...props }
59+ to = { ( props . href as string ) || props ?. to || '#' }
60+ />
61+ ) ,
62+ h1 : ( props : any ) => < H1 { ...props } /> ,
63+ h2 : ( props : any ) => < H2 { ...props } /> ,
64+ h3 : ( props : any ) => < H3 { ...props } /> ,
65+ h4 : ( props : any ) => < H4 { ...props } /> ,
66+ p : ( props : any ) => < TypographyP { ...props } /> ,
67+ blockquote : ( props : any ) => (
68+ < TypographyBlockquote { ...props } />
69+ ) ,
70+ ul : ( props : any ) => < UnOrderList { ...props } /> ,
71+ table : ( props : any ) => < Table { ...props } /> ,
72+ th : ( props : any ) => < HeadCell { ...props } /> ,
73+ tr : ( props : any ) => < Row { ...props } /> ,
74+ td : ( props : any ) => < Cell { ...props } /> ,
75+ thead : ( props : any ) => < Head { ...props } /> ,
76+ ol : ( props : any ) => < OrderedList { ...props } /> ,
77+ } ,
78+ } ) }
79+ </ div >
80+
81+ { data . prev || data . next ? (
82+ < div >
83+ < hr className = 'my-8' />
84+ < div className = 'flex flex-col gap-4' >
85+ { data . prev ? (
86+ < RLink
87+ to = { `${ ROUTES . PUBLIC . HELP } /${ data . prev . slug } ` }
88+ className = { cn (
89+ buttonVariants ( { variant : 'outline' } ) ,
90+ 'min-h-16 justify-start gap-4' ,
91+ ) }
92+ >
93+ < ArrowLeft />
94+ < span > { data . prev . title } </ span >
95+ </ RLink >
96+ ) : null }
97+ { data . next ? (
98+ < RLink
99+ to = { `${ ROUTES . PUBLIC . HELP } /${ data . next . slug } ` }
100+ className = { cn (
101+ buttonVariants ( { variant : 'outline' } ) ,
102+ 'min-h-16 justify-end gap-4' ,
103+ ) }
104+ >
105+ < span > { data . next . title } </ span >
106+ < ArrowRight />
107+ </ RLink >
108+ ) : null }
109+ </ div >
110+ </ div >
111+ ) : null }
112+ </ div >
109113 </ div >
110114 </ div >
111115 </ div >
0 commit comments