@@ -30,6 +30,7 @@ export default function Ecosystem({
30 marketplaces,
30 marketplaces,
31 organizations,
31 organizations,
34 const router = useRouter();
35 const router = useRouter();
@@ -54,6 +55,9 @@ export default function Ecosystem({
54 case "organizations":
55 case "organizations":
55 title = "Organizations • Ecosystem";
56 title = "Organizations • Ecosystem";
59+ title = "Articles • Ecosystem";
58 title = "Ecosystem Spotlight";
62 title = "Ecosystem Spotlight";
@@ -112,8 +116,8 @@ export default function Ecosystem({
114 className={classnames("grid gap-12 w-full", {
118 className={classnames("grid gap-12 w-full", {
115− "grid-cols-2 md:grid-cols-3": type !== "podcasts",
119+ "grid-cols-2 md:grid-cols-3": type == "organizations" || type == "marketplaces",
116− "grid-cols-1": type === "podcasts",
120+ "grid-cols-1": type === "podcasts" || type === "articles",
117 "grid-cols-1 md:grid-cols-1 lg:grid-cols-1 xl:grid-cols-2":
121 "grid-cols-1 md:grid-cols-1 lg:grid-cols-1 xl:grid-cols-2":
118 type === "applications" || type === "groups",
122 type === "applications" || type === "groups",
119 hidden: type === undefined,
123 hidden: type === undefined,
@@ -209,6 +213,26 @@ export default function Ecosystem({
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 ">
227+ <p className="text-wall-400">
228+ {formatDate(generateDisplayDate(article.date))}
@@ -283,6 +307,16 @@ function EcosystemSidebar() {
285 </ActiveLink>
309 </ActiveLink>
312+ currentPath={currentPath}
313+ className="mr-5 type-ui"
314+ href="/ecosystem?type=articles"
@@ -362,6 +396,11 @@ export async function getStaticProps({}) {
362 "podcasts",
396 "podcasts",
399+ const articles = getAllPosts(
400+ ["title", "image", "date", "publication", "author", "slug"],
365 const organizations = getAllPosts(
404 const organizations = getAllPosts(
366 ["title", "image", "slug"],
405 ["title", "image", "slug"],
367 "organizations"
406 "organizations"
@@ -411,6 +450,7 @@ export async function getStaticProps({}) {
411 ...applications.map((e) => ({ ...e, type: "Application" })),
450 ...applications.map((e) => ({ ...e, type: "Application" })),
412 ...organizations.map((e) => ({ ...e, type: "Organization" })),
451 ...organizations.map((e) => ({ ...e, type: "Organization" })),
413 ...podcasts.map((e) => ({ ...e, type: "Podcast" })),
452 ...podcasts.map((e) => ({ ...e, type: "Podcast" })),
453+ ...articles.map((e) => ({ ...e, type: "Article" })),
414 ...marketplaces.map((e) => ({ ...e, type: "Marketplace" })),
454 ...marketplaces.map((e) => ({ ...e, type: "Marketplace" })),
415 ].filter((e) => e.title === post[feat].title)?.[0];
455 ].filter((e) => e.title === post[feat].title)?.[0];
416 post[feat].image = post[feat]?.image || matchedPost?.image || null;
456 post[feat].image = post[feat]?.image || matchedPost?.image || null;
@@ -433,6 +473,7 @@ export async function getStaticProps({}) {
433 marketplaces,
473 marketplaces,
434 podcasts,
474 podcasts,
435 organizations,
475 organizations,