on master help sign in
Merge pull request #1447 from urbit/mp/pass-href
8c5855bmatildepark
components/Contact.js+1−1
@@ -29,7 +29,7 @@ export default function Contact({ emphasize }) {
29 </h4>
29 </h4>
30 <h4 className="mt-6 text-wall-500 flex-wrap">
30 <h4 className="mt-6 text-wall-500 flex-wrap">
31 Boot Urbit and join{" "}
31 Boot Urbit and join{" "}
32− <Link href={`/groups/${contact.urbitCommunity}`}>
32+ <Link href={`/groups/${contact.urbitCommunity}`} passHref>
33 <a className={linkText}>Urbit Community</a>
33 <a className={linkText}>Urbit Community</a>
34 </Link>
34 </Link>
35 </h4>
35 </h4>
components/Footer.js+69−113
@@ -10,25 +10,17 @@ export default function Footer() {
10 <Section short className="flex flex-row flex-wrap">
10 <Section short className="flex flex-row flex-wrap">
11 <div className="w-1/2 md:w-1/3 flex flex-col shrink">
11 <div className="w-1/2 md:w-1/3 flex flex-col shrink">
12 <h4 className="mt-16 mb-8">Use Urbit</h4>
12 <h4 className="mt-16 mb-8">Use Urbit</h4>
13− <Link href="/getting-started">
13+ <Link href="/getting-started" passHref>
14− <div>
15− <a className="type-bold text-wall-500">Getting Started</a>
14+ <a className="type-bold text-wall-500">Getting Started</a>
16− </div>
17− </Link>
15+ </Link>
18− <Link href="/using">
16+ <Link href="/using" passHref>
19− <div>
20− <a className="type-bold text-wall-500">User's Manual</a>
17+ <a className="type-bold text-wall-500">User's Manual</a>
21− </div>
22− </Link>
18+ </Link>
23− <Link href="https://github.com/urbit/port/releases">
19+ <Link href="https://github.com/urbit/port/releases" passHref>
24− <div>
25− <a className="type-bold text-wall-500">Urbit Client</a>
20+ <a className="type-bold text-wall-500">Urbit Client</a>
26− </div>
27− </Link>
21+ </Link>
28− <Link href="https://github.com/urbit/urbit/releases">
22+ <Link href="https://github.com/urbit/urbit/releases" passHref>
29− <div>
30− <a className="mt-2 type-bold text-wall-500">Urbit Binaries</a>
23+ <a className="type-bold text-wall-500">Urbit Binaries</a>
31− </div>
32 </Link>
24 </Link>
33 {
25 {
34 // <Link href="">
26 // <Link href="">
@@ -37,141 +29,105 @@ export default function Footer() {
37 // </div>
29 // </div>
38 // </Link>
30 // </Link>
39 }
31 }
40− <Link href="/getting-started/planet/#hosting-providers">
32+ <Link href="/getting-started/planet/#hosting-providers" passHref>
41− <div>
42− <a className="mt-2 type-bold text-wall-500">
33+ <a className="type-bold text-wall-500">Hosting Providers</a>
43− Hosting Providers
44− </a>
45− </div>
46 </Link>
34 </Link>
47 </div>
35 </div>
48 <div className="w-1/2 md:w-1/3 flex flex-col shrink">
36 <div className="w-1/2 md:w-1/3 flex flex-col shrink">
49 <h4 className="mt-16 mb-8">About</h4>
37 <h4 className="mt-16 mb-8">About</h4>
50− <Link href="/understanding-urbit">
38+ <Link href="/understanding-urbit" passHref>
51− <div>
52− <a className="type-bold text-wall-500">What's Urbit?</a>
39+ <a className="type-bold text-wall-500">What's Urbit?</a>
53− </div>
54− </Link>
40+ </Link>
55− <Link href="/understanding-urbit/urbit-id">
41+ <Link href="/understanding-urbit/urbit-id" passHref>
56− <div>
57− <a className="mt-2 type-bold text-wall-500">Urbit ID</a>
42+ <a className="type-bold text-wall-500">Urbit ID</a>
58− </div>
59− </Link>
43+ </Link>
60− <Link href="/understanding-urbit/urbit-os">
44+ <Link href="/understanding-urbit/urbit-os" passHref>
61− <div>
62− <a className="mt-2 type-bold text-wall-500">Urbit OS</a>
45+ <a className="type-bold text-wall-500">Urbit OS</a>
63− </div>
64− </Link>
46+ </Link>
65− <Link href="/audits">
47+ <Link href="/audits" passHref>
66− <div>
67− <a className="mt-2 type-bold text-wall-500">Security Audits</a>
48+ <a className="type-bold text-wall-500">Security Audits</a>
68− </div>
69− </Link>
49+ </Link>
70− <Link href="/faq">
50+ <Link href="/faq" passHref>
71− <div>
72− <a className="mt-2 type-bold text-wall-500">FAQ</a>
51+ <a className="type-bold text-wall-500">FAQ</a>
73− </div>
74− </Link>
52+ </Link>
75− <Link href="https://media.urbit.org/whitepaper.pdf">
53+ <Link href="https://media.urbit.org/whitepaper.pdf" passHref>
76− <div>
77− <a className="mt-2 type-bold text-wall-500">Whitepaper</a>
54+ <a className="type-bold text-wall-500">Whitepaper</a>
78− </div>
79 </Link>
55 </Link>
80 </div>
56 </div>
81 <div className="w-1/2 md:w-1/3 flex flex-col shrink">
57 <div className="w-1/2 md:w-1/3 flex flex-col shrink">
82 <h4 className="mt-16 mb-8">News</h4>
58 <h4 className="mt-16 mb-8">News</h4>
83− <Link href="/blog">
59+ <Link href="/blog" passHref>
84− <div>
85− <a className="type-bold text-wall-500">Blog</a>
60+ <a className="type-bold text-wall-500">Blog</a>
86− </div>
87 </Link>
61 </Link>
88− <Link href="/events">
62+ <Link href="/events" passHref>
89− <div>
90− <a className="mt-2 type-bold text-wall-500">Events</a>
63+ <a className="type-bold text-wall-500">Events</a>
91− </div>
92 </Link>
64 </Link>
93− <Link href="/updates">
65+ <Link href="/updates" passHref>
94− <div>
95− <a className="mt-2 type-bold text-wall-500">Updates</a>
66+ <a className="type-bold text-wall-500">Updates</a>
96− </div>
97 </Link>
67 </Link>
98 </div>
68 </div>
99
69
100 <div className="w-1/2 md:w-1/3 flex flex-col">
70 <div className="w-1/2 md:w-1/3 flex flex-col">
101 <h4 className="mt-16 mb-8">Develop</h4>
71 <h4 className="mt-16 mb-8">Develop</h4>
102− <Link href="/docs">
72+ <Link href="/docs" passHref>
103− <div>
104− <a className="type-bold text-wall-500">Documentation</a>
73+ <a className="type-bold text-wall-500">Documentation</a>
105− </div>
106 </Link>
74 </Link>
107− <Link href="https://github.com/urbit">
75+ <Link href="https://github.com/urbit" passHref>
108− <div>
109− <a className="mt-2 type-bold text-wall-500">Github</a>
76+ <a className="type-bold text-wall-500">Github</a>
110− </div>
111 </Link>
77 </Link>
78+ <Link
112− <Link href="https://github.com/urbit/awesome-urbit#http-apis-airlock">
79+ href="https://github.com/urbit/awesome-urbit#http-apis-airlock"
113− <div>
80+ passHref
81+ >
114− <a className="mt-2 type-bold text-wall-500">Airlock APIs</a>
82+ <a className="type-bold text-wall-500">Airlock APIs</a>
115− </div>
116 </Link>
83 </Link>
117 </div>
84 </div>
118 <div className="w-1/2 md:w-1/3 flex flex-col">
85 <div className="w-1/2 md:w-1/3 flex flex-col">
119 <h4 className="mt-16 mb-8">Contribute</h4>
86 <h4 className="mt-16 mb-8">Contribute</h4>
120− <Link href="https://github.com/urbit/urbit/issues">
87+ <Link href="https://github.com/urbit/urbit/issues" passHref>
121− <div>
122− <a className="type-bold text-wall-500">Issue Tracker</a>
88+ <a className="type-bold text-wall-500">Issue Tracker</a>
123− </div>
124 </Link>
89 </Link>
125 <Link href="/grants">
90 <Link href="/grants">
126− <div>
127− <a className="mt-2 type-bold text-wall-500">Urbit Grants</a>
91+ <a className="type-bold text-wall-500" passHref>
128− </div>
92+ Urbit Grants
93+ </a>
129 </Link>
94 </Link>
130 </div>
95 </div>
131
96
132 <div className="w-1/2 md:w-1/3 flex flex-col">
97 <div className="w-1/2 md:w-1/3 flex flex-col">
133 <h4 className="mt-16 mb-8">Community</h4>
98 <h4 className="mt-16 mb-8">Community</h4>
99+ <Link
134− <Link href="https://groups.google.com/a/urbit.org/g/dev?pli=1">
100+ href="https://groups.google.com/a/urbit.org/g/dev?pli=1"
135− <div>
101+ passHref
102+ >
136− <a className="type-bold text-wall-500">Dev Mailing List</a>
103+ <a className="type-bold text-wall-500">Dev Mailing List</a>
137− </div>
138 </Link>
104 </Link>
139− <Link href="https://github.com/urbit/azimuth">
105+ <Link href="https://github.com/urbit/azimuth" passHref>
140− <div>
141− <a className="mt-2 type-bold text-wall-500">Governance</a>
106+ <a className="type-bold text-wall-500">Governance</a>
142− </div>
143 </Link>
107 </Link>
144− <Link href="https://twitter.com/urbit">
108+ <Link href="https://twitter.com/urbit" passHref>
145− <div>
146− <a className="mt-2 type-bold text-wall-500">Twitter</a>
109+ <a className="type-bold text-wall-500">Twitter</a>
147− </div>
148 </Link>
110 </Link>
149 </div>
111 </div>
150 </Section>
112 </Section>
151 <Section className="flex flex-col md:flex-row">
113 <Section className="flex flex-col md:flex-row">
152 <div className="md:w-1/3">
114 <div className="md:w-1/3">
153− <Link href="/privacy">
115+ <Link href="/privacy" passHref>
154− <div>
155− <a className="type-bold text-wall-500">Privacy Policy</a>
116+ <a className="type-bold text-wall-500">Privacy Policy</a>
156− </div>
157 </Link>
117 </Link>
158 </div>
118 </div>
159 <div className="md:w-1/3">
119 <div className="md:w-1/3">
160− <Link href="/terms-of-service">
120+ <Link href="/terms-of-service" passHref>
161− <div>
162− <a className="type-bold text-wall-500">Terms of Service</a>
121+ <a className="type-bold text-wall-500">Terms of Service</a>
163− </div>
164 </Link>
122 </Link>
165 </div>
123 </div>
166 <div className="md:w-1/3">
124 <div className="md:w-1/3">
167− <div>
168− <a
125+ <a
169− href={"mailto:" + contact.email}
126+ href={"mailto:" + contact.email}
170− className="type-bold text-wall-500"
127+ className="type-bold text-wall-500"
171− >
128+ >
172− {contact.email}
129+ {contact.email}
173− </a>
130+ </a>
174− </div>
175 </div>
131 </div>
176 </Section>
132 </Section>
177 </SingleColumn>
133 </SingleColumn>
components/GrantPreview.js+34−32
@@ -17,43 +17,45 @@ export default function GrantPreview({ grant }) {
17 key={grant.slug}
17 key={grant.slug}
18 className={`mb-4 cursor-pointer bg-wall-100 rounded-lg ${className}`}
18 className={`mb-4 cursor-pointer bg-wall-100 rounded-lg ${className}`}
19 >
19 >
20− <Link href={`/grants/${grant.slug}`}>
20+ <Link href={`/grants/${grant.slug}`} passHref>
21+ <a>
21− <div className="p-8">
22+ <div className="p-8">
22− <div className="flex items-center mb-4">
23+ <div className="flex items-center mb-4">
23− <h3 className="type-ui" id={grant.slug}>
24+ <h3 className="type-ui" id={grant.slug}>
24− {grant.title}
25+ {grant.title}
25− </h3>
26+ </h3>
26− <div className={`bg-wall-500 text-wall-100 badge-sm ml-2`}>
27+ <div className={`bg-wall-500 text-wall-100 badge-sm ml-2`}>
27− {!isCompleted ? (isOpen ? "Open" : "In Progress") : "Completed"}
28+ {!isCompleted ? (isOpen ? "Open" : "In Progress") : "Completed"}
29+ </div>
28 </div>
30 </div>
29− </div>
30− <p className="mb-4">{grant.extra.description}</p>
31+ <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+ <div className="flex w-full flex-col md:flex-row md:items-center justify-between">
32− <p className="text-wall-500">
33+ <p className="text-wall-500">
33− <strong>Reward: </strong>
34+ <strong>Reward: </strong>
34− {grant.extra.reward}
35+ {grant.extra.reward}
35− </p>
36+ </p>
36− <div className="flex items-center flex-wrap md:mt-0 mt-4">
37+ <div className="flex items-center flex-wrap md:mt-0 mt-4">
37− {grant.taxonomies.grant_type.map((category) => {
38+ {grant.taxonomies.grant_type.map((category) => {
38− const className = classnames({
39+ const className = classnames({
39− "bg-blue-400 text-white": category === "Proposal",
40+ "bg-blue-400 text-white": category === "Proposal",
40− "bg-green-400 text-white": category === "Apprenticeship",
41+ "bg-green-400 text-white": category === "Apprenticeship",
41− "bg-yellow-300": category === "Bounty",
42+ "bg-yellow-300": category === "Bounty",
42− });
43+ });
43− return (
44+ return (
44− <div className={`${className} badge-sm mr-1 my-1`}>
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">
45 {category}
52 {category}
46 </div>
53 </div>
47− );
48− })}
54+ ))}
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>
55+ </div>
53− ))}
54 </div>
56 </div>
55 </div>
57 </div>
56− </div>
58+ </a>
57 </Link>
59 </Link>
58 </div>
60 </div>
59 );
61 );
components/GrantProgramOverview.js+3−3
@@ -39,10 +39,10 @@ export default function GrantProgramOverview({
39 <div className="type-ui text-wall-500 mt-4 md:mt-8 lg:mt-10">
39 <div className="type-ui text-wall-500 mt-4 md:mt-8 lg:mt-10">
40 Last Revision: {formatDate(DateTime.fromISO(post.date))}
40 Last Revision: {formatDate(DateTime.fromISO(post.date))}
41 </div>
41 </div>
42− <Link href={actionLink}>
42+ <Link href={actionLink} passHref>
43− <button className="button-sm bg-green-400 text-white mt-8">
43+ <a className="button-sm bg-green-400 text-white mt-8 max-w-fit">
44 {actionText}
44 {actionText}
45− </button>
45+ </a>
46 </Link>
46 </Link>
47 </Section>
47 </Section>
48 <Section narrow short className="markdown">
48 <Section narrow short className="markdown">
components/Header.js+4−4
@@ -16,7 +16,7 @@ function ActiveLink({ children, href, className, currentPath }) {
16 });
16 });
17
17
18 return (
18 return (
19− <Link href={href}>
19+ <Link href={href} passHref>
20 <a className={`${className} ${activeClassName}`}>{children}</a>
20 <a className={`${className} ${activeClassName}`}>{children}</a>
21 </Link>
21 </Link>
22 );
22 );
@@ -50,11 +50,11 @@ export default function Header(props) {
50 return (
50 return (
51 <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">
51 <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">
52 <div>
52 <div>
53− <Link href="/">
53+ <Link href="/" passHref>
54 <a className="type-ui">Urbit</a>
54 <a className="type-ui">Urbit</a>
55 </Link>
55 </Link>
56 {routeDepth > 2 ? (
56 {routeDepth > 2 ? (
57− <Link href={`/${firstCrumb}`}>
57+ <Link href={`/${firstCrumb}`} passHref>
58 <a className="inline md:hidden type-ui text-wall-500 ml-2">
58 <a className="inline md:hidden type-ui text-wall-500 ml-2">
59 {capitalize(firstCrumb)}
59 {capitalize(firstCrumb)}
60 </a>
60 </a>
@@ -123,7 +123,7 @@ export default function Header(props) {
123 // Small screen header
123 // Small screen header
124 }
124 }
125 <MenuTray isOpen={isOpen} setTray={setTray} search={props.search}>
125 <MenuTray isOpen={isOpen} setTray={setTray} search={props.search}>
126− <Link href="/">
126+ <Link href="/" passHref>
127 <a className="type-ui mb-12">Urbit</a>
127 <a className="type-ui mb-12">Urbit</a>
128 </Link>
128 </Link>
129 <ActiveLink
129 <ActiveLink
components/PostPreview.js+1−1
@@ -28,7 +28,7 @@ export default function PostPreview(props) {
28 </div>
28 </div>
29 ) : null}
29 ) : null}
30 {props.post.extra.ship ? (
30 {props.post.extra.ship ? (
31− <Link href={`/ids/${props.post.extra.ship}`}>
31+ <Link href={`/ids/${props.post.extra.ship}`} passHref>
32 <a className="type-sub-bold text-wall-500 font-mono">
32 <a className="type-sub-bold text-wall-500 font-mono">
33 {props.post.extra.ship}
33 {props.post.extra.ship}
34 </a>
34 </a>
components/Sidebar.js+2−2
@@ -8,7 +8,7 @@ export default function Sidebar(props) {
8 <>
8 <>
9 <div className="hidden md:flex flex-col w-96 bg-wall-100 max-h-screen h-screen">
9 <div className="hidden md:flex flex-col w-96 bg-wall-100 max-h-screen h-screen">
10 <header className="flex shrink-0 justify-between items-center pl-6 pt-12 mt-5 pb-8">
10 <header className="flex shrink-0 justify-between items-center pl-6 pt-12 mt-5 pb-8">
11− <Link href="/">
11+ <Link href="/" passHref>
12 <a className="type-ui text-wall-500">Urbit</a>
12 <a className="type-ui text-wall-500">Urbit</a>
13 </Link>
13 </Link>
14 </header>
14 </header>
@@ -20,7 +20,7 @@ export default function Sidebar(props) {
20
20
21 <MenuTray isOpen={isOpen} setTray={setTray} search={props.search}>
21 <MenuTray isOpen={isOpen} setTray={setTray} search={props.search}>
22 <header className="flex shrink-0 justify-between items-center pb-8">
22 <header className="flex shrink-0 justify-between items-center pb-8">
23− <Link href="/">
23+ <Link href="/" passHref>
24 <a className="type-ui text-wall-500">Urbit</a>
24 <a className="type-ui text-wall-500">Urbit</a>
25 </Link>
25 </Link>
26 </header>
26 </header>
components/gateway/Gateway404.js+1−1
@@ -15,7 +15,7 @@ const Gateway404 = ({ type }) => {
15 item={`No ${type} at this address`}
15 item={`No ${type} at this address`}
16 />
16 />
17 <hr className="text-wall-200" />
17 <hr className="text-wall-200" />
18− <Link href="/">
18+ <Link href="/" passHref>
19 <a className="text-xl block font-semibold">Urbit.org</a>
19 <a className="text-xl block font-semibold">Urbit.org</a>
20 </Link>
20 </Link>
21 </Section>
21 </Section>
content/ids/tiplec-lacnyx.md−1
@@ -4,4 +4,3 @@ nickname = "Sol"
4bgColor = "#000000"
4bgColor = "#000000"
5image = ""
5image = ""
6+++
6+++
7−
pages/applications/[[...application]].js+5−5
@@ -106,10 +106,10 @@ const ApplicationPage = ({ data, markdown, params }) => {
106 <p className="text-sm font-semibold text-wall-400">
106 <p className="text-sm font-semibold text-wall-400">
107 Learn how to install an Urbit application
107 Learn how to install an Urbit application
108 </p>
108 </p>
109− <Link href="/guides/installing-applications">
109+ <Link href="/guides/installing-applications" passHref>
110− <button className="button-lg max-w-xs bg-green-400 text-white">
110+ <a className="button-lg max-w-xs bg-green-400 text-white">
111 Installing Urbit applications
111 Installing Urbit applications
112− </button>
112+ </a>
113 </Link>
113 </Link>
114 </div>
114 </div>
115 </div>
115 </div>
@@ -119,11 +119,11 @@ const ApplicationPage = ({ data, markdown, params }) => {
119 Have an application you'd like to share publicly through
119 Have an application you'd like to share publicly through
120 urbit.org?
120 urbit.org?
121 </p>
121 </p>
122− <Link href="/applications/submit">
122+ <Link href="/applications/submit" passHref>
123 <a className="type-ui text-green-400">Submit your application</a>
123 <a className="type-ui text-green-400">Submit your application</a>
124 </Link>
124 </Link>
125 </div>
125 </div>
126− <Link href="/">
126+ <Link href="/" passHref>
127 <a className="text-xl pt-8 block font-semibold">Urbit.org</a>
127 <a className="text-xl pt-8 block font-semibold">Urbit.org</a>
128 </Link>
128 </Link>
129 </Section>
129 </Section>
pages/applications/submit.js+1−1
@@ -129,7 +129,7 @@ ${form?.description || ""}`
129 >
129 >
130 Submit with GitHub
130 Submit with GitHub
131 </button>
131 </button>
132− <Link href="/">
132+ <Link href="/" passHref>
133 <a className="text-xl pt-8 block font-semibold">Urbit.org</a>
133 <a className="text-xl pt-8 block font-semibold">Urbit.org</a>
134 </Link>
134 </Link>
135 </Section>
135 </Section>
pages/blog.js+1−1
@@ -61,7 +61,7 @@ export default function Blog({ posts, search }) {
61 </div>
61 </div>
62 ) : null}
62 ) : null}
63 {post.extra.ship ? (
63 {post.extra.ship ? (
64− <Link href={`/ids/${post.extra.ship}`}>
64+ <Link href={`/ids/${post.extra.ship}`} passHref>
65 <a className="type-sub-bold text-wall-500 font-mono">
65 <a className="type-sub-bold text-wall-500 font-mono">
66 {post.extra.ship}
66 {post.extra.ship}
67 </a>
67 </a>
pages/blog/[slug].js+1−1
@@ -50,7 +50,7 @@ export default function Post({
50 <div className="type-sub-bold mr-2">{post.extra.author}</div>
50 <div className="type-sub-bold mr-2">{post.extra.author}</div>
51 ) : null}
51 ) : null}
52 {post.extra.ship ? (
52 {post.extra.ship ? (
53− <Link href={`/ids/${post.extra.ship}`}>
53+ <Link href={`/ids/${post.extra.ship}`} passHref>
54 <a className="type-sub-bold text-wall-500 font-mono">
54 <a className="type-sub-bold text-wall-500 font-mono">
55 {post.extra.ship}
55 {post.extra.ship}
56 </a>
56 </a>
pages/docs/[[...slug]].js+2−2
@@ -86,7 +86,7 @@ const pageTree = (thisLink, tree, level = 0) => {
86 });
86 });
87 return (
87 return (
88 <li>
88 <li>
89− <Link href={href}>
89+ <Link href={href} passHref>
90 <a
90 <a
91 className={`relative inline-block ${pageItemClasses} ${selectedClasses}`}
91 className={`relative inline-block ${pageItemClasses} ${selectedClasses}`}
92 >
92 >
@@ -132,7 +132,7 @@ export default function DocsLayout({
132 <Sidebar search={search}>
132 <Sidebar search={search}>
133 <ul>
133 <ul>
134 <li>
134 <li>
135− <Link href="/docs">
135+ <Link href="/docs" passHref>
136 <a className={`relative ${selectedClasses} ${rootClasses}`}>
136 <a className={`relative ${selectedClasses} ${rootClasses}`}>
137 Introduction
137 Introduction
138 </a>
138 </a>
pages/getting-started/[[...slug]].js+2−2
@@ -53,7 +53,7 @@ const pageTree = (thisLink, tree, level = 0) => {
53
53
54 return (
54 return (
55 <>
55 <>
56− <Link href={thisLink}>
56+ <Link href={thisLink} passHref>
57 <a className={`${pageItemClasses} cursor-pointer`}>{tree.title}</a>
57 <a className={`${pageItemClasses} cursor-pointer`}>{tree.title}</a>
58 </Link>
58 </Link>
59 </>
59 </>
@@ -80,7 +80,7 @@ export default function UsingLayout({ posts, data, params, search, markdown }) {
80 <Sidebar search={search}>
80 <Sidebar search={search}>
81 <ul>
81 <ul>
82 <li>
82 <li>
83− <Link href="/getting-started">
83+ <Link href="/getting-started" passHref>
84 <a className={`relative ${selectedClasses} ${rootClasses}`}>
84 <a className={`relative ${selectedClasses} ${rootClasses}`}>
85 Getting Started
85 Getting Started
86 </a>
86 </a>
pages/grants.js+21−21
@@ -179,20 +179,20 @@ export default function Grants({
179 </div>
179 </div>
180 </div>
180 </div>
181 <div className="flex flex-wrap">
181 <div className="flex flex-wrap">
182− <Link href="#grant-types">
182+ <Link href="#grant-types" passHref>
183− <button className="button-lg bg-blue-400 text-white mr-2">
183+ <a className="button-lg bg-blue-400 text-white mr-2">
184 Learn More
184 Learn More
185− </button>
185+ </a>
186 </Link>
186 </Link>
187− <Link href="#join-community">
187+ <Link href="#join-community" passHref>
188− <button className="button-lg bg-black text-white mr-2">
188+ <a className="button-lg bg-black text-white mr-2">
189 Join the Community
189 Join the Community
190− </button>
190+ </a>
191 </Link>
191 </Link>
192− <Link href="#view-grants">
192+ <Link href="#view-grants" passHref>
193− <button className="button-lg bg-wall-400 text-white mr-2">
193+ <a className="button-lg bg-wall-400 text-white mr-2">
194 View Grants
194 View Grants
195− </button>
195+ </a>
196 </Link>
196 </Link>
197 </div>
197 </div>
198 </Section>
198 </Section>
@@ -217,10 +217,10 @@ export default function Grants({
217 &mdash; we fund all kinds projects, not strictly technical ones,
217 &mdash; we fund all kinds projects, not strictly technical ones,
218 so don't hesitate to pitch your idea!
218 so don't hesitate to pitch your idea!
219 </p>
219 </p>
220− <Link href="/grants/proposals">
220+ <Link href="/grants/proposals" passHref>
221− <button className="button-sm bg-blue-400 text-white mb-8">
221+ <a className="button-sm bg-blue-400 text-white mb-8 max-w-fit">
222 Submit a Proposal
222 Submit a Proposal
223− </button>
223+ </a>
224 </Link>
224 </Link>
225
225
226 {/* Apprenticeships */}
226 {/* Apprenticeships */}
@@ -230,10 +230,10 @@ export default function Grants({
230 They're one of the best ways to level up your skills, and often
230 They're one of the best ways to level up your skills, and often
231 lead to full-time jobs.
231 lead to full-time jobs.
232 </p>
232 </p>
233− <Link href="/grants/apprenticeships">
233+ <Link href="/grants/apprenticeships" passHref>
234− <button className="button-sm bg-green-400 text-white mb-8">
234+ <a className="button-sm bg-green-400 text-white mb-8 max-w-fit">
235 Become an Apprentice
235 Become an Apprentice
236− </button>
236+ </a>
237 </Link>
237 </Link>
238
238
239 {/* Bounties */}
239 {/* Bounties */}
@@ -242,15 +242,15 @@ export default function Grants({
242 Urbit Foundation or from trusted partners in our ecosystem.
242 Urbit Foundation or from trusted partners in our ecosystem.
243 </p>
243 </p>
244 <div className="flex flex-wrap">
244 <div className="flex flex-wrap">
245− <Link href="/grants/bounties#post-a-bounty">
245+ <Link href="/grants/bounties#post-a-bounty" passHref>
246− <button className="button-sm bg-yellow-300 text-black mr-2">
246+ <a className="button-sm bg-yellow-300 text-black mr-2 max-w-fit">
247 Post a Bounty
247 Post a Bounty
248− </button>
248+ </a>
249 </Link>
249 </Link>
250− <Link href="/grants/bounties">
250+ <Link href="/grants/bounties" passHref>
251− <button className="button-sm bg-wall-400 text-white">
251+ <a className="button-sm bg-wall-400 text-white max-w-fit">
252 Learn more
252 Learn more
253− </button>
253+ </a>
254 </Link>
254 </Link>
255 </div>
255 </div>
256 </div>
256 </div>
pages/grants/[slug].js+1−1
@@ -44,7 +44,7 @@ export default function Grant({ post, markdown, search }) {
44 </div>
44 </div>
45 ) : null}
45 ) : null}
46 {post.extra.ship ? (
46 {post.extra.ship ? (
47− <Link href={`/ids/${post.extra.ship}`}>
47+ <Link href={`/ids/${post.extra.ship}`} passHref>
48 <a className="type-sub-bold text-wall-500 font-mono">
48 <a className="type-sub-bold text-wall-500 font-mono">
49 {post.extra.ship}
49 {post.extra.ship}
50 </a>
50 </a>
pages/groups/[[...group]].js+5−5
@@ -101,21 +101,21 @@ const GroupPage = ({ data, markdown, params }) => {
101 <p className="text-sm font-semibold text-wall-400">
101 <p className="text-sm font-semibold text-wall-400">
102 Get on the network and join this group.
102 Get on the network and join this group.
103 </p>
103 </p>
104− <Link href="/guides/joining-groups">
104+ <Link href="/guides/joining-groups" passHref>
105− <button className="button-lg max-w-xs bg-green-400 text-white">
105+ <a className="button-lg max-w-xs bg-green-400 text-white">
106 How to join a group
106 How to join a group
107− </button>
107+ </a>
108 </Link>
108 </Link>
109 </div>
109 </div>
110 </div>
110 </div>
111 <hr className="text-wall-200" />
111 <hr className="text-wall-200" />
112 <div className="flex flex-col space-y-1">
112 <div className="flex flex-col space-y-1">
113 <p>Have a group you'd like to share publicly through urbit.org?</p>
113 <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>
115 <a className="type-ui text-green-400">Submit your group</a>
115 <a className="type-ui text-green-400">Submit your group</a>
116 </Link>
116 </Link>
117 </div>
117 </div>
118− <Link href="/">
118+ <Link href="/" passHref>
119 <a className="text-xl pt-8 block font-semibold">Urbit.org</a>
119 <a className="text-xl pt-8 block font-semibold">Urbit.org</a>
120 </Link>
120 </Link>
121 </Section>
121 </Section>
pages/groups/submit.js+2−2
@@ -50,7 +50,7 @@ ${form?.description || ""}`
50 </p>
50 </p>
51 <p>
51 <p>
52 Then, to validate that you operate this group, send a DM to{" "}
52 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>
54 <a>~haddef-sigwen</a>
54 <a>~haddef-sigwen</a>
55 </Link>{" "}
55 </Link>{" "}
56 from your group host <code>@p</code> with a link to the pull
56 from your group host <code>@p</code> with a link to the pull
@@ -138,7 +138,7 @@ ${form?.description || ""}`
138 >
138 >
139 Submit with GitHub
139 Submit with GitHub
140 </button>
140 </button>
141− <Link href="/">
141+ <Link href="/" passHref>
142 <a className="text-xl pt-8 block font-semibold">Urbit.org</a>
142 <a className="text-xl pt-8 block font-semibold">Urbit.org</a>
143 </Link>
143 </Link>
144 </Section>
144 </Section>
pages/guides/[slug].js+1−1
@@ -31,7 +31,7 @@ export default function GuidePage({ post, markdown }) {
31 <article
31 <article
32 dangerouslySetInnerHTML={{ __html: decode(markdown) }}
32 dangerouslySetInnerHTML={{ __html: decode(markdown) }}
33 ></article>
33 ></article>
34− <Link href="/">
34+ <Link href="/" passHref>
35 <a className="text-xl pt-12 block font-semibold">Urbit.org</a>
35 <a className="text-xl pt-12 block font-semibold">Urbit.org</a>
36 </Link>
36 </Link>
37 </Section>
37 </Section>
pages/ids/[id].js+2−2
@@ -154,13 +154,13 @@ const IdPage = ({ data, markdown, applications, groups, network, params }) => {
154 <hr className="text-wall-200" />
154 <hr className="text-wall-200" />
155 <div className="flex flex-col space-y-1">
155 <div className="flex flex-col space-y-1">
156 <p>Have an Urbit ID?</p>
156 <p>Have an Urbit ID?</p>
157− <Link href="/ids/submit">
157+ <Link href="/ids/submit" passHref>
158 <a className="type-ui text-green-400">
158 <a className="type-ui text-green-400">
159 Claim and customize your Urbit ID page
159 Claim and customize your Urbit ID page
160 </a>
160 </a>
161 </Link>
161 </Link>
162 </div>
162 </div>
163− <Link href="/">
163+ <Link href="/" passHref>
164 <a className="text-xl pt-8 block font-semibold">Urbit.org</a>
164 <a className="text-xl pt-8 block font-semibold">Urbit.org</a>
165 </Link>
165 </Link>
166 </Section>
166 </Section>
pages/ids/submit.js+2−2
@@ -54,7 +54,7 @@ ${form?.description || ""}`
54 </p>
54 </p>
55 <p>
55 <p>
56 Then, to validate that you own that ID, send a DM to{" "}
56 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>
58 <a>~haddef-sigwen</a>
58 <a>~haddef-sigwen</a>
59 </Link>{" "}
59 </Link>{" "}
60 from your <code>@p</code> with a link to the pull request on
60 from your <code>@p</code> with a link to the pull request on
@@ -156,7 +156,7 @@ ${form?.description || ""}`
156 >
156 >
157 Submit with GitHub
157 Submit with GitHub
158 </button>
158 </button>
159− <Link href="/">
159+ <Link href="/" passHref>
160 <a className="text-xl pt-8 block font-semibold">Urbit.org</a>
160 <a className="text-xl pt-8 block font-semibold">Urbit.org</a>
161 </Link>
161 </Link>
162 </Section>
162 </Section>
pages/index.js+17−14
@@ -156,12 +156,12 @@ export default function Home({ posts, events, grantNumbers, search }) {
156 real ownership and authority over the network.
156 real ownership and authority over the network.
157 </p>
157 </p>
158 <div className="flex flex-wrap">
158 <div className="flex flex-wrap">
159− <Link href="/grants">
159+ <Link href="/grants" passHref>
160 <a className="button-lg bg-blue-400 text-white mr-2 mb-8">
160 <a className="button-lg bg-blue-400 text-white mr-2 mb-8">
161 Learn More
161 Learn More
162 </a>
162 </a>
163 </Link>
163 </Link>
164− <Link href="/grants#view-grants">
164+ <Link href="/grants#view-grants" passHref>
165 <a className="button-lg bg-green-400 text-white mr-2 mb-8">
165 <a className="button-lg bg-green-400 text-white mr-2 mb-8">
166 View Grants
166 View Grants
167 </a>
167 </a>
@@ -187,7 +187,7 @@ export default function Home({ posts, events, grantNumbers, search }) {
187 </p>
187 </p>
188 <p className="pb-12">
188 <p className="pb-12">
189 The entire OS is a{" "}
189 The entire OS is a{" "}
190− <Link href="https://urbit.org/docs/nock/definition/">
190+ <Link href="https://urbit.org/docs/nock/definition/" passHref>
191 <a>single pure function</a>
191 <a>single pure function</a>
192 </Link>{" "}
192 </Link>{" "}
193 that provides application developers with strong guarantees:
193 that provides application developers with strong guarantees:
@@ -196,19 +196,22 @@ export default function Home({ posts, events, grantNumbers, search }) {
196 </p>
196 </p>
197 <p className="pb-12">
197 <p className="pb-12">
198 You can get started learning how to{" "}
198 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>
200 <a>contribute to the project</a>
200 <a>contribute to the project</a>
201 </Link>
201 </Link>
202 , or view a variety of{" "}
202 , or view a variety of{" "}
203+ <Link
203− <Link href="https://github.com/urbit/awesome-urbit#http-apis-airlock">
204+ href="https://github.com/urbit/awesome-urbit#http-apis-airlock"
205+ passHref
206+ >
204 <a>libraries</a>
207 <a>libraries</a>
205 </Link>{" "}
208 </Link>{" "}
206 for building on Urbit using the languages you already know.
209 for building on Urbit using the languages you already know.
207 </p>
210 </p>
208− <Link href="/docs">
211+ <Link href="/docs" passHref>
209− <button className="button-lg type-ui text-white bg-wall-600">
212+ <a className="button-lg type-ui text-white bg-wall-600 max-w-fit">
210 Read the Developer Docs
213 Read the Developer Docs
211− </button>
214+ </a>
212 </Link>
215 </Link>
213 </div>
216 </div>
214 </Section>
217 </Section>
@@ -226,10 +229,10 @@ export default function Home({ posts, events, grantNumbers, search }) {
226 <PostPreview post={posts[1]} key={posts[1].slug} />
229 <PostPreview post={posts[1]} key={posts[1].slug} />
227 </TwoUp>
230 </TwoUp>
228
231
229− <Link href="/blog">
232+ <Link href="/blog" passHref>
230− <button className="button-lg type-ui text-white bg-green-400">
233+ <a className="button-lg max-w-fit type-ui text-white bg-green-400">
231 See More
234 See More
232− </button>
235+ </a>
233 </Link>
236 </Link>
234 </Section>
237 </Section>
235
238
@@ -246,10 +249,10 @@ export default function Home({ posts, events, grantNumbers, search }) {
246 <EventPreview event={events[1]} key={events[1].slug} />
249 <EventPreview event={events[1]} key={events[1].slug} />
247 </TwoUp>
250 </TwoUp>
248
251
249− <Link href="/events">
252+ <Link href="/events" passHref>
250− <button className="button-lg type-ui text-white bg-wall-600">
253+ <a className="button-lg max-w-fit type-ui text-white bg-wall-600">
251 More Events
254 More Events
252− </button>
255+ </a>
253 </Link>
256 </Link>
254 </Section>
257 </Section>
255
258
pages/media/[slug].js+1−1
@@ -41,7 +41,7 @@ export default function MediaPage({ post, markdown, search }) {
41 </div>
41 </div>
42 ) : null}
42 ) : null}
43 {post.extra.ship ? (
43 {post.extra.ship ? (
44− <Link href={`/ids/${post.extra.ship}`}>
44+ <Link href={`/ids/${post.extra.ship}`} passHref>
45 <a className="type-sub-bold text-wall-500 font-mono">
45 <a className="type-sub-bold text-wall-500 font-mono">
46 {post.extra.ship}
46 {post.extra.ship}
47 </a>
47 </a>
pages/understanding-urbit/[[...slug]].js+2−2
@@ -58,7 +58,7 @@ const pageTree = (thisLink, tree, level = 0) => {
58
58
59 return (
59 return (
60 <>
60 <>
61− <Link href={thisLink}>
61+ <Link href={thisLink} passHref>
62 <a className={`${pageItemClasses} cursor-pointer`}>{tree.title}</a>
62 <a className={`${pageItemClasses} cursor-pointer`}>{tree.title}</a>
63 </Link>
63 </Link>
64 </>
64 </>
@@ -92,7 +92,7 @@ export default function UnderstandingLayout({
92 <Sidebar search={search}>
92 <Sidebar search={search}>
93 <ul>
93 <ul>
94 <li>
94 <li>
95− <Link href="/understanding-urbit">
95+ <Link href="/understanding-urbit" passHref>
96 <a className={`relative ${selectedClasses} ${rootClasses}`}>
96 <a className={`relative ${selectedClasses} ${rootClasses}`}>
97 Introduction
97 Introduction
98 </a>
98 </a>
pages/updates.js+1−1
@@ -47,7 +47,7 @@ export default function Updates({ posts, search }) {
47 <div className="mx-1 text-wall-500">•</div>
47 <div className="mx-1 text-wall-500">•</div>
48 ) : null}
48 ) : null}
49 {post?.extra.ship ? (
49 {post?.extra.ship ? (
50− <Link href={`/ids/${post.extra.ship}`}>
50+ <Link href={`/ids/${post.extra.ship}`} passHref>
51 <a className="type-sub-bold text-wall-500 font-mono">
51 <a className="type-sub-bold text-wall-500 font-mono">
52 {post.extra.ship}
52 {post.extra.ship}
53 </a>
53 </a>
pages/updates/[slug].js+1−1
@@ -48,7 +48,7 @@ export default function Post({
48 </div>
48 </div>
49 ) : null}
49 ) : null}
50 {post?.extra?.ship ? (
50 {post?.extra?.ship ? (
51− <Link href={`/ids/${post.extra.ship}`}>
51+ <Link href={`/ids/${post.extra.ship}`} passHref>
52 <a className="type-sub-bold text-wall-500 font-mono">
52 <a className="type-sub-bold text-wall-500 font-mono">
53 {post?.extra?.ship}
53 {post?.extra?.ship}
54 </a>
54 </a>
pages/using/[[...slug]].js+1−1
@@ -81,7 +81,7 @@ const pageTree = (thisLink, tree, level = 0) => {
81 });
81 });
82 return (
82 return (
83 <li>
83 <li>
84− <Link href={href}>
84+ <Link href={href} passHref>
85 <a
85 <a
86 className={`relative ${pageItemClasses} ${selectedClasses}`}
86 className={`relative ${pageItemClasses} ${selectedClasses}`}
87 >
87 >