2025-03-09 12:32:36 +08:00
|
|
|
import { useRouteLoaderData } from 'react-router'
|
|
|
|
|
|
2025-02-03 18:48:49 +08:00
|
|
|
import { Card } from '~/components/ui/card'
|
2025-02-28 16:50:44 +07:00
|
|
|
import { CarouselHero } from '~/components/ui/carousel-hero'
|
|
|
|
|
import { CarouselSection } from '~/components/ui/carousel-section'
|
2025-02-20 07:01:36 +08:00
|
|
|
import { Newsletter } from '~/components/ui/newsletter'
|
2025-03-19 18:53:30 +08:00
|
|
|
import { type loader } from '~/routes/_news._index'
|
2025-03-09 12:32:36 +08:00
|
|
|
import type { TNews } from '~/types/news'
|
2025-02-03 18:48:49 +08:00
|
|
|
|
2025-02-03 17:01:56 +08:00
|
|
|
export const NewsPage = () => {
|
2025-03-19 18:53:30 +08:00
|
|
|
const loaderData = useRouteLoaderData<typeof loader>('routes/_news._index')
|
2025-03-09 12:32:36 +08:00
|
|
|
const spotlight: TNews = {
|
|
|
|
|
title: loaderData?.spotlightCategory?.name || '',
|
|
|
|
|
description: loaderData?.spotlightCategory?.description || '',
|
2025-03-20 11:43:15 +08:00
|
|
|
items: loaderData?.spotlightData || Promise.resolve({ data: [] }),
|
2025-03-09 12:32:36 +08:00
|
|
|
}
|
|
|
|
|
const berita: TNews = {
|
|
|
|
|
title: loaderData?.beritaCategory?.name || '',
|
|
|
|
|
description: loaderData?.beritaCategory?.description || '',
|
2025-03-20 11:43:15 +08:00
|
|
|
items: loaderData?.beritaData || Promise.resolve({ data: [] }),
|
2025-03-09 12:32:36 +08:00
|
|
|
}
|
2025-03-09 14:32:04 +08:00
|
|
|
const kajian: TNews = {
|
|
|
|
|
title: loaderData?.kajianCategory?.name || '',
|
|
|
|
|
description: loaderData?.kajianCategory?.description || '',
|
2025-03-20 11:43:15 +08:00
|
|
|
items: loaderData?.kajianData || Promise.resolve({ data: [] }),
|
2025-03-09 14:32:04 +08:00
|
|
|
}
|
2025-03-09 12:32:36 +08:00
|
|
|
|
2025-01-31 19:34:22 +08:00
|
|
|
return (
|
2025-02-03 18:48:49 +08:00
|
|
|
<div className="relative">
|
|
|
|
|
<Card>
|
2025-03-09 12:32:36 +08:00
|
|
|
<CarouselHero {...spotlight} />
|
2025-02-03 18:48:49 +08:00
|
|
|
</Card>
|
2025-02-27 16:42:36 +07:00
|
|
|
<div className="min-h-[400px] sm:min-h-[300px]">
|
2025-02-27 23:50:46 +08:00
|
|
|
<Newsletter className="mr-0 sm:-ml-14" />
|
2025-02-27 16:42:36 +07:00
|
|
|
</div>
|
2025-03-02 12:24:30 +07:00
|
|
|
|
|
|
|
|
<Card>
|
2025-03-09 12:32:36 +08:00
|
|
|
<CarouselSection {...berita} />
|
2025-03-02 12:24:30 +07:00
|
|
|
</Card>
|
2025-03-09 14:32:04 +08:00
|
|
|
<Card>
|
|
|
|
|
<CarouselSection {...kajian} />
|
|
|
|
|
</Card>
|
2025-02-03 17:01:56 +08:00
|
|
|
</div>
|
2025-01-31 19:34:22 +08:00
|
|
|
)
|
|
|
|
|
}
|