1import Head from "next/head";
2import Meta from "../components/Meta";
3import Link from "next/link";
4import Container from "../components/Container";
5import Footer from "../components/Footer";
6import Header from "../components/Header";
7import SingleColumn from "../components/SingleColumn";
8import BackgroundImage from "../components/BackgroundImage";
9import Section from "../components/Section";
10import { getAllPosts, formatDate, generateDisplayDate } from "../lib/lib";
11import { contact } from "../lib/constants";
13export default function Updates({ posts, search }) {
16 description: "Missives from the Urbit Foundation.",
21 <title>Updates • urbit.org</title>
25 <Header search={search} />
27 <div className="measure">
28 <h1 className="pb-16">Updates</h1>
29 <p className="pb-6">Missives from the Urbit Foundation.</p>
33 {posts.map((post) => {
34 const date = generateDisplayDate(post.date);
36 <div key={post.slug} className="mb-24 cursor-pointer">
37 <Link href={`/updates/${post.slug}`}>
39 <h3 className="mt-4">{post.title}</h3>
40 <div className="flex items-baseline">
41 {post?.extra.author ? (
42 <div className="type-ui text-wall-500 mt-4">
46 {post?.extra.author && post?.extra.ship ? (
47 <div className="mx-1 text-wall-500">•</div>
50 <div className="type-ui text-wall-500 font-mono">
56 <div className="type-ui text-wall-500 mt-2">
71export async function getStaticProps() {
72 const posts = getAllPosts(
73 ["title", "slug", "date", "description", "extra"],
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list