on master help sign in
Merge pull request #1447 from urbit/mp/pass-href

pages, components: use passHref on Link component

commit8c5855bd9c01c11810b3ab7773d8347e694536e7 authormatildepark <matilde.park@urbit.org> dateThu 5 May 2022, 13:32 (4 years ago) parent9a945725e8115a
28 files changed+184−224
components/Contact.js+1−1 components/Footer.js+69−113 components/GrantPreview.js+34−32 components/GrantProgramOverview.js+3−3 components/Header.js+4−4 components/PostPreview.js+1−1 components/Sidebar.js+2−2 components/gateway/Gateway404.js+1−1 content/ids/tiplec-lacnyx.md−1 pages/applications/[[...application]].js+5−5 pages/applications/submit.js+1−1 pages/blog.js+1−1 pages/blog/[slug].js+1−1 pages/docs/[[...slug]].js+2−2 pages/getting-started/[[...slug]].js+2−2 pages/grants.js+21−21 pages/grants/[slug].js+1−1 pages/groups/[[...group]].js+5−5 pages/groups/submit.js+2−2 pages/guides/[slug].js+1−1 pages/ids/[id].js+2−2 pages/ids/submit.js+2−2 pages/index.js+17−14 pages/media/[slug].js+1−1 pages/understanding-urbit/[[...slug]].js+2−2 pages/updates.js+1−1 pages/updates/[slug].js+1−1 pages/using/[[...slug]].js+1−1
components/Contact.js+1−1
@@ -29,7 +29,7 @@ export default function Contact({ emphasize }) {
2929 </h4>
3030 <h4 className="mt-6 text-wall-500 flex-wrap">
3131 Boot Urbit and join{" "}
32− <Link href={`/groups/${contact.urbitCommunity}`}>
32+ <Link href={`/groups/${contact.urbitCommunity}`} passHref>
3333 <a className={linkText}>Urbit Community</a>
3434 </Link>
3535 </h4>
components/Footer.js+69−113
@@ -10,25 +10,17 @@ export default function Footer() {
1010 <Section short className="flex flex-row flex-wrap">
1111 <div className="w-1/2 md:w-1/3 flex flex-col shrink">
1212 <h4 className="mt-16 mb-8">Use Urbit</h4>
13− <Link href="/getting-started">
14− <div>
15− <a className="type-bold text-wall-500">Getting Started</a>
16− </div>
17− </Link>
18− <Link href="/using">
19− <div>
20− <a className="type-bold text-wall-500">User's Manual</a>
21− </div>
22− </Link>
23− <Link href="https://github.com/urbit/port/releases">
24− <div>
25− <a className="type-bold text-wall-500">Urbit Client</a>
26− </div>
27− </Link>
28− <Link href="https://github.com/urbit/urbit/releases">
29− <div>
30− <a className="mt-2 type-bold text-wall-500">Urbit Binaries</a>
31− </div>
13+ <Link href="/getting-started" passHref>
14+ <a className="type-bold text-wall-500">Getting Started</a>
15+ </Link>
16+ <Link href="/using" passHref>
17+ <a className="type-bold text-wall-500">User's Manual</a>
18+ </Link>
19+ <Link href="https://github.com/urbit/port/releases" passHref>
20+ <a className="type-bold text-wall-500">Urbit Client</a>
21+ </Link>
22+ <Link href="https://github.com/urbit/urbit/releases" passHref>
23+ <a className="type-bold text-wall-500">Urbit Binaries</a>
3224 </Link>
3325 {
3426 // <Link href="">
@@ -37,141 +29,105 @@ export default function Footer() {
3729 // </div>
3830 // </Link>
3931 }
40− <Link href="/getting-started/planet/#hosting-providers">
41− <div>
42− <a className="mt-2 type-bold text-wall-500">
43− Hosting Providers
44− </a>
45− </div>
32+ <Link href="/getting-started/planet/#hosting-providers" passHref>
33+ <a className="type-bold text-wall-500">Hosting Providers</a>
4634 </Link>
4735 </div>
4836 <div className="w-1/2 md:w-1/3 flex flex-col shrink">
4937 <h4 className="mt-16 mb-8">About</h4>
50− <Link href="/understanding-urbit">
51− <div>
52− <a className="type-bold text-wall-500">What's Urbit?</a>
53− </div>
54− </Link>
55− <Link href="/understanding-urbit/urbit-id">
56− <div>
57− <a className="mt-2 type-bold text-wall-500">Urbit ID</a>
58− </div>
59− </Link>
60− <Link href="/understanding-urbit/urbit-os">
61− <div>
62− <a className="mt-2 type-bold text-wall-500">Urbit OS</a>
63− </div>
64− </Link>
65− <Link href="/audits">
66− <div>
67− <a className="mt-2 type-bold text-wall-500">Security Audits</a>
68− </div>
69− </Link>
70− <Link href="/faq">
71− <div>
72− <a className="mt-2 type-bold text-wall-500">FAQ</a>
73− </div>
74− </Link>
75− <Link href="https://media.urbit.org/whitepaper.pdf">
76− <div>
77− <a className="mt-2 type-bold text-wall-500">Whitepaper</a>
78− </div>
38+ <Link href="/understanding-urbit" passHref>
39+ <a className="type-bold text-wall-500">What's Urbit?</a>
40+ </Link>
41+ <Link href="/understanding-urbit/urbit-id" passHref>
42+ <a className="type-bold text-wall-500">Urbit ID</a>
43+ </Link>
44+ <Link href="/understanding-urbit/urbit-os" passHref>
45+ <a className="type-bold text-wall-500">Urbit OS</a>
46+ </Link>
47+ <Link href="/audits" passHref>
48+ <a className="type-bold text-wall-500">Security Audits</a>
49+ </Link>
50+ <Link href="/faq" passHref>
51+ <a className="type-bold text-wall-500">FAQ</a>
52+ </Link>
53+ <Link href="https://media.urbit.org/whitepaper.pdf" passHref>
54+ <a className="type-bold text-wall-500">Whitepaper</a>
7955 </Link>
8056 </div>
8157 <div className="w-1/2 md:w-1/3 flex flex-col shrink">
8258 <h4 className="mt-16 mb-8">News</h4>
83− <Link href="/blog">
84− <div>
85− <a className="type-bold text-wall-500">Blog</a>
86− </div>
59+ <Link href="/blog" passHref>
60+ <a className="type-bold text-wall-500">Blog</a>
8761 </Link>
88− <Link href="/events">
89− <div>
90− <a className="mt-2 type-bold text-wall-500">Events</a>
91− </div>
62+ <Link href="/events" passHref>
63+ <a className="type-bold text-wall-500">Events</a>
9264 </Link>
93− <Link href="/updates">
94− <div>
95− <a className="mt-2 type-bold text-wall-500">Updates</a>
96− </div>
65+ <Link href="/updates" passHref>
66+ <a className="type-bold text-wall-500">Updates</a>
9767 </Link>
9868 </div>
9969
10070 <div className="w-1/2 md:w-1/3 flex flex-col">
10171 <h4 className="mt-16 mb-8">Develop</h4>
102− <Link href="/docs">
103− <div>
104− <a className="type-bold text-wall-500">Documentation</a>
105− </div>
72+ <Link href="/docs" passHref>
73+ <a className="type-bold text-wall-500">Documentation</a>
10674 </Link>
107− <Link href="https://github.com/urbit">
108− <div>
109− <a className="mt-2 type-bold text-wall-500">Github</a>
110− </div>
75+ <Link href="https://github.com/urbit" passHref>
76+ <a className="type-bold text-wall-500">Github</a>
11177 </Link>
112− <Link href="https://github.com/urbit/awesome-urbit#http-apis-airlock">
113− <div>
114− <a className="mt-2 type-bold text-wall-500">Airlock APIs</a>
115− </div>
78+ <Link
79+ href="https://github.com/urbit/awesome-urbit#http-apis-airlock"
80+ passHref
81+ >
82+ <a className="type-bold text-wall-500">Airlock APIs</a>
11683 </Link>
11784 </div>
11885 <div className="w-1/2 md:w-1/3 flex flex-col">
11986 <h4 className="mt-16 mb-8">Contribute</h4>
120− <Link href="https://github.com/urbit/urbit/issues">
121− <div>
122− <a className="type-bold text-wall-500">Issue Tracker</a>
123− </div>
87+ <Link href="https://github.com/urbit/urbit/issues" passHref>
88+ <a className="type-bold text-wall-500">Issue Tracker</a>
12489 </Link>
12590 <Link href="/grants">
126− <div>
127− <a className="mt-2 type-bold text-wall-500">Urbit Grants</a>
128− </div>
91+ <a className="type-bold text-wall-500" passHref>
92+ Urbit Grants
93+ </a>
12994 </Link>
13095 </div>
13196
13297 <div className="w-1/2 md:w-1/3 flex flex-col">
13398 <h4 className="mt-16 mb-8">Community</h4>
134− <Link href="https://groups.google.com/a/urbit.org/g/dev?pli=1">
135− <div>
136− <a className="type-bold text-wall-500">Dev Mailing List</a>
137− </div>
99+ <Link
100+ href="https://groups.google.com/a/urbit.org/g/dev?pli=1"
101+ passHref
102+ >
103+ <a className="type-bold text-wall-500">Dev Mailing List</a>
138104 </Link>
139− <Link href="https://github.com/urbit/azimuth">
140− <div>
141− <a className="mt-2 type-bold text-wall-500">Governance</a>
142− </div>
105+ <Link href="https://github.com/urbit/azimuth" passHref>
106+ <a className="type-bold text-wall-500">Governance</a>
143107 </Link>
144− <Link href="https://twitter.com/urbit">
145− <div>
146− <a className="mt-2 type-bold text-wall-500">Twitter</a>
147− </div>
108+ <Link href="https://twitter.com/urbit" passHref>
109+ <a className="type-bold text-wall-500">Twitter</a>
148110 </Link>
149111 </div>
150112 </Section>
151113 <Section className="flex flex-col md:flex-row">
152114 <div className="md:w-1/3">
153− <Link href="/privacy">
154− <div>
155− <a className="type-bold text-wall-500">Privacy Policy</a>
156− </div>
115+ <Link href="/privacy" passHref>
116+ <a className="type-bold text-wall-500">Privacy Policy</a>
157117 </Link>
158118 </div>
159119 <div className="md:w-1/3">
160− <Link href="/terms-of-service">
161− <div>
162− <a className="type-bold text-wall-500">Terms of Service</a>
163− </div>
120+ <Link href="/terms-of-service" passHref>
121+ <a className="type-bold text-wall-500">Terms of Service</a>
164122 </Link>
165123 </div>
166124 <div className="md:w-1/3">
167− <div>
168− <a
169− href={"mailto:" + contact.email}
170− className="type-bold text-wall-500"
171− >
172− {contact.email}
173− </a>
174− </div>
125+ <a
126+ href={"mailto:" + contact.email}
127+ className="type-bold text-wall-500"
128+ >
129+ {contact.email}
130+ </a>
175131 </div>
176132 </Section>
177133 </SingleColumn>
components/GrantPreview.js+34−32
@@ -17,43 +17,45 @@ export default function GrantPreview({ grant }) {
1717 key={grant.slug}
1818 className={`mb-4 cursor-pointer bg-wall-100 rounded-lg ${className}`}
1919 >
20− <Link href={`/grants/${grant.slug}`}>
21− <div className="p-8">
22− <div className="flex items-center mb-4">
23− <h3 className="type-ui" id={grant.slug}>
24− {grant.title}
25− </h3>
26− <div className={`bg-wall-500 text-wall-100 badge-sm ml-2`}>
27− {!isCompleted ? (isOpen ? "Open" : "In Progress") : "Completed"}
20+ <Link href={`/grants/${grant.slug}`} passHref>
21+ <a>
22+ <div className="p-8">
23+ <div className="flex items-center mb-4">
24+ <h3 className="type-ui" id={grant.slug}>
25+ {grant.title}
26+ </h3>
27+ <div className={`bg-wall-500 text-wall-100 badge-sm ml-2`}>
28+ {!isCompleted ? (isOpen ? "Open" : "In Progress") : "Completed"}
29+ </div>
2830 </div>
29− </div>
30− <p className="mb-4">{grant.extra.description}</p>
31− <div className="flex w-full flex-col md:flex-row md:items-center justify-between">
32− <p className="text-wall-500">
33− <strong>Reward: </strong>
34− {grant.extra.reward}
35− </p>
36− <div className="flex items-center flex-wrap md:mt-0 mt-4">
37− {grant.taxonomies.grant_type.map((category) => {
38− const className = classnames({
39− "bg-blue-400 text-white": category === "Proposal",
40− "bg-green-400 text-white": category === "Apprenticeship",
41− "bg-yellow-300": category === "Bounty",
42− });
43− return (
44− <div className={`${className} badge-sm mr-1 my-1`}>
31+ <p className="mb-4">{grant.extra.description}</p>
32+ <div className="flex w-full flex-col md:flex-row md:items-center justify-between">
33+ <p className="text-wall-500">
34+ <strong>Reward: </strong>
35+ {grant.extra.reward}
36+ </p>
37+ <div className="flex items-center flex-wrap md:mt-0 mt-4">
38+ {grant.taxonomies.grant_type.map((category) => {
39+ const className = classnames({
40+ "bg-blue-400 text-white": category === "Proposal",
41+ "bg-green-400 text-white": category === "Apprenticeship",
42+ "bg-yellow-300": category === "Bounty",
43+ });
44+ return (
45+ <div className={`${className} badge-sm mr-1 my-1`}>
46+ {category}
47+ </div>
48+ );
49+ })}
50+ {grant.taxonomies.grant_category.map((category) => (
51+ <div className="bg-wall-500 text-wall-100 badge-sm mr-1 my-1">
4552 {category}
4653 </div>
47− );
48− })}
49− {grant.taxonomies.grant_category.map((category) => (
50− <div className="bg-wall-500 text-wall-100 badge-sm mr-1 my-1">
51− {category}
52− </div>
53− ))}
54+ ))}
55+ </div>
5456 </div>
5557 </div>
56− </div>
58+ </a>
5759 </Link>
5860 </div>
5961 );
components/GrantProgramOverview.js+3−3
@@ -39,10 +39,10 @@ export default function GrantProgramOverview({
3939 <div className="type-ui text-wall-500 mt-4 md:mt-8 lg:mt-10">
4040 Last Revision: {formatDate(DateTime.fromISO(post.date))}
4141 </div>
42− <Link href={actionLink}>
43− <button className="button-sm bg-green-400 text-white mt-8">
42+ <Link href={actionLink} passHref>
43+ <a className="button-sm bg-green-400 text-white mt-8 max-w-fit">
4444 {actionText}
45− </button>
45+ </a>
4646 </Link>
4747 </Section>
4848 <Section narrow short className="markdown">
components/Header.js+4−4
@@ -16,7 +16,7 @@ function ActiveLink({ children, href, className, currentPath }) {
1616 });
1717
1818 return (
19− <Link href={href}>
19+ <Link href={href} passHref>
2020 <a className={`${className} ${activeClassName}`}>{children}</a>
2121 </Link>
2222 );
@@ -50,11 +50,11 @@ export default function Header(props) {
5050 return (
5151 <header className="layout px-4 md:px-8 flex justify-between items-center pt-8 md:pt-10 lg:pt-12 pb-10 md:pb-12 lg:pb-24">
5252 <div>
53− <Link href="/">
53+ <Link href="/" passHref>
5454 <a className="type-ui">Urbit</a>
5555 </Link>
5656 {routeDepth > 2 ? (
57− <Link href={`/${firstCrumb}`}>
57+ <Link href={`/${firstCrumb}`} passHref>
5858 <a className="inline md:hidden type-ui text-wall-500 ml-2">
5959 {capitalize(firstCrumb)}
6060 </a>
@@ -123,7 +123,7 @@ export default function Header(props) {
123123 // Small screen header
124124 }
125125 <MenuTray isOpen={isOpen} setTray={setTray} search={props.search}>
126− <Link href="/">
126+ <Link href="/" passHref>
127127 <a className="type-ui mb-12">Urbit</a>
128128 </Link>
129129 <ActiveLink
components/PostPreview.js+1−1
@@ -28,7 +28,7 @@ export default function PostPreview(props) {
2828 </div>
2929 ) : null}
3030 {props.post.extra.ship ? (
31− <Link href={`/ids/${props.post.extra.ship}`}>
31+ <Link href={`/ids/${props.post.extra.ship}`} passHref>
3232 <a className="type-sub-bold text-wall-500 font-mono">
3333 {props.post.extra.ship}
3434 </a>
components/Sidebar.js+2−2
@@ -8,7 +8,7 @@ export default function Sidebar(props) {
88 <>
99 <div className="hidden md:flex flex-col w-96 bg-wall-100 max-h-screen h-screen">
1010 <header className="flex shrink-0 justify-between items-center pl-6 pt-12 mt-5 pb-8">
11− <Link href="/">
11+ <Link href="/" passHref>
1212 <a className="type-ui text-wall-500">Urbit</a>
1313 </Link>
1414 </header>
@@ -20,7 +20,7 @@ export default function Sidebar(props) {
2020
2121 <MenuTray isOpen={isOpen} setTray={setTray} search={props.search}>
2222 <header className="flex shrink-0 justify-between items-center pb-8">
23− <Link href="/">
23+ <Link href="/" passHref>
2424 <a className="type-ui text-wall-500">Urbit</a>
2525 </Link>
2626 </header>
components/gateway/Gateway404.js+1−1
@@ -15,7 +15,7 @@ const Gateway404 = ({ type }) => {
1515 item={`No ${type} at this address`}
1616 />
1717 <hr className="text-wall-200" />
18− <Link href="/">
18+ <Link href="/" passHref>
1919 <a className="text-xl block font-semibold">Urbit.org</a>
2020 </Link>
2121 </Section>
content/ids/tiplec-lacnyx.md−1
@@ -4,4 +4,3 @@ nickname = "Sol"
44bgColor = "#000000"
55image = ""
66+++
7−
pages/applications/[[...application]].js+5−5
@@ -106,10 +106,10 @@ const ApplicationPage = ({ data, markdown, params }) => {
106106 <p className="text-sm font-semibold text-wall-400">
107107 Learn how to install an Urbit application
108108 </p>
109− <Link href="/guides/installing-applications">
110− <button className="button-lg max-w-xs bg-green-400 text-white">
109+ <Link href="/guides/installing-applications" passHref>
110+ <a className="button-lg max-w-xs bg-green-400 text-white">
111111 Installing Urbit applications
112− </button>
112+ </a>
113113 </Link>
114114 </div>
115115 </div>
@@ -119,11 +119,11 @@ const ApplicationPage = ({ data, markdown, params }) => {
119119 Have an application you'd like to share publicly through
120120 urbit.org?
121121 </p>
122− <Link href="/applications/submit">
122+ <Link href="/applications/submit" passHref>
123123 <a className="type-ui text-green-400">Submit your application</a>
124124 </Link>
125125 </div>
126− <Link href="/">
126+ <Link href="/" passHref>
127127 <a className="text-xl pt-8 block font-semibold">Urbit.org</a>
128128 </Link>
129129 </Section>
pages/applications/submit.js+1−1
@@ -129,7 +129,7 @@ ${form?.description || ""}`
129129 >
130130 Submit with GitHub
131131 </button>
132− <Link href="/">
132+ <Link href="/" passHref>
133133 <a className="text-xl pt-8 block font-semibold">Urbit.org</a>
134134 </Link>
135135 </Section>
pages/blog.js+1−1
@@ -61,7 +61,7 @@ export default function Blog({ posts, search }) {
6161 </div>
6262 ) : null}
6363 {post.extra.ship ? (
64− <Link href={`/ids/${post.extra.ship}`}>
64+ <Link href={`/ids/${post.extra.ship}`} passHref>
6565 <a className="type-sub-bold text-wall-500 font-mono">
6666 {post.extra.ship}
6767 </a>
pages/blog/[slug].js+1−1
@@ -50,7 +50,7 @@ export default function Post({
5050 <div className="type-sub-bold mr-2">{post.extra.author}</div>
5151 ) : null}
5252 {post.extra.ship ? (
53− <Link href={`/ids/${post.extra.ship}`}>
53+ <Link href={`/ids/${post.extra.ship}`} passHref>
5454 <a className="type-sub-bold text-wall-500 font-mono">
5555 {post.extra.ship}
5656 </a>
pages/docs/[[...slug]].js+2−2
@@ -86,7 +86,7 @@ const pageTree = (thisLink, tree, level = 0) => {
8686 });
8787 return (
8888 <li>
89− <Link href={href}>
89+ <Link href={href} passHref>
9090 <a
9191 className={`relative inline-block ${pageItemClasses} ${selectedClasses}`}
9292 >
@@ -132,7 +132,7 @@ export default function DocsLayout({
132132 <Sidebar search={search}>
133133 <ul>
134134 <li>
135− <Link href="/docs">
135+ <Link href="/docs" passHref>
136136 <a className={`relative ${selectedClasses} ${rootClasses}`}>
137137 Introduction
138138 </a>
pages/getting-started/[[...slug]].js+2−2
@@ -53,7 +53,7 @@ const pageTree = (thisLink, tree, level = 0) => {
5353
5454 return (
5555 <>
56− <Link href={thisLink}>
56+ <Link href={thisLink} passHref>
5757 <a className={`${pageItemClasses} cursor-pointer`}>{tree.title}</a>
5858 </Link>
5959 </>
@@ -80,7 +80,7 @@ export default function UsingLayout({ posts, data, params, search, markdown }) {
8080 <Sidebar search={search}>
8181 <ul>
8282 <li>
83− <Link href="/getting-started">
83+ <Link href="/getting-started" passHref>
8484 <a className={`relative ${selectedClasses} ${rootClasses}`}>
8585 Getting Started
8686 </a>
pages/grants.js+21−21
@@ -179,20 +179,20 @@ export default function Grants({
179179 </div>
180180 </div>
181181 <div className="flex flex-wrap">
182− <Link href="#grant-types">
183− <button className="button-lg bg-blue-400 text-white mr-2">
182+ <Link href="#grant-types" passHref>
183+ <a className="button-lg bg-blue-400 text-white mr-2">
184184 Learn More
185− </button>
185+ </a>
186186 </Link>
187− <Link href="#join-community">
188− <button className="button-lg bg-black text-white mr-2">
187+ <Link href="#join-community" passHref>
188+ <a className="button-lg bg-black text-white mr-2">
189189 Join the Community
190− </button>
190+ </a>
191191 </Link>
192− <Link href="#view-grants">
193− <button className="button-lg bg-wall-400 text-white mr-2">
192+ <Link href="#view-grants" passHref>
193+ <a className="button-lg bg-wall-400 text-white mr-2">
194194 View Grants
195− </button>
195+ </a>
196196 </Link>
197197 </div>
198198 </Section>
@@ -217,10 +217,10 @@ export default function Grants({
217217 &mdash; we fund all kinds projects, not strictly technical ones,
218218 so don't hesitate to pitch your idea!
219219 </p>
220− <Link href="/grants/proposals">
221− <button className="button-sm bg-blue-400 text-white mb-8">
220+ <Link href="/grants/proposals" passHref>
221+ <a className="button-sm bg-blue-400 text-white mb-8 max-w-fit">
222222 Submit a Proposal
223− </button>
223+ </a>
224224 </Link>
225225
226226 {/* Apprenticeships */}
@@ -230,10 +230,10 @@ export default function Grants({
230230 They're one of the best ways to level up your skills, and often
231231 lead to full-time jobs.
232232 </p>
233− <Link href="/grants/apprenticeships">
234− <button className="button-sm bg-green-400 text-white mb-8">
233+ <Link href="/grants/apprenticeships" passHref>
234+ <a className="button-sm bg-green-400 text-white mb-8 max-w-fit">
235235 Become an Apprentice
236− </button>
236+ </a>
237237 </Link>
238238
239239 {/* Bounties */}
@@ -242,15 +242,15 @@ export default function Grants({
242242 Urbit Foundation or from trusted partners in our ecosystem.
243243 </p>
244244 <div className="flex flex-wrap">
245− <Link href="/grants/bounties#post-a-bounty">
246− <button className="button-sm bg-yellow-300 text-black mr-2">
245+ <Link href="/grants/bounties#post-a-bounty" passHref>
246+ <a className="button-sm bg-yellow-300 text-black mr-2 max-w-fit">
247247 Post a Bounty
248− </button>
248+ </a>
249249 </Link>
250− <Link href="/grants/bounties">
251− <button className="button-sm bg-wall-400 text-white">
250+ <Link href="/grants/bounties" passHref>
251+ <a className="button-sm bg-wall-400 text-white max-w-fit">
252252 Learn more
253− </button>
253+ </a>
254254 </Link>
255255 </div>
256256 </div>
pages/grants/[slug].js+1−1
@@ -44,7 +44,7 @@ export default function Grant({ post, markdown, search }) {
4444 </div>
4545 ) : null}
4646 {post.extra.ship ? (
47− <Link href={`/ids/${post.extra.ship}`}>
47+ <Link href={`/ids/${post.extra.ship}`} passHref>
4848 <a className="type-sub-bold text-wall-500 font-mono">
4949 {post.extra.ship}
5050 </a>
pages/groups/[[...group]].js+5−5
@@ -101,21 +101,21 @@ const GroupPage = ({ data, markdown, params }) => {
101101 <p className="text-sm font-semibold text-wall-400">
102102 Get on the network and join this group.
103103 </p>
104− <Link href="/guides/joining-groups">
105− <button className="button-lg max-w-xs bg-green-400 text-white">
104+ <Link href="/guides/joining-groups" passHref>
105+ <a className="button-lg max-w-xs bg-green-400 text-white">
106106 How to join a group
107− </button>
107+ </a>
108108 </Link>
109109 </div>
110110 </div>
111111 <hr className="text-wall-200" />
112112 <div className="flex flex-col space-y-1">
113113 <p>Have a group you'd like to share publicly through urbit.org?</p>
114− <Link href="/groups/submit">
114+ <Link href="/groups/submit" passHref>
115115 <a className="type-ui text-green-400">Submit your group</a>
116116 </Link>
117117 </div>
118− <Link href="/">
118+ <Link href="/" passHref>
119119 <a className="text-xl pt-8 block font-semibold">Urbit.org</a>
120120 </Link>
121121 </Section>
pages/groups/submit.js+2−2
@@ -50,7 +50,7 @@ ${form?.description || ""}`
5050 </p>
5151 <p>
5252 Then, to validate that you operate this group, send a DM to{" "}
53− <Link href="/ids/~haddef-sigwen">
53+ <Link href="/ids/~haddef-sigwen" passHref>
5454 <a>~haddef-sigwen</a>
5555 </Link>{" "}
5656 from your group host <code>@p</code> with a link to the pull
@@ -138,7 +138,7 @@ ${form?.description || ""}`
138138 >
139139 Submit with GitHub
140140 </button>
141− <Link href="/">
141+ <Link href="/" passHref>
142142 <a className="text-xl pt-8 block font-semibold">Urbit.org</a>
143143 </Link>
144144 </Section>
pages/guides/[slug].js+1−1
@@ -31,7 +31,7 @@ export default function GuidePage({ post, markdown }) {
3131 <article
3232 dangerouslySetInnerHTML={{ __html: decode(markdown) }}
3333 ></article>
34− <Link href="/">
34+ <Link href="/" passHref>
3535 <a className="text-xl pt-12 block font-semibold">Urbit.org</a>
3636 </Link>
3737 </Section>
pages/ids/[id].js+2−2
@@ -154,13 +154,13 @@ const IdPage = ({ data, markdown, applications, groups, network, params }) => {
154154 <hr className="text-wall-200" />
155155 <div className="flex flex-col space-y-1">
156156 <p>Have an Urbit ID?</p>
157− <Link href="/ids/submit">
157+ <Link href="/ids/submit" passHref>
158158 <a className="type-ui text-green-400">
159159 Claim and customize your Urbit ID page
160160 </a>
161161 </Link>
162162 </div>
163− <Link href="/">
163+ <Link href="/" passHref>
164164 <a className="text-xl pt-8 block font-semibold">Urbit.org</a>
165165 </Link>
166166 </Section>
pages/ids/submit.js+2−2
@@ -54,7 +54,7 @@ ${form?.description || ""}`
5454 </p>
5555 <p>
5656 Then, to validate that you own that ID, send a DM to{" "}
57− <Link href="/ids/~haddef-sigwen">
57+ <Link href="/ids/~haddef-sigwen" passHref>
5858 <a>~haddef-sigwen</a>
5959 </Link>{" "}
6060 from your <code>@p</code> with a link to the pull request on
@@ -156,7 +156,7 @@ ${form?.description || ""}`
156156 >
157157 Submit with GitHub
158158 </button>
159− <Link href="/">
159+ <Link href="/" passHref>
160160 <a className="text-xl pt-8 block font-semibold">Urbit.org</a>
161161 </Link>
162162 </Section>
pages/index.js+17−14
@@ -156,12 +156,12 @@ export default function Home({ posts, events, grantNumbers, search }) {
156156 real ownership and authority over the network.
157157 </p>
158158 <div className="flex flex-wrap">
159− <Link href="/grants">
159+ <Link href="/grants" passHref>
160160 <a className="button-lg bg-blue-400 text-white mr-2 mb-8">
161161 Learn More
162162 </a>
163163 </Link>
164− <Link href="/grants#view-grants">
164+ <Link href="/grants#view-grants" passHref>
165165 <a className="button-lg bg-green-400 text-white mr-2 mb-8">
166166 View Grants
167167 </a>
@@ -187,7 +187,7 @@ export default function Home({ posts, events, grantNumbers, search }) {
187187 </p>
188188 <p className="pb-12">
189189 The entire OS is a{" "}
190− <Link href="https://urbit.org/docs/nock/definition/">
190+ <Link href="https://urbit.org/docs/nock/definition/" passHref>
191191 <a>single pure function</a>
192192 </Link>{" "}
193193 that provides application developers with strong guarantees:
@@ -196,19 +196,22 @@ export default function Home({ posts, events, grantNumbers, search }) {
196196 </p>
197197 <p className="pb-12">
198198 You can get started learning how to{" "}
199− <Link href="https://urbit.org/docs/development/develop/">
199+ <Link href="https://urbit.org/docs/development/develop/" passHref>
200200 <a>contribute to the project</a>
201201 </Link>
202202 , or view a variety of{" "}
203− <Link href="https://github.com/urbit/awesome-urbit#http-apis-airlock">
203+ <Link
204+ href="https://github.com/urbit/awesome-urbit#http-apis-airlock"
205+ passHref
206+ >
204207 <a>libraries</a>
205208 </Link>{" "}
206209 for building on Urbit using the languages you already know.
207210 </p>
208− <Link href="/docs">
209− <button className="button-lg type-ui text-white bg-wall-600">
211+ <Link href="/docs" passHref>
212+ <a className="button-lg type-ui text-white bg-wall-600 max-w-fit">
210213 Read the Developer Docs
211− </button>
214+ </a>
212215 </Link>
213216 </div>
214217 </Section>
@@ -226,10 +229,10 @@ export default function Home({ posts, events, grantNumbers, search }) {
226229 <PostPreview post={posts[1]} key={posts[1].slug} />
227230 </TwoUp>
228231
229− <Link href="/blog">
230− <button className="button-lg type-ui text-white bg-green-400">
232+ <Link href="/blog" passHref>
233+ <a className="button-lg max-w-fit type-ui text-white bg-green-400">
231234 See More
232− </button>
235+ </a>
233236 </Link>
234237 </Section>
235238
@@ -246,10 +249,10 @@ export default function Home({ posts, events, grantNumbers, search }) {
246249 <EventPreview event={events[1]} key={events[1].slug} />
247250 </TwoUp>
248251
249− <Link href="/events">
250− <button className="button-lg type-ui text-white bg-wall-600">
252+ <Link href="/events" passHref>
253+ <a className="button-lg max-w-fit type-ui text-white bg-wall-600">
251254 More Events
252− </button>
255+ </a>
253256 </Link>
254257 </Section>
255258
pages/media/[slug].js+1−1
@@ -41,7 +41,7 @@ export default function MediaPage({ post, markdown, search }) {
4141 </div>
4242 ) : null}
4343 {post.extra.ship ? (
44− <Link href={`/ids/${post.extra.ship}`}>
44+ <Link href={`/ids/${post.extra.ship}`} passHref>
4545 <a className="type-sub-bold text-wall-500 font-mono">
4646 {post.extra.ship}
4747 </a>
pages/understanding-urbit/[[...slug]].js+2−2
@@ -58,7 +58,7 @@ const pageTree = (thisLink, tree, level = 0) => {
5858
5959 return (
6060 <>
61− <Link href={thisLink}>
61+ <Link href={thisLink} passHref>
6262 <a className={`${pageItemClasses} cursor-pointer`}>{tree.title}</a>
6363 </Link>
6464 </>
@@ -92,7 +92,7 @@ export default function UnderstandingLayout({
9292 <Sidebar search={search}>
9393 <ul>
9494 <li>
95− <Link href="/understanding-urbit">
95+ <Link href="/understanding-urbit" passHref>
9696 <a className={`relative ${selectedClasses} ${rootClasses}`}>
9797 Introduction
9898 </a>
pages/updates.js+1−1
@@ -47,7 +47,7 @@ export default function Updates({ posts, search }) {
4747 <div className="mx-1 text-wall-500">•</div>
4848 ) : null}
4949 {post?.extra.ship ? (
50− <Link href={`/ids/${post.extra.ship}`}>
50+ <Link href={`/ids/${post.extra.ship}`} passHref>
5151 <a className="type-sub-bold text-wall-500 font-mono">
5252 {post.extra.ship}
5353 </a>
pages/updates/[slug].js+1−1
@@ -48,7 +48,7 @@ export default function Post({
4848 </div>
4949 ) : null}
5050 {post?.extra?.ship ? (
51− <Link href={`/ids/${post.extra.ship}`}>
51+ <Link href={`/ids/${post.extra.ship}`} passHref>
5252 <a className="type-sub-bold text-wall-500 font-mono">
5353 {post?.extra?.ship}
5454 </a>
pages/using/[[...slug]].js+1−1
@@ -81,7 +81,7 @@ const pageTree = (thisLink, tree, level = 0) => {
8181 });
8282 return (
8383 <li>
84− <Link href={href}>
84+ <Link href={href} passHref>
8585 <a
8686 className={`relative ${pageItemClasses} ${selectedClasses}`}
8787 >