@@ -19,6 +19,7 @@ import PostPreview from "../components/PostPreview";
1919import EventPreview from "../components/EventPreview";
2020import { eventKeys } from "../lib/constants";
2121import IndexCard from "../components/ecosystem/IndexCard";
22+import HighlightCard from "../components/HighlightCard";
2223import fs from "fs";
2324import path from "path";
2425import Meta from "../components/Meta";
@@ -26,6 +27,7 @@ import { matchEcosystemPost } from "../lib/lib";
2627
2728export default function Home({
2829 posts,
30+ highlights,
2931 ecosystem,
3032 events,
3133 grantNumbers,
@@ -58,27 +60,20 @@ export default function Home({
5860 // Hero
5961 }
6062
63+ {
64+ // Highlights
65+ }
6166 <Section className="pb-12">
62− <div className="bg-wall-100 w-full p-4 md:p-8 rounded-3xl flex flex-wrap items-center">
63−
64− <div className="basis-full sm:basis-1/3 pb-4 sm:pb-0">
65− <img className="rounded-xl w-72" src="https://storage.googleapis.com/media.urbit.org/assembly/assembly-thumb2.jpg" />
66− </div>
67− <div className="sm:basis-2/3 sm:pl-6 align-middle">
68− <h2 className="text-2xl pb-2">Assembly 2022</h2 >
69− <p className="max-w-prose pb-4">
70− Select talks and panels are being released from the second annual Urbit confluence in Miami.
71− </p>
72− <Link href="https://assembly.urbit.org" passHref>
73− <a className="button-sm border-2 border-wall-600 text-wall-600 type-sm max-w-fit">
74− Watch Now
75− </a>
76− </Link>
77− </div>
67+ <div className="flex flex-col space-y-4 md:space-y-0 md:flex-row md:space-x-4">
68+ <HighlightCard highlight={highlights[0]} key={highlights[0].slug} />
69+ <HighlightCard highlight={highlights[1]} key={highlights[1].slug} />
70+ <HighlightCard highlight={highlights[2]} key={highlights[2].slug} />
7871 </div>
7972 </Section>
8073
8174
75+
76+
8277 <Section narrow className="space-y-8">
8378
8479 <div className="w-full space-y-8 max-w-prose">
@@ -139,6 +134,53 @@ export default function Home({
139134 </Link>
140135 </div>
141136 </Section>
137+
138+ {
139+ // Build on Urbit Developer CTA
140+ }
141+ <Section narrow>
142+ <h2 className="pb-8">Build on Urbit</h2>
143+ <h4 className="pb-6">
144+ Urbit is a personal OS designed from scratch to run peer-to-peer
145+ applications.
146+ </h4>
147+ <p className="pb-6">
148+ It solves the hard problems of implementing a peer-to-peer network
149+ (including identity, NAT traversal, and exactly-once delivery) in
150+ the kernel so app developers can focus on business logic.
151+ </p>
152+ <p className="pb-6">
153+ The entire OS is a{" "}
154+ <Link href="https://urbit.org/docs/nock/definition/" passHref>
155+ <a>single pure function</a>
156+ </Link>{" "}
157+ that provides application developers with strong guarantees:
158+ automated persistence and memory management, repeatable builds, and
159+ support for hot code reloading.
160+ </p>
161+ <p className="pb-10">
162+ You can get started learning how to{" "}
163+ <Link href="https://urbit.org/docs/development/develop/" passHref>
164+ <a>contribute to the project</a>
165+ </Link>
166+ , or view a variety of{" "}
167+ <Link
168+ href="https://github.com/urbit/awesome-urbit#http-apis-airlock"
169+ passHref
170+ >
171+ <a>libraries</a>
172+ </Link>{" "}
173+ for building on Urbit using the languages you already know.
174+ </p>
175+ <Link href="https://developers.urbit.org" passHref>
176+ <a className="button-lg type-ui text-white bg-green-400 max-w-fit">
177+ Visit Urbit Developers
178+ </a>
179+ </Link>
180+ </Section>
181+
182+
183+
142184 {
143185 // Grants
144186 }
@@ -188,49 +230,6 @@ export default function Home({
188230 </div>
189231 </Section>
190232
191− {
192− // Build on Urbit Developer CTA
193− }
194− <Section narrow>
195− <h2 className="pb-8">Build on Urbit</h2>
196− <h4 className="pb-6">
197− Urbit is a personal OS designed from scratch to run peer-to-peer
198− applications.
199− </h4>
200− <p className="pb-6">
201− It solves the hard problems of implementing a peer-to-peer network
202− (including identity, NAT traversal, and exactly-once delivery) in
203− the kernel so app developers can focus on business logic.
204− </p>
205− <p className="pb-6">
206− The entire OS is a{" "}
207− <Link href="https://urbit.org/docs/nock/definition/" passHref>
208− <a>single pure function</a>
209− </Link>{" "}
210− that provides application developers with strong guarantees:
211− automated persistence and memory management, repeatable builds, and
212− support for hot code reloading.
213− </p>
214− <p className="pb-10">
215− You can get started learning how to{" "}
216− <Link href="https://urbit.org/docs/development/develop/" passHref>
217− <a>contribute to the project</a>
218− </Link>
219− , or view a variety of{" "}
220− <Link
221− href="https://github.com/urbit/awesome-urbit#http-apis-airlock"
222− passHref
223− >
224− <a>libraries</a>
225− </Link>{" "}
226− for building on Urbit using the languages you already know.
227− </p>
228− <Link href="https://developers.urbit.org" passHref>
229− <a className="button-lg type-ui text-white bg-green-400 max-w-fit">
230− Visit Urbit Developers
231− </a>
232− </Link>
233− </Section>
234233
235234 {
236235 // Blog Posts
@@ -272,6 +271,26 @@ export default function Home({
272271 </Link>
273272 </Section>
274273
274+ <Section className="pb-12">
275+ <div className="bg-wall-100 w-full p-4 md:p-8 rounded-3xl flex flex-wrap items-center">
276+
277+ <div className="basis-full sm:basis-1/3 pb-4 sm:pb-0">
278+ <img className="rounded-xl w-72" src="https://storage.googleapis.com/media.urbit.org/assembly/assembly-thumb2.jpg" />
279+ </div>
280+ <div className="sm:basis-2/3 sm:pl-6 align-middle">
281+ <h2 className="text-2xl pb-2">Assembly 2022</h2 >
282+ <p className="max-w-prose pb-4">
283+ Watch talks and panels from last year's confluence in Miami.
284+ </p>
285+ <Link href="https://assembly.urbit.org" passHref>
286+ <a className="button-sm border-2 border-wall-600 text-wall-600 type-sm max-w-fit">
287+ Watch Now
288+ </a>
289+ </Link>
290+ </div>
291+ </div>
292+ </Section>
293+
275294 <Section narrow>
276295 <h2 className="pb-2">Urbit Monthly</h2>
277296 <p className="pb-8">Get monthly email updates on all things Urbit.</p>
@@ -279,6 +298,9 @@ export default function Home({
279298 <Contact emphasize />
280299 </Section>
281300
301+
302+
303+
282304 <Section narrow>
283305 <h2 className="pb-8">Social Media</h2>
284306 <p className="pb-2">
@@ -310,6 +332,8 @@ export default function Home({
310332 );
311333}
312334
335+
336+
313337export async function getStaticProps() {
314338 // Latest blog posts
315339 const posts = getAllPosts(
@@ -318,6 +342,14 @@ export async function getStaticProps() {
318342 "date"
319343 );
320344
345+
346+ // Highlights
347+ const highlights = getAllPosts(
348+ ["title", "slug", "image", "url", "description"],
349+ "highlights"
350+ );
351+
352+
321353 // Latest ecosystem report with matched post metadata
322354 const ecosystem = matchEcosystemPost(getAllPosts(
323355 ["date", "featured-1", "featured-2", "featured-3"],
@@ -389,6 +421,7 @@ export async function getStaticProps() {
389421 return {
390422 props: {
391423 posts,
424+ highlights,
392425 ecosystem,
393426 grantNumbers,
394427 events: happeningNow.concat(futureEvents).concat(pastEvents),