2025-02-24 08:23:22 +08:00
|
|
|
import htmlParse from 'html-react-parser'
|
|
|
|
|
|
2025-02-23 20:41:19 +07:00
|
|
|
import { Breadcrumb } from '~/components/ui/breadcrumb'
|
2025-02-20 07:01:36 +08:00
|
|
|
import { Card } from '~/components/ui/card'
|
2025-02-28 18:55:12 +07:00
|
|
|
import { CarouselSection } from '~/components/ui/carousel-section'
|
2025-02-23 20:41:19 +07:00
|
|
|
import { IconsSocial } from '~/components/ui/social-share'
|
2025-02-23 19:43:45 +08:00
|
|
|
|
|
|
|
|
import { BERITA, CONTENT } from './data'
|
2025-02-20 07:01:36 +08:00
|
|
|
|
|
|
|
|
export const NewsDetailPage = () => {
|
2025-02-20 22:20:27 +07:00
|
|
|
const { title, content, featured, slug, author, date, tags } = CONTENT
|
2025-02-20 07:01:36 +08:00
|
|
|
return (
|
2025-02-20 22:20:27 +07:00
|
|
|
<div className="relative mx-5 sm:mx-10">
|
|
|
|
|
<Card>
|
|
|
|
|
<div className="py-5 sm:px-30">
|
|
|
|
|
<Breadcrumb slug={slug} />
|
|
|
|
|
<h2 className="text-xl font-extrabold text-[#2E2F7C] sm:text-4xl">
|
|
|
|
|
{title}
|
|
|
|
|
</h2>
|
|
|
|
|
|
|
|
|
|
{/* next planing create component for this section */}
|
2025-02-28 18:55:12 +07:00
|
|
|
<div className="my-5 w-full items-center justify-between gap-2 align-middle sm:flex">
|
|
|
|
|
<div className="mb-2 flex items-center gap-2 align-middle">
|
2025-02-20 22:20:27 +07:00
|
|
|
<img
|
|
|
|
|
src={'https://placehold.co/50x50.png'}
|
|
|
|
|
alt={title}
|
|
|
|
|
className="h-12 w-12 rounded-full"
|
|
|
|
|
/>
|
|
|
|
|
<div>
|
|
|
|
|
<h4 className="text-md">{author}</h4>
|
|
|
|
|
<p className="text-sm">
|
|
|
|
|
{date.toJSON().slice(0, 10)} . 5 min read{' '}
|
|
|
|
|
</p>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2025-02-28 18:55:12 +07:00
|
|
|
<IconsSocial className="flex-row-reverse" />
|
2025-02-20 22:20:27 +07:00
|
|
|
</div>
|
|
|
|
|
{/* end next planing create component for this section */}
|
|
|
|
|
<div className="w-full bg-amber-200">
|
|
|
|
|
<img
|
|
|
|
|
src={featured}
|
|
|
|
|
alt={title}
|
2025-02-28 18:55:12 +07:00
|
|
|
className="w-full object-cover object-center sm:h-[600px]"
|
2025-02-20 22:20:27 +07:00
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
|
2025-02-24 20:36:43 +07:00
|
|
|
<div className="mt-8 flex items-center justify-center">
|
|
|
|
|
<article className="prose prose-stone">
|
|
|
|
|
{htmlParse(content)}
|
|
|
|
|
</article>
|
|
|
|
|
</div>
|
2025-02-28 18:55:12 +07:00
|
|
|
<div className="items-end justify-between border-b-3 border-b-gray-300 py-4 sm:flex">
|
|
|
|
|
<div className="flex flex-col max-sm:mb-3">
|
2025-02-20 22:20:27 +07:00
|
|
|
<p className="mb-2">Share this post</p>
|
2025-02-22 15:15:04 +07:00
|
|
|
<IconsSocial className="a" />
|
2025-02-20 22:20:27 +07:00
|
|
|
</div>
|
2025-02-28 18:55:12 +07:00
|
|
|
<div className="flex flex-wrap items-end gap-2">
|
2025-02-20 22:20:27 +07:00
|
|
|
{tags?.map((tag) => (
|
|
|
|
|
<span
|
|
|
|
|
key={tag}
|
2025-02-28 18:55:12 +07:00
|
|
|
className="rounded bg-gray-300 p-1"
|
2025-02-20 22:20:27 +07:00
|
|
|
>
|
|
|
|
|
{tag}
|
|
|
|
|
</span>
|
|
|
|
|
))}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className="mt-5 flex items-center gap-2 align-middle">
|
|
|
|
|
<img
|
|
|
|
|
src={'https://placehold.co/50x50.png'}
|
|
|
|
|
alt={title}
|
|
|
|
|
className="h-12 w-12 rounded-full"
|
|
|
|
|
/>
|
|
|
|
|
<div>
|
|
|
|
|
<h4 className="text-md">{author}</h4>
|
|
|
|
|
<p className="text-sm">Job title, Company name</p>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</Card>
|
|
|
|
|
|
2025-02-28 18:55:12 +07:00
|
|
|
<Card className="hidden sm:block">
|
|
|
|
|
<CarouselSection {...BERITA} />
|
2025-02-20 07:01:36 +08:00
|
|
|
</Card>
|
|
|
|
|
</div>
|
|
|
|
|
)
|
|
|
|
|
}
|