@@ -30,6 +30,7 @@ export default function Ecosystem({
3030 marketplaces,
3131 organizations,
3232 podcasts,
33+ articles
3334}) {
3435 const router = useRouter();
3536
@@ -54,6 +55,9 @@ export default function Ecosystem({
5455 case "organizations":
5556 title = "Organizations • Ecosystem";
5657 break;
58+ case "articles":
59+ title = "Articles • Ecosystem";
60+ break;
5761 default:
5862 title = "Ecosystem Spotlight";
5963 }
@@ -112,8 +116,8 @@ export default function Ecosystem({
112116
113117 <div
114118 className={classnames("grid gap-12 w-full", {
115− "grid-cols-2 md:grid-cols-3": type !== "podcasts",
116− "grid-cols-1": type === "podcasts",
119+ "grid-cols-2 md:grid-cols-3": type == "organizations" || type == "marketplaces",
120+ "grid-cols-1": type === "podcasts" || type === "articles",
117121 "grid-cols-1 md:grid-cols-1 lg:grid-cols-1 xl:grid-cols-2":
118122 type === "applications" || type === "groups",
119123 hidden: type === undefined,
@@ -209,6 +213,26 @@ export default function Ecosystem({
209213 </div>
210214 </Link>
211215 ))}
216+
217+ {type === "articles" &&
218+ articles.map((article) => (
219+ <Link href={`/articles/${article.slug}`}>
220+ <div className="flex cursor-pointer space-x-4 items-center hover:opacity-90">
221+ <img className="w-28" src={article.image} />
222+ <div className="flex flex-col space-y-2 min-w-0">
223+ <p className="font-bold">{article.publication}</p>
224+ <p className="min-w-0 min-h-0 leading-5 ">
225+ {article.title}
226+ </p>
227+ <p className="text-wall-400">
228+ {formatDate(generateDisplayDate(article.date))}
229+ </p>
230+ </div>
231+ </div>
232+ </Link>
233+ ))}
234+
235+
212236 </div>
213237 </div>
214238 </div>
@@ -283,6 +307,16 @@ function EcosystemSidebar() {
283307 >
284308 Podcasts
285309 </ActiveLink>
310+
311+ <ActiveLink
312+ currentPath={currentPath}
313+ className="mr-5 type-ui"
314+ href="/ecosystem?type=articles"
315+ >
316+ Articles
317+ </ActiveLink>
318+
319+
286320 </div>
287321 );
288322}
@@ -362,6 +396,11 @@ export async function getStaticProps({}) {
362396 "podcasts",
363397 "date"
364398 );
399+ const articles = getAllPosts(
400+ ["title", "image", "date", "publication", "author", "slug"],
401+ "articles",
402+ "date"
403+ );
365404 const organizations = getAllPosts(
366405 ["title", "image", "slug"],
367406 "organizations"
@@ -411,6 +450,7 @@ export async function getStaticProps({}) {
411450 ...applications.map((e) => ({ ...e, type: "Application" })),
412451 ...organizations.map((e) => ({ ...e, type: "Organization" })),
413452 ...podcasts.map((e) => ({ ...e, type: "Podcast" })),
453+ ...articles.map((e) => ({ ...e, type: "Article" })),
414454 ...marketplaces.map((e) => ({ ...e, type: "Marketplace" })),
415455 ].filter((e) => e.title === post[feat].title)?.[0];
416456 post[feat].image = post[feat]?.image || matchedPost?.image || null;
@@ -433,6 +473,7 @@ export async function getStaticProps({}) {
433473 marketplaces,
434474 podcasts,
435475 organizations,
476+ articles
436477 },
437478 };
438479}