Skip to content

Commit bd35c72

Browse files
committed
feat: add news items to homepage
1 parent 3b8e1b6 commit bd35c72

File tree

4 files changed

+81
-3
lines changed

4 files changed

+81
-3
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center)
2+
// SPDX-FileCopyrightText: 2024 Netherlands eScience Center
3+
//
4+
// SPDX-License-Identifier: Apache-2.0
5+
6+
import Link from 'next/link'
7+
import {TopNewsProps} from '~/components/news/apiNews'
8+
import GradientBorderButton from './GradientBorderButton'
9+
import {config} from './config'
10+
import HomepageDivider from './HomepageDivider'
11+
12+
const {button} = config
13+
14+
function TopNewsItem({item}:{item:TopNewsProps}){
15+
return (
16+
<Link
17+
href={`/news/${item.publication_date}/${item.slug}`}
18+
>
19+
<article className="flex gap-4 items-start" data-aos="fade" data-aos-delay="0">
20+
{/* <LandingPageImpactIcon className="h-auto mr-5 pt-1 scale-125 flex-shrink-0" /> */}
21+
<div>
22+
<h3 className="mb-4 text-2xl font-medium">{item.title}</h3>
23+
<p className="text-lg opacity-70">{item.summary}</p>
24+
</div>
25+
26+
</article>
27+
</Link>
28+
)
29+
}
30+
/**
31+
* Top news items including the homepage divider.
32+
* If there are no news items it returns null.
33+
* */
34+
export default function TopNewsSection({news}:{news:TopNewsProps[]}) {
35+
36+
// console.group('TopNewsSection')
37+
// console.log('news...',news)
38+
// console.groupEnd()
39+
40+
if (news?.length > 0){
41+
return (
42+
<>
43+
<section
44+
id="top-news"
45+
className="p-5 md:p-10 w-full max-w-screen-xl mx-auto">
46+
47+
<h2 className="flex justify-start text-3xl lg:text-4xl font-rsd-titles font-bold mt-6"
48+
data-aos="fade" data-aos-duration="400" data-aos-easing="ease-in-out">
49+
Latest news
50+
</h2>
51+
52+
<div className="grid gap-20 grid-cols-1 md:grid-cols-2 pt-14">
53+
{news.map(item=>{
54+
return <TopNewsItem key={item.id} item={item} />
55+
})}
56+
<div className="flex justify-center items-center"
57+
data-aos="fade"
58+
data-aos-easing="ease-in-out"
59+
data-aos-duration="500"
60+
>
61+
<GradientBorderButton
62+
text={button.news.label}
63+
url={button.news.url}
64+
target={button.news.target}
65+
/>
66+
</div>
67+
</div>
68+
</section>
69+
<HomepageDivider />
70+
</>
71+
)
72+
}
73+
return null
74+
}

frontend/components/home/kin/index.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,15 @@ import 'aos/dist/aos.css'
1414
import AppHeader from '~/components/AppHeader'
1515
import AppFooter from '~/components/AppFooter'
1616
import Arc from '~/components/home/rsd/arc.svg'
17+
import {TopNewsProps} from '~/components/news/apiNews'
1718
import JumboBanner from './JumboBanner'
1819
import HomepageDivider from './HomepageDivider'
1920
import AboutUsSection from './AboutUsSection'
2021
import OurProgramsSection from './OurProgramsSection'
2122
import ContributeSection from './ContributeSection'
23+
import TopNewsSection from './TopNewsSection'
2224

23-
export default function RsdHome() {
25+
export default function RsdHome({news}:{news:TopNewsProps[]}) {
2426
// Initialize AOS library
2527
useEffect(() => {
2628
AOS.init({offset: 16})
@@ -37,6 +39,8 @@ export default function RsdHome() {
3739
<div className="bg-base-800">
3840
{/* Arc separator */}
3941
<Arc className="w-full text-base-100 dark:text-base-900 -translate-y-1"></Arc>
42+
{/* Top 3 news items, ONLY if there are some */}
43+
<TopNewsSection news={news} />
4044
{/* Our Programs Section */}
4145
<OurProgramsSection />
4246
{/* Divider */}

frontend/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "kin-rpd-frontend",
3-
"version": "0.0.2",
3+
"version": "0.1.0",
44
"private": true,
55
"scripts": {
66
"dev": "next dev",

frontend/pages/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export default function Home({counts,news}: HomeProps) {
4242
/>
4343
{/* canonical url meta tag */}
4444
<CanonicalUrl/>
45-
<KinRpdHome />
45+
<KinRpdHome news={news} />
4646
</>
4747
)
4848
}

0 commit comments

Comments
 (0)