diff --git a/components/Newsletter.tsx b/components/Newsletter.tsx index 659de4dbb..33be68ce6 100644 --- a/components/Newsletter.tsx +++ b/components/Newsletter.tsx @@ -20,7 +20,7 @@ const NewsletterForm: React.FC = ({ return (
= ({ >
-

- Subscribe to our newsletter to receive news about Json Schema. -

-

- We respect your inbox. No spam, promise ✌️ -

-
- setUsername(e.target.value)} - /> - setEmail(e.target.value)} - /> -
+
); diff --git a/components/NewsletterCard.tsx b/components/NewsletterCard.tsx new file mode 100644 index 000000000..7760e562e --- /dev/null +++ b/components/NewsletterCard.tsx @@ -0,0 +1,40 @@ +import Link from 'next/link'; +import React from 'react'; + +type NewsletterProps = { + url: string; + title: string; + date: string; +}; + +const NewsletterCard = ({ + newsletterData, +}: { + newsletterData: NewsletterProps[]; +}) => { + const sortedNewsletterData = [...newsletterData].sort((a, b) => { + return new Date(b.date).getTime() - new Date(a.date).getTime(); + }); + + return ( +
+ {sortedNewsletterData.map((newsletter, index) => ( +
+ +

+ {newsletter.title} +

+ +

+ {newsletter.date} +

+
+ ))} +
+ ); +}; + +export default NewsletterCard; diff --git a/data/newsletter.json b/data/newsletter.json new file mode 100644 index 000000000..df1b7159c --- /dev/null +++ b/data/newsletter.json @@ -0,0 +1,87 @@ +[ + { + "url": "https://example.com/newsletter-123", + "title": "JSON Schema Newsletter #123", + "date": "2024-01-01" + }, + { + "url": "https://example.com/newsletter-124", + "title": "JSON Schema Newsletter #124", + "date": "2024-01-08" + }, + { + "url": "https://example.com/newsletter-125", + "title": "JSON Schema Newsletter #125", + "date": "2024-01-15" + }, + { + "url": "https://example.com/newsletter-126", + "title": "JSON Schema Newsletter #126", + "date": "2024-01-22" + }, + { + "url": "https://example.com/newsletter-127", + "title": "JSON Schema Newsletter #127", + "date": "2024-01-29" + }, + { + "url": "https://example.com/newsletter-128", + "title": "JSON Schema Newsletter #128", + "date": "2024-02-05" + }, + { + "url": "https://example.com/newsletter-129", + "title": "JSON Schema Newsletter #129", + "date": "2024-02-12" + }, + { + "url": "https://example.com/newsletter-130", + "title": "JSON Schema Newsletter #130", + "date": "2024-02-19" + }, + { + "url": "https://example.com/newsletter-131", + "title": "JSON Schema Newsletter #131", + "date": "2024-02-26" + }, + { + "url": "https://example.com/newsletter-132", + "title": "JSON Schema Newsletter #132", + "date": "2024-03-04" + }, + { + "url": "https://example.com/newsletter-133", + "title": "JSON Schema Newsletter #133", + "date": "2024-03-11" + }, + { + "url": "https://example.com/newsletter-134", + "title": "JSON Schema Newsletter #134", + "date": "2024-03-18" + }, + { + "url": "https://example.com/newsletter-135", + "title": "JSON Schema Newsletter #135", + "date": "2024-03-25" + }, + { + "url": "https://example.com/newsletter-136", + "title": "JSON Schema Newsletter #136", + "date": "2024-04-01" + }, + { + "url": "https://example.com/newsletter-137", + "title": "JSON Schema Newsletter #137", + "date": "2024-04-08" + }, + { + "url": "https://example.com/newsletter-138", + "title": "JSON Schema Newsletter #138", + "date": "2024-04-15" + }, + { + "url": "https://example.com/newsletter-139", + "title": "JSON Schema Newsletter #139", + "date": "2024-04-22" + } + ] diff --git a/pages/newsletter/index.page.tsx b/pages/newsletter/index.page.tsx index c1f28b844..24918607b 100644 --- a/pages/newsletter/index.page.tsx +++ b/pages/newsletter/index.page.tsx @@ -3,6 +3,8 @@ import Head from 'next/head'; import { getLayout } from '~/components/SiteLayout'; import NewsletterForm from '~/components/Newsletter'; import { SectionContext } from '~/context'; +import data from '../../data/newsletter.json'; +import NewsletterCard from '~/components/NewsletterCard'; export default function StaticMarkdownPage() { const newTitle = 'JSON Schema Newsletter'; @@ -14,9 +16,15 @@ export default function StaticMarkdownPage() {
+
+

+ Grouping by 2024 +

+ +