on master help sign in
various: add meta tags
098f727Matilde Park
components/BasicPage.js+2
@@ -1,5 +1,6 @@
1import { useRouter } from "next/router";
1import { useRouter } from "next/router";
2import Head from "next/head";
2import Head from "next/head";
3+import Meta from "../components/Meta";
3import ErrorPage from "../pages/404";
4import ErrorPage from "../pages/404";
4import Container from "./Container";
5import Container from "./Container";
5import Header from "./Header";
6import Header from "./Header";
@@ -18,6 +19,7 @@ export default function BasicPage({ post, markdown, search }) {
18 <Container>
19 <Container>
19 <Head>
20 <Head>
20 <title>Urbit • {post.title}</title>
21 <title>Urbit • {post.title}</title>
22+ {Meta(post)}
21 </Head>
23 </Head>
22 <SingleColumn>
24 <SingleColumn>
23 <Header search={search} />
25 <Header search={search} />
components/Meta.jsnew file+25
@@ -0,0 +1,25 @@
1+export default function Meta(post) {
2+ const author = post?.extra?.author || "Urbit";
3+ const title = `${post?.title} - ` || "";
4+ const description =
5+ post?.description || "Urbit is a personal server built from scratch.";
6+ const image =
7+ post?.extra?.image || "https://media.urbit.org/logo/urbit-logo-card.png";
8+ return (
9+ <>
10+ <link rel="icon" type="image/png" href="/images/favicon.ico" />
11+ <meta
12+ name="twitter:card"
13+ content="summary_large_image"
14+ key="twitter-card"
15+ />
16+ <meta name="twitter:site" content="@urbit" key="twitter-site" />
17+ <meta name="twitter:creator" content="@urbit" key="twitter-creator" />
18+ <meta name="og:title" content={`${title}urbit.org`} key="title" />
19+ <meta name="og:description" content={description} key="description" />
20+ <meta name="description" content={description} />
21+ <meta name="author" content={author} key="author" />
22+ <meta name="twitter:image" content={image} key="image" />
23+ </>
24+ );
25+}
components/PageWithIndex.js+2
@@ -1,5 +1,6 @@
1import { useRouter } from "next/router";
1import { useRouter } from "next/router";
2import Head from "next/head";
2import Head from "next/head";
3+import Meta from "../components/Meta";
3import ErrorPage from "../pages/404";
4import ErrorPage from "../pages/404";
4import Container from "./Container";
5import Container from "./Container";
5import Header from "./Header";
6import Header from "./Header";
@@ -19,6 +20,7 @@ export default function PageWithIndex({ post, markdown, search }) {
19 <Container>
20 <Container>
20 <Head>
21 <Head>
21 <title>Urbit • {post.title}</title>
22 <title>Urbit • {post.title}</title>
23+ {Meta(post)}
22 </Head>
24 </Head>
23 <SingleColumn>
25 <SingleColumn>
24 <Header search={search} />
26 <Header search={search} />
pages/404.js+5
@@ -1,4 +1,5 @@
1import Head from "next/head";
1import Head from "next/head";
2+import Meta from "../components/Meta";
2import Container from "../components/Container";
3import Container from "../components/Container";
3import SingleColumn from "../components/SingleColumn";
4import SingleColumn from "../components/SingleColumn";
4import Header from "../components/Header";
5import Header from "../components/Header";
@@ -6,10 +7,14 @@ import Footer from "../components/Footer";
6import Section from "../components/Section";
7import Section from "../components/Section";
7
8
8export default function NotFound(props) {
9export default function NotFound(props) {
10+ const post = {
11+ title: "404",
12+ };
9 return (
13 return (
10 <Container>
14 <Container>
11 <Head>
15 <Head>
12 <title>404 • urbit.org</title>
16 <title>404 • urbit.org</title>
17+ {Meta(post)}
13 </Head>
18 </Head>
14 <SingleColumn>
19 <SingleColumn>
15 <Header search={props.search} />
20 <Header search={props.search} />
pages/blog.js+7
@@ -1,4 +1,5 @@
1import Head from "next/head";
1import Head from "next/head";
2+import Meta from "../components/Meta";
2import Link from "next/link";
3import Link from "next/link";
3import Container from "../components/Container";
4import Container from "../components/Container";
4import Footer from "../components/Footer";
5import Footer from "../components/Footer";
@@ -10,10 +11,16 @@ import { getAllPosts, formatDate } from "../lib/lib";
10import { contact } from "../lib/constants";
11import { contact } from "../lib/constants";
11
12
12export default function Blog({ posts, search }) {
13export default function Blog({ posts, search }) {
14+ const post = {
15+ title: "Blog",
16+ description:
17+ "Stories from the broader Urbit community, the Urbit Foundation, and the many people contributing to Urbit.",
18+ };
13 return (
19 return (
14 <Container>
20 <Container>
15 <Head>
21 <Head>
16 <title>Blog • urbit.org</title>
22 <title>Blog • urbit.org</title>
23+ {Meta(post)}
17 </Head>
24 </Head>
18 <SingleColumn>
25 <SingleColumn>
19 <Header search={search} />
26 <Header search={search} />
pages/blog/[slug].js+2−3
@@ -7,18 +7,16 @@ import {
7 formatDate,
7 formatDate,
8} from "../../lib/lib";
8} from "../../lib/lib";
9import Head from "next/head";
9import Head from "next/head";
10−import Link from "next/link";
10+import Meta from "../../components/Meta";
11import ErrorPage from "../404";
11import ErrorPage from "../404";
12import Container from "../../components/Container";
12import Container from "../../components/Container";
13import Markdown from "../../components/Markdown";
13import Markdown from "../../components/Markdown";
14import Header from "../../components/Header";
14import Header from "../../components/Header";
15import Footer from "../../components/Footer";
15import Footer from "../../components/Footer";
16−import BackgroundImage from "../../components/BackgroundImage";
17import SingleColumn from "../../components/SingleColumn";
16import SingleColumn from "../../components/SingleColumn";
18import Section from "../../components/Section";
17import Section from "../../components/Section";
19import Contact from "../../components/Contact";
18import Contact from "../../components/Contact";
20import PostPreview from "../../components/PostPreview";
19import PostPreview from "../../components/PostPreview";
21−import { name, contact } from "../../lib/constants";
22import markdownStyles from "../../styles/markdown.module.css";
20import markdownStyles from "../../styles/markdown.module.css";
23import { decode } from "html-entities";
21import { decode } from "html-entities";
24
22
@@ -37,6 +35,7 @@ export default function Post({
37 <Container>
35 <Container>
38 <Head>
36 <Head>
39 <title>{post.title} • Blog • urbit.org</title>
37 <title>{post.title} • Blog • urbit.org</title>
38+ {Meta(post)}
40 </Head>
39 </Head>
41 <SingleColumn>
40 <SingleColumn>
42 <Header search={search} />
41 <Header search={search} />
pages/community/[[...slug]].js+2
@@ -5,6 +5,7 @@ import { useState } from "react";
5import classnames from "classnames";
5import classnames from "classnames";
6import { join } from "path";
6import { join } from "path";
7import { getDocs, formatDate, buildPageTree, getPage } from "../../lib/lib";
7import { getDocs, formatDate, buildPageTree, getPage } from "../../lib/lib";
8+import Meta from "../../components/Meta";
8import Markdown from "../../components/Markdown";
9import Markdown from "../../components/Markdown";
9import ContentArea from "../../components/ContentArea";
10import ContentArea from "../../components/ContentArea";
10import Sidebar from "../../components/Sidebar";
11import Sidebar from "../../components/Sidebar";
@@ -64,6 +65,7 @@ export default function UsingLayout({ posts, data, params, search, markdown }) {
64 <>
65 <>
65 <Head>
66 <Head>
66 <title>{data.title} • Community • urbit.org</title>
67 <title>{data.title} • Community • urbit.org</title>
68+ {Meta(data)}
67 </Head>
69 </Head>
68 <div className="flex w-screen h-screen min-h-screen w-screen">
70 <div className="flex w-screen h-screen min-h-screen w-screen">
69 <Sidebar search={search}>
71 <Sidebar search={search}>
pages/docs/[[...slug]].js+2
@@ -10,6 +10,7 @@ import {
10 buildPageTree,
10 buildPageTree,
11 getPage,
11 getPage,
12} from "../../lib/lib";
12} from "../../lib/lib";
13+import Meta from "../../components/Meta";
13import Pagination from "../../components/Pagination";
14import Pagination from "../../components/Pagination";
14import Markdown from "../../components/Markdown";
15import Markdown from "../../components/Markdown";
15import ContentArea from "../../components/ContentArea";
16import ContentArea from "../../components/ContentArea";
@@ -123,6 +124,7 @@ export default function DocsLayout({
123 <>
124 <>
124 <Head>
125 <Head>
125 <title>{data.title} • Documentation • urbit.org</title>
126 <title>{data.title} • Documentation • urbit.org</title>
127+ {Meta(data)}
126 </Head>
128 </Head>
127 <div className="flex w-screen h-screen min-h-screen w-screen">
129 <div className="flex w-screen h-screen min-h-screen w-screen">
128 <Sidebar search={search}>
130 <Sidebar search={search}>
pages/events.js+6−3
@@ -1,13 +1,11 @@
1import Head from "next/head";
1import Head from "next/head";
2+import Meta from "../components/Meta";
2import Link from "next/link";
3import Link from "next/link";
3−import { useState } from "react";
4import Container from "../components/Container";
4import Container from "../components/Container";
5import Footer from "../components/Footer";
5import Footer from "../components/Footer";
6import Header from "../components/Header";
6import Header from "../components/Header";
7−import Search from "../components/Search";
8import SingleColumn from "../components/SingleColumn";
7import SingleColumn from "../components/SingleColumn";
9import Section from "../components/Section";
8import Section from "../components/Section";
10−import BackgroundImage from "../components/BackgroundImage";
11import { getAllPosts, formatDate } from "../lib/lib";
9import { getAllPosts, formatDate } from "../lib/lib";
12import { contact } from "../lib/constants";
10import { contact } from "../lib/constants";
13
11
@@ -67,10 +65,15 @@ export function EventCard({ event, dir, className }) {
67}
65}
68
66
69export default function Events({ pastEvents, comingSoon, search }) {
67export default function Events({ pastEvents, comingSoon, search }) {
68+ const post = {
69+ title: "Events",
70+ description: "In-person, remote, and recorded events about Urbit.",
71+ };
70 return (
72 return (
71 <Container>
73 <Container>
72 <Head>
74 <Head>
73 <title>Events • urbit.org</title>
75 <title>Events • urbit.org</title>
76+ {Meta(post)}
74 </Head>
77 </Head>
75 <SingleColumn>
78 <SingleColumn>
76 <Header search={search} />
79 <Header search={search} />
pages/events/[slug].js+2−4
@@ -7,18 +7,15 @@ import {
7 formatDate,
7 formatDate,
8} from "../../lib/lib";
8} from "../../lib/lib";
9import Head from "next/head";
9import Head from "next/head";
10−import Link from "next/link";
10+import Meta from "../../components/Meta";
11−import ErrorPage from "../404";
12import Container from "../../components/Container";
11import Container from "../../components/Container";
13import Markdown from "../../components/Markdown";
12import Markdown from "../../components/Markdown";
14import Header from "../../components/Header";
13import Header from "../../components/Header";
15import Footer from "../../components/Footer";
14import Footer from "../../components/Footer";
16−import BackgroundImage from "../../components/BackgroundImage";
17import SingleColumn from "../../components/SingleColumn";
15import SingleColumn from "../../components/SingleColumn";
18import Contact from "../../components/Contact";
16import Contact from "../../components/Contact";
19import EventPreview from "../../components/EventPreview";
17import EventPreview from "../../components/EventPreview";
20import Section from "../../components/Section";
18import Section from "../../components/Section";
21−import { name, contact } from "../../lib/constants";
22import markdownStyles from "../../styles/markdown.module.css";
19import markdownStyles from "../../styles/markdown.module.css";
23import { decode } from "html-entities";
20import { decode } from "html-entities";
24
21
@@ -33,6 +30,7 @@ export default function Event({
33 <Container>
30 <Container>
34 <Head>
31 <Head>
35 <title>{post.title} • Events • urbit.org</title>
32 <title>{post.title} • Events • urbit.org</title>
33+ {Meta(post)}
36 </Head>
34 </Head>
37 <SingleColumn>
35 <SingleColumn>
38 <Header search={search} />
36 <Header search={search} />
pages/getting-started/[[...slug]].js+3−2
@@ -1,10 +1,10 @@
1import Head from "next/head";
1import Head from "next/head";
2+import Meta from "../../components/Meta";
2import Link from "next/link";
3import Link from "next/link";
3import { useRouter } from "next/router";
4import { useRouter } from "next/router";
4−import { useState } from "react";
5import classnames from "classnames";
5import classnames from "classnames";
6import { join } from "path";
6import { join } from "path";
7−import { getDocs, formatDate, buildPageTree, getPage } from "../../lib/lib";
7+import { buildPageTree, getPage } from "../../lib/lib";
8import Markdown from "../../components/Markdown";
8import Markdown from "../../components/Markdown";
9import ContentArea from "../../components/ContentArea";
9import ContentArea from "../../components/ContentArea";
10import Sidebar from "../../components/Sidebar";
10import Sidebar from "../../components/Sidebar";
@@ -73,6 +73,7 @@ export default function UsingLayout({ posts, data, params, search, markdown }) {
73 <>
73 <>
74 <Head>
74 <Head>
75 <title>{data.title} • Getting Started • urbit.org</title>
75 <title>{data.title} • Getting Started • urbit.org</title>
76+ {Meta(data)}
76 </Head>
77 </Head>
77 <div className="flex w-screen h-screen min-h-screen w-screen">
78 <div className="flex w-screen h-screen min-h-screen w-screen">
78 <Sidebar search={search}>
79 <Sidebar search={search}>
pages/grants.js+6−4
@@ -1,20 +1,17 @@
1import Head from "next/head";
1import Head from "next/head";
2+import Meta from "../components/Meta";
2import Link from "next/link";
3import Link from "next/link";
3import { useState } from "react";
4import { useState } from "react";
4import classnames from "classnames";
5import classnames from "classnames";
5import Container from "../components/Container";
6import Container from "../components/Container";
6import Footer from "../components/Footer";
7import Footer from "../components/Footer";
7import Header from "../components/Header";
8import Header from "../components/Header";
8−import Search from "../components/Search";
9import SingleColumn from "../components/SingleColumn";
9import SingleColumn from "../components/SingleColumn";
10−import BackgroundImage from "../components/BackgroundImage";
11−import TabCarousel from "../components/TabCarousel";
12import Section from "../components/Section";
10import Section from "../components/Section";
13import PostPreview from "../components/PostPreview";
11import PostPreview from "../components/PostPreview";
14import GrantPreview from "../components/GrantPreview";
12import GrantPreview from "../components/GrantPreview";
15import {
13import {
16 getAllPosts,
14 getAllPosts,
17− formatDate,
18 getGrantsCategories,
15 getGrantsCategories,
19 getGrantsTypes,
16 getGrantsTypes,
20 getPostBySlug,
17 getPostBySlug,
@@ -74,6 +71,10 @@ export default function Grants({
74 const [activeTypes, setTypes] = useState(types);
71 const [activeTypes, setTypes] = useState(types);
75 const [includeCompleted, setIncludeCompleted] = useState(false);
72 const [includeCompleted, setIncludeCompleted] = useState(false);
76 const [tab, setTab] = useState(0);
73 const [tab, setTab] = useState(0);
74+ const post = {
75+ title: "Grants",
76+ description: "Contribute to the Urbit project while earning address space.",
77+ };
77
78
78 const postsByCompletion = posts.filter((post) => {
79 const postsByCompletion = posts.filter((post) => {
79 return includeCompleted
80 return includeCompleted
@@ -112,6 +113,7 @@ export default function Grants({
112 <Container>
113 <Container>
113 <Head>
114 <Head>
114 <title>Grants • urbit.org</title>
115 <title>Grants • urbit.org</title>
116+ {Meta(post)}
115 </Head>
117 </Head>
116 <SingleColumn>
118 <SingleColumn>
117 <Header search={search} />
119 <Header search={search} />
pages/grants/[slug].js+2−3
@@ -6,7 +6,7 @@ import {
6 getSimilarGrants,
6 getSimilarGrants,
7} from "../../lib/lib";
7} from "../../lib/lib";
8import Head from "next/head";
8import Head from "next/head";
9−import Link from "next/link";
9+import Meta from "../../components/Meta";
10import { decode } from "html-entities";
10import { decode } from "html-entities";
11import classnames from "classnames";
11import classnames from "classnames";
12import ErrorPage from "../404";
12import ErrorPage from "../404";
@@ -14,11 +14,9 @@ import Container from "../../components/Container";
14import Markdown from "../../components/Markdown";
14import Markdown from "../../components/Markdown";
15import Header from "../../components/Header";
15import Header from "../../components/Header";
16import Footer from "../../components/Footer";
16import Footer from "../../components/Footer";
17−import BackgroundImage from "../../components/BackgroundImage";
18import SingleColumn from "../../components/SingleColumn";
17import SingleColumn from "../../components/SingleColumn";
19import GrantPreview from "../../components/GrantPreview";
18import GrantPreview from "../../components/GrantPreview";
20import Section from "../../components/Section";
19import Section from "../../components/Section";
21−import { name, contact } from "../../lib/constants";
22import markdownStyles from "../../styles/markdown.module.css";
20import markdownStyles from "../../styles/markdown.module.css";
23
21
24export default function Grant({ post, markdown, search, similarGrants }) {
22export default function Grant({ post, markdown, search, similarGrants }) {
@@ -33,6 +31,7 @@ export default function Grant({ post, markdown, search, similarGrants }) {
33 <Container>
31 <Container>
34 <Head>
32 <Head>
35 <title>{post.title} • Grants • urbit.org</title>
33 <title>{post.title} • Grants • urbit.org</title>
34+ {Meta(post)}
36 </Head>
35 </Head>
37 <SingleColumn>
36 <SingleColumn>
38 <Header search={search} />
37 <Header search={search} />
pages/index.js+2
@@ -1,4 +1,5 @@
1import Head from "next/head";
1import Head from "next/head";
2+import Meta from "../components/Meta";
2import Link from "next/link";
3import Link from "next/link";
3import React, { useState, useEffect } from "react";
4import React, { useState, useEffect } from "react";
4import Container from "../components/Container";
5import Container from "../components/Container";
@@ -51,6 +52,7 @@ export default function Home({ posts, events, openGrantsCount, search }) {
51 <Container>
52 <Container>
52 <Head>
53 <Head>
53 <title>urbit.org</title>
54 <title>urbit.org</title>
55+ {Meta()}
54 </Head>
56 </Head>
55 <SingleColumn>
57 <SingleColumn>
56 <Header search={search} />
58 <Header search={search} />
pages/media.js+7
@@ -1,4 +1,5 @@
1import Head from "next/head";
1import Head from "next/head";
2+import Meta from "../components/Meta";
2import Container from "../components/Container";
3import Container from "../components/Container";
3import Footer from "../components/Footer";
4import Footer from "../components/Footer";
4import Header from "../components/Header";
5import Header from "../components/Header";
@@ -8,10 +9,16 @@ import Section from "../components/Section";
8import { getAllPosts } from "../lib/lib";
9import { getAllPosts } from "../lib/lib";
9
10
10export default function Media({ posts, search }) {
11export default function Media({ posts, search }) {
12+ const post = {
13+ title: "Media",
14+ description:
15+ "A selection of external appearances by the Tlon Corporation and the Urbit Foundation.",
16+ };
11 return (
17 return (
12 <Container>
18 <Container>
13 <Head>
19 <Head>
14 <title>Media • urbit.org</title>
20 <title>Media • urbit.org</title>
21+ {Meta(post)}
15 </Head>
22 </Head>
16 <SingleColumn>
23 <SingleColumn>
17 <Header search={search} />
24 <Header search={search} />
pages/media/[slug].js+3−9
@@ -1,12 +1,7 @@
1import { useRouter } from "next/router";
1import { useRouter } from "next/router";
2−import {
3− getPostBySlug,
2+import { getPostBySlug, getAllPosts, formatDate } from "../../lib/lib";
4− getAllPosts,
5− getNextPost,
6− getPreviousPost,
7− formatDate,
8−} from "../../lib/lib";
9import Head from "next/head";
3import Head from "next/head";
4+import Meta from "../../components/Meta";
10import ErrorPage from "../404";
5import ErrorPage from "../404";
11import Container from "../../components/Container";
6import Container from "../../components/Container";
12import Markdown from "../../components/Markdown";
7import Markdown from "../../components/Markdown";
@@ -14,9 +9,7 @@ import Header from "../../components/Header";
14import Footer from "../../components/Footer";
9import Footer from "../../components/Footer";
15import SingleColumn from "../../components/SingleColumn";
10import SingleColumn from "../../components/SingleColumn";
16import Contact from "../../components/Contact";
11import Contact from "../../components/Contact";
17−import PostPreview from "../../components/PostPreview";
18import Section from "../../components/Section";
12import Section from "../../components/Section";
19−import { contact } from "../../lib/constants";
20import markdownStyles from "../../styles/markdown.module.css";
13import markdownStyles from "../../styles/markdown.module.css";
21import { decode } from "html-entities";
14import { decode } from "html-entities";
22
15
@@ -29,6 +22,7 @@ export default function MediaPage({ post, markdown, search }) {
29 <Container>
22 <Container>
30 <Head>
23 <Head>
31 <title>{post.title} • Media • urbit.org</title>
24 <title>{post.title} • Media • urbit.org</title>
25+ {Meta(post)}
32 </Head>
26 </Head>
33 <SingleColumn>
27 <SingleColumn>
34 <Header search={search} />
28 <Header search={search} />
pages/understanding-urbit/[[...slug]].js+2
@@ -1,4 +1,5 @@
1import Head from "next/head";
1import Head from "next/head";
2+import Meta from "../../components/Meta";
2import Link from "next/link";
3import Link from "next/link";
3import { useRouter } from "next/router";
4import { useRouter } from "next/router";
4import classnames from "classnames";
5import classnames from "classnames";
@@ -69,6 +70,7 @@ export default function UnderstandingLayout({
69 <>
70 <>
70 <Head>
71 <Head>
71 <title>{data.title} • Understanding Urbit • urbit.org</title>
72 <title>{data.title} • Understanding Urbit • urbit.org</title>
73+ {Meta(data)}
72 </Head>
74 </Head>
73 <div className="flex w-screen h-screen min-h-screen w-screen">
75 <div className="flex w-screen h-screen min-h-screen w-screen">
74 <Sidebar search={search}>
76 <Sidebar search={search}>
pages/updates.js+7−8
@@ -1,4 +1,5 @@
1import Head from "next/head";
1import Head from "next/head";
2+import Meta from "../components/Meta";
2import Link from "next/link";
3import Link from "next/link";
3import Container from "../components/Container";
4import Container from "../components/Container";
4import Footer from "../components/Footer";
5import Footer from "../components/Footer";
@@ -10,24 +11,22 @@ import { getAllPosts, formatDate } from "../lib/lib";
10import { contact } from "../lib/constants";
11import { contact } from "../lib/constants";
11
12
12export default function Blog({ posts, search }) {
13export default function Blog({ posts, search }) {
14+ const post = {
15+ title: "Updates",
16+ description: "Missives from the Urbit Foundation.",
17+ };
13 return (
18 return (
14 <Container>
19 <Container>
15 <Head>
20 <Head>
16 <title>Updates • urbit.org</title>
21 <title>Updates • urbit.org</title>
22+ {Meta(post)}
17 </Head>
23 </Head>
18 <SingleColumn>
24 <SingleColumn>
19 <Header search={search} />
25 <Header search={search} />
20 <Section narrow>
26 <Section narrow>
21 <div className="measure">
27 <div className="measure">
22 <h1 className="pb-16">Updates</h1>
28 <h1 className="pb-16">Updates</h1>
23− <p className="pb-6">
29+ <p className="pb-6">Missives from the Urbit Foundation.</p>
24− Stories from the broader Urbit community, the Urbit Foundation,
25− and the many people contributing to Urbit.
26− </p>
27− <p>
28− <a href={contact.newsletter}>Subscribe</a> to the Urbit Newsletter
29− for regular updates, including new blog posts and events.
30− </p>
31 </div>
30 </div>
32 </Section>
31 </Section>
33 <Section narrow>
32 <Section narrow>
pages/updates/[slug].js+2−4
@@ -7,18 +7,15 @@ import {
7 formatDate,
7 formatDate,
8} from "../../lib/lib";
8} from "../../lib/lib";
9import Head from "next/head";
9import Head from "next/head";
10−import Link from "next/link";
10+import Meta from "../../components/Meta";
11import ErrorPage from "../404";
11import ErrorPage from "../404";
12import Container from "../../components/Container";
12import Container from "../../components/Container";
13import Markdown from "../../components/Markdown";
13import Markdown from "../../components/Markdown";
14import Header from "../../components/Header";
14import Header from "../../components/Header";
15import Footer from "../../components/Footer";
15import Footer from "../../components/Footer";
16−import BackgroundImage from "../../components/BackgroundImage";
17import SingleColumn from "../../components/SingleColumn";
16import SingleColumn from "../../components/SingleColumn";
18import Section from "../../components/Section";
17import Section from "../../components/Section";
19import Contact from "../../components/Contact";
18import Contact from "../../components/Contact";
20−import PostPreview from "../../components/PostPreview";
21−import { name, contact } from "../../lib/constants";
22import markdownStyles from "../../styles/markdown.module.css";
19import markdownStyles from "../../styles/markdown.module.css";
23import { decode } from "html-entities";
20import { decode } from "html-entities";
24
21
@@ -37,6 +34,7 @@ export default function Post({
37 <Container>
34 <Container>
38 <Head>
35 <Head>
39 <title>{post.title} • Updates • urbit.org</title>
36 <title>{post.title} • Updates • urbit.org</title>
37+ {Meta(post)}
40 </Head>
38 </Head>
41 <SingleColumn>
39 <SingleColumn>
42 <Header search={search} />
40 <Header search={search} />
pages/using/[[...slug]].js+2
@@ -1,4 +1,5 @@
1import Head from "next/head";
1import Head from "next/head";
2+import Meta from "../../components/Meta";
2import Link from "next/link";
3import Link from "next/link";
3import { useRouter } from "next/router";
4import { useRouter } from "next/router";
4import { useState } from "react";
5import { useState } from "react";
@@ -101,6 +102,7 @@ export default function UsingLayout({ posts, data, params, search, markdown }) {
101 <>
102 <>
102 <Head>
103 <Head>
103 <title>{data.title} • Operator's Manual • urbit.org</title>
104 <title>{data.title} • Operator's Manual • urbit.org</title>
105+ {Meta(data)}
104 </Head>
106 </Head>
105 <div className="flex w-screen h-screen min-h-screen w-screen">
107 <div className="flex w-screen h-screen min-h-screen w-screen">
106 <Sidebar search={search}>
108 <Sidebar search={search}>