on master help sign in
gc/octspot
6c350baGordon
components/ecosystem/IndexCard.js+1−1
@@ -43,7 +43,7 @@ const badge = (type) => {
43 "bg-[#83b2d4]": type === "Application",
43 "bg-[#83b2d4]": type === "Application",
44 "bg-wall-600": type === "Podcast",
44 "bg-wall-600": type === "Podcast",
45 "bg-[#8dd5b1]": type === "Marketplace",
45 "bg-[#8dd5b1]": type === "Marketplace",
46− "bg-[#000000]": type === "Article",
46+ "bg-[#B5966D]": type === "Article"
47 }
47 }
48 )}
48 )}
49 >
49 >
components/ecosystem/Post.js+2−1
@@ -52,7 +52,7 @@ export default function Post({ post }) {
52 {post[feat].type === "Article" && (
52 {post[feat].type === "Article" && (
53 <Link href={href || "#"} passHref>
53 <Link href={href || "#"} passHref>
54 <a class="button-sm text-white flex-col bg-green-400 cursor-pointer pr-4 w-fit">
54 <a class="button-sm text-white flex-col bg-green-400 cursor-pointer pr-4 w-fit">
55− Listen to {post[feat].type}
55+ Read {post[feat].type}
56 </a>
56 </a>
57 </Link>
57 </Link>
58 )}
58 )}
@@ -95,6 +95,7 @@ const badge = (type) => {
95 "bg-[#83b2d4]": type === "Application",
95 "bg-[#83b2d4]": type === "Application",
96 "bg-wall-600": type === "Podcast",
96 "bg-wall-600": type === "Podcast",
97 "bg-[#8dd5b1]": type === "Marketplace",
97 "bg-[#8dd5b1]": type === "Marketplace",
98+ "bg-[#B5966D]": type === "Article",
98 }
99 }
99 )}
100 )}
100 >
101 >
content/ecosystem/spotlight/2022-october.mdnew file+41
@@ -0,0 +1,41 @@
1++++
2+title = "October 2022"
3+date = "2022-10-03"
4+
5+[featured-1]
6+title = "Uqbar Development Suite"
7+description = "Write smart contracts and blockchain applications in an integrated development suite."
8+image=""
9+content = """
10+At Assembly 2022 Uqbar debuted their brand new developer toolkit: Ziggurat. Ziggurat provides a unified development interface where programmers can write contracts, receive compiler feedback, and test on a fake chain. This promises a huge improvement on the developer experience for smart contracts and blockchain application development alike. Note: As Ziggurat is in active development and undergoing frequent updates, Uqbar recommends installing Ziggurat on a moon rather than your primary ship.
11+
12+
13+![Screenshot](https://storage.googleapis.com/media.urbit.org/site/ecosystem/applications/sphinx2.png)
14+
15+"""
16+
17+[featured-2]
18+title = "Tlon"
19+description = "The organization that created Urbit is now focused on building the best possible foundational user experiences on Urbit."
20+image="https://storage.googleapis.com/media.urbit.org/site/ecosystem/spotlight/tlonlogos.png"
21+content = """
22+
23+Tlon is the organization responsible for the genesis of Urbit and now focused on creating lasting and effective tools for Urbit. Formerly rather quiet about its development activity, Tlon has recently launched a [beautiful public website](https://tlon.io) and is sharing more of its process in the new [Tlon public group](/groups/~nibset-napwyn/tlon-public).
24+
25+![Screenshot](https://storage.googleapis.com/media.urbit.org/site/ecosystem/spotlight/tlonio.png)
26+
27+
28+"""
29+
30+[featured-3]
31+
32+title = "The Dream of Digital Homesteading"
33+image="https://storage.googleapis.com/media.urbit.org/site/ecosystem/spotlight/compact-thumb2.png"
34+description = "Compact Magazine's managing editor Geoff Shullenberger attended Assembly 2022 and tuned into both the event vibes and Urbit's technical aspirations."
35+content = """
36+
37+Compact Magazine provides a clear-eyed view of both the social and technical visions of the Urbit community as well as the literary milieu around it.
38+![](https://storage.googleapis.com/media.urbit.org/site/ecosystem/spotlight/thedreamofdigitalhomesteading.png)
39+
40+"""
41++++
pages/ecosystem/spotlight/[slug].js+6
@@ -55,6 +55,11 @@ export async function getStaticProps({ params }) {
55 "podcasts",
55 "podcasts",
56 "date"
56 "date"
57 );
57 );
58+ const articles = getAllPosts(
59+ ["title", "image", "date", "publication", "author", "slug"],
60+ "articles",
61+ "date"
62+ );
58 const organizations = getAllPosts(
63 const organizations = getAllPosts(
59 ["title", "image", "slug"],
64 ["title", "image", "slug"],
60 "organizations"
65 "organizations"
@@ -86,6 +91,7 @@ export async function getStaticProps({ params }) {
86 ...organizations.map((e) => ({ ...e, type: "Organization" })),
91 ...organizations.map((e) => ({ ...e, type: "Organization" })),
87 ...podcasts.map((e) => ({ ...e, type: "Podcast" })),
92 ...podcasts.map((e) => ({ ...e, type: "Podcast" })),
88 ...marketplaces.map((e) => ({ ...e, type: "Marketplace" })),
93 ...marketplaces.map((e) => ({ ...e, type: "Marketplace" })),
94+ ...articles.map((e) => ({ ...e, type: "Article" })),
89 ].filter((e) => e.title === post[feat].title)?.[0];
95 ].filter((e) => e.title === post[feat].title)?.[0];
90 post[feat].image = post[feat]?.image || matchedPost?.image || null;
96 post[feat].image = post[feat]?.image || matchedPost?.image || null;
91 post[feat].type = matchedPost?.type || "Podcast";
97 post[feat].type = matchedPost?.type || "Podcast";