on master help sign in
polish, events page tile
0c69a39Gavin Atkinson
components/BasicPage.js+4
@@ -1,4 +1,5 @@
1import { useRouter } from "next/router";
1import { useRouter } from "next/router";
2+import Head from "next/head";
2import ErrorPage from "../pages/404";
3import ErrorPage from "../pages/404";
3import Container from "./Container";
4import Container from "./Container";
4import Header from "./Header";
5import Header from "./Header";
@@ -15,6 +16,9 @@ export default function BasicPage({ post, markdown, search }) {
15 }
16 }
16 return (
17 return (
17 <Container>
18 <Container>
19+ <Head>
20+ <title>Urbit • {post.title}</title>
21+ </Head>
18 <SingleColumn>
22 <SingleColumn>
19 <Header search={search} />
23 <Header search={search} />
20 <Section narrow>
24 <Section narrow>
components/ContentArea.js+12−10
@@ -1,17 +1,19 @@
1export default function ContentArea(props) {
1export default function ContentArea(props) {
2 return (
2 return (
3 <div className="w-full min-w-0 flex flex-col">
3 <div className="w-full min-w-0 flex flex-col">
4− <header className="flex justify-between items-center px-4 md:px-12 lg:px-24 pt-12 pb-8">
4+ <header className="w-full px-4 md:px-8 md:w-10/12 flex flex-row justify-between items-center pt-8 md:pt-10 lg:pt-12 pb-10 md:pb-12 lg:pb-24">
5 <div className="type-ui">{props.section}</div>
5 <div className="type-ui">{props.section}</div>
6+ {
6− <button
7+ // <button
7− onClick={(e) => {
8+ // onClick={(e) => {
8− e.stopPropagation();
9+ // e.stopPropagation();
9− props.search.toggleSearch();
10+ // props.search.toggleSearch();
10− }}
11+ // }}
11− className="button-sm bg-wall text-gray"
12+ // className="button-sm bg-wall text-gray"
12− >
13+ // >
13− Search<div className="ml-4 text-lightGray">⌘K</div>
14+ // Search<div className="ml-4 text-lightGray">⌘K</div>
14− </button>
15+ // </button>
16+ }
15 </header>
17 </header>
16 <div className="px-4 md:px-12 lg:px-24 pb-24 pt-16 flex flex-col w-full max-h-screen h-screen overflow-y-scroll">
18 <div className="px-4 md:px-12 lg:px-24 pb-24 pt-16 flex flex-col w-full max-h-screen h-screen overflow-y-scroll">
17 <div className="type-ui text-lightGray">{props.breadcrumbs}</div>
19 <div className="type-ui text-lightGray">{props.breadcrumbs}</div>
components/Footer.js+36−29
@@ -5,34 +5,36 @@ import { contact } from "../lib/constants";
5
5
6export default function Footer() {
6export default function Footer() {
7 return (
7 return (
8− <footer className="py-16 bg-wall w-full mt-48 flex justify-center">
8+ <footer className="bg-wall w-full mt-48 flex justify-center">
9 <SingleColumn>
9 <SingleColumn>
10− <Section short className="flex">
10+ <Section short className="flex flex-row flex-wrap">
11− <div className="w-1/3 flex flex-col flex-shrink">
11+ <div className="w-1/2 md:w-1/3 flex flex-col flex-shrink">
12− <h4 className="mb-8">Use Urbit</h4>
12+ <h4 className="mt-16 mb-8">Use Urbit</h4>
13− <Link href="">
13+ <Link href="https://github.com/urbit/port/releases">
14 <div>
14 <div>
15 <a className="type-sub text-gray">Urbit Client</a>
15 <a className="type-sub text-gray">Urbit Client</a>
16 </div>
16 </div>
17 </Link>
17 </Link>
18− <Link href="">
18+ <Link href="https://github.com/urbit/urbit/releases">
19 <div>
19 <div>
20 <a className="mt-2 type-sub text-gray">Urbit Binaries</a>
20 <a className="mt-2 type-sub text-gray">Urbit Binaries</a>
21 </div>
21 </div>
22 </Link>
22 </Link>
23+ {
23− <Link href="">
24+ // <Link href="">
24− <div>
25+ // <div>
25− <a className="mt-2 type-sub text-gray">Urbit Apps</a>
26+ // <a className="mt-2 type-sub text-gray">Urbit Apps</a>
26− </div>
27+ // </div>
27− </Link>
28+ // </Link>
28− <Link href="">
29+ }
30+ <Link href="/getting-started/planet/#hosting-providers">
29 <div>
31 <div>
30 <a className="mt-2 type-sub text-gray">Hosting Providers</a>
32 <a className="mt-2 type-sub text-gray">Hosting Providers</a>
31 </div>
33 </div>
32 </Link>
34 </Link>
33 </div>
35 </div>
34− <div className="w-1/3 flex flex-col flex-shrink">
36+ <div className="w-1/2 md:w-1/3 flex flex-col flex-shrink">
35− <h4 className="mb-8">About</h4>
37+ <h4 className="mt-16 mb-8">About</h4>
36 <Link href="/understanding-urbit">
38 <Link href="/understanding-urbit">
37 <div>
39 <div>
38 <a className="type-sub text-gray">What's Urbit?</a>
40 <a className="type-sub text-gray">What's Urbit?</a>
@@ -54,8 +56,8 @@ export default function Footer() {
54 </div>
56 </div>
55 </Link>
57 </Link>
56 </div>
58 </div>
57− <div className="w-1/3 flex flex-col flex-shrink">
59+ <div className="w-1/2 md:w-1/3 flex flex-col flex-shrink">
58− <h4 className="mb-8">News</h4>
60+ <h4 className="mt-16 mb-8">News</h4>
59 <Link href="/blog">
61 <Link href="/blog">
60 <div>
62 <div>
61 <a className="type-sub text-gray">Blog</a>
63 <a className="type-sub text-gray">Blog</a>
@@ -67,10 +69,9 @@ export default function Footer() {
67 </div>
69 </div>
68 </Link>
70 </Link>
69 </div>
71 </div>
70− </Section>
72+
71− <Section short className="flex">
72− <div className="w-1/3 flex flex-col">
73+ <div className="w-1/2 md:w-1/3 flex flex-col">
73− <h4 className="mb-8">Develop</h4>
74+ <h4 className="mt-16 mb-8">Develop</h4>
74 <Link href="/docs">
75 <Link href="/docs">
75 <div>
76 <div>
76 <a className="type-sub text-gray">Documentation</a>
77 <a className="type-sub text-gray">Documentation</a>
@@ -87,8 +88,8 @@ export default function Footer() {
87 </div>
88 </div>
88 </Link>
89 </Link>
89 </div>
90 </div>
90− <div className="w-1/3 flex flex-col">
91+ <div className="w-1/2 md:w-1/3 flex flex-col">
91− <h4 className="mb-8">Contribute</h4>
92+ <h4 className="mt-16 mb-8">Contribute</h4>
92 <Link href="https://github.com/urbit/urbit/issues">
93 <Link href="https://github.com/urbit/urbit/issues">
93 <div>
94 <div>
94 <a className="type-sub text-gray">Issue Tracker</a>
95 <a className="type-sub text-gray">Issue Tracker</a>
@@ -100,8 +101,9 @@ export default function Footer() {
100 </div>
101 </div>
101 </Link>
102 </Link>
102 </div>
103 </div>
104+
103− <div className="w-1/3 flex flex-col">
105+ <div className="w-1/2 md:w-1/3 flex flex-col">
104− <h4 className="mb-8">Community</h4>
106+ <h4 className="mt-16 mb-8">Community</h4>
105 <Link href="https://groups.google.com/a/urbit.org/g/dev?pli=1">
107 <Link href="https://groups.google.com/a/urbit.org/g/dev?pli=1">
106 <div>
108 <div>
107 <a className="type-sub text-gray">Dev Mailing List</a>
109 <a className="type-sub text-gray">Dev Mailing List</a>
@@ -124,24 +126,29 @@ export default function Footer() {
124 </Link>
126 </Link>
125 </div>
127 </div>
126 </Section>
128 </Section>
127− <Section short className="flex">
129+ <Section className="flex flex-col md:flex-row">
128− <div className="w-1/3">
130+ <div className="md:w-1/3">
129 <Link href="/privacy">
131 <Link href="/privacy">
130 <div>
132 <div>
131 <a className="type-sub text-gray">Privacy Policy</a>
133 <a className="type-sub text-gray">Privacy Policy</a>
132 </div>
134 </div>
133 </Link>
135 </Link>
134 </div>
136 </div>
135− <div className="w-1/3">
137+ <div className="md:w-1/3">
136 <Link href="/terms-of-service">
138 <Link href="/terms-of-service">
137 <div>
139 <div>
138 <a className="type-sub text-gray">Terms of Service</a>
140 <a className="type-sub text-gray">Terms of Service</a>
139 </div>
141 </div>
140 </Link>
142 </Link>
141 </div>
143 </div>
142− <div className="w-1/3">
144+ <div className="md:w-1/3">
143 <div>
145 <div>
146+ <a
147+ href={"mailto:" + contact.email}
144− <a className="type-sub text-gray">{"mailto:" + contact.email}</a>
148+ className="type-sub text-gray"
149+ >
150+ {contact.email}
151+ </a>
145 </div>
152 </div>
146 </div>
153 </div>
147 </Section>
154 </Section>
components/Header.js+4−1
@@ -66,7 +66,7 @@ export default function Header(props) {
66 }
66 }
67 <MenuTray isOpen={isOpen} toggleTray={toggleTray}>
67 <MenuTray isOpen={isOpen} toggleTray={toggleTray}>
68 <Link href="/">
68 <Link href="/">
69− <a className="type-ui mb-12 mt-8">Urbit</a>
69+ <a className="type-ui mb-12">Urbit</a>
70 </Link>
70 </Link>
71 <ActiveLink className="mr-5 mb-4 type-h3" href="/docs">
71 <ActiveLink className="mr-5 mb-4 type-h3" href="/docs">
72 Docs
72 Docs
@@ -77,6 +77,9 @@ export default function Header(props) {
77 <ActiveLink className="mr-5 mb-4 type-h3" href="/events">
77 <ActiveLink className="mr-5 mb-4 type-h3" href="/events">
78 Events
78 Events
79 </ActiveLink>
79 </ActiveLink>
80+ <ActiveLink className="mr-5 mb-4 type-h3" href="/grants">
81+ Grants
82+ </ActiveLink>
80 </MenuTray>
83 </MenuTray>
81
84
82 {
85 {
components/MenuTray.js+4−2
@@ -36,9 +36,11 @@ export default function MenuTray(props) {
36 className={`bg-washedWhite w-screen h-screen ${overlayClasses}`}
36 className={`bg-washedWhite w-screen h-screen ${overlayClasses}`}
37 />
37 />
38 <div
38 <div
39− className={`absolute bg-wall h-screen top-0 left-0 p-4 tray-menu-width overflow-y-scroll ${trayClasses}`}
39+ className={`absolute bg-wall h-screen top-0 left-0 tray-menu-width overflow-y-scroll ${trayClasses}`}
40 >
40 >
41+ <div className="flex flex-col px-4 md:px-8 pt-8 md:pt-10 lg:pt-12 pb-10 md:pb-12 lg:pb-24">
41− <div className="flex flex-col">{props.children}</div>
42+ {props.children}
43+ </div>
42 </div>
44 </div>
43 </nav>
45 </nav>
44 );
46 );
components/Sidebar.js+1−1
@@ -20,7 +20,7 @@ export default function Sidebar(props) {
20
20
21 <div className="block md:hidden">
21 <div className="block md:hidden">
22 <MenuTray isOpen={isOpen} toggleTray={toggleTray}>
22 <MenuTray isOpen={isOpen} toggleTray={toggleTray}>
23− <header className="flex flex-shrink-0 justify-between items-center pt-8 pb-8">
23+ <header className="flex flex-shrink-0 justify-between items-center pb-8">
24 <Link href="/">
24 <Link href="/">
25 <a className="type-ui text-gray">Urbit</a>
25 <a className="type-ui text-gray">Urbit</a>
26 </Link>
26 </Link>
content/events/2021-04-29-developer-call-real-time-communications-on-urbit.md+1−3
@@ -13,15 +13,13 @@ description = "Video chat on Urbit? It's nearly here with WebRTC."
13youtube = "XFct6JZHPC0"
13youtube = "XFct6JZHPC0"
14+++
14+++
15
15
16−
17Video chat on Urbit? It's nearly here using the WebRTC protocol. Edward Amsden (`~ritpub-sipsyl`) will be giving us a look at the WebRTC Airlock library that he has developed that handles all the hard parts of WebRTC. This will allow developers to simply call or answer calls by ship or app name. Edward will also be giving us a live text-based demo of WebRTC on urbit. Please join us for an exciting presentation.
16Video chat on Urbit? It's nearly here using the WebRTC protocol. Edward Amsden (`~ritpub-sipsyl`) will be giving us a look at the WebRTC Airlock library that he has developed that handles all the hard parts of WebRTC. This will allow developers to simply call or answer calls by ship or app name. Edward will also be giving us a live text-based demo of WebRTC on urbit. Please join us for an exciting presentation.
18
17
19Edward is a software developer and the principal of Black River Software LLC. He has several years experience building both backend and IoT software in Haskell, and in particular building IoT control and software deployment infrastructure. He also has academic background in programming language research.
18Edward is a software developer and the principal of Black River Software LLC. He has several years experience building both backend and IoT software in Haskell, and in particular building IoT control and software deployment infrastructure. He also has academic background in programming language research.
20
19
21As usual, there'll be an opportunity to jump on the call with us afterward to ask questions and hang out.
20As usual, there'll be an opportunity to jump on the call with us afterward to ask questions and hang out.
22
21
23−
24−## Resources
22+## Resources
25
23
26- [Urbit WebRTC on GitHub](https://github.com/black-river-software/urbit-webrtc)
24- [Urbit WebRTC on GitHub](https://github.com/black-river-software/urbit-webrtc)
27- Check out WebRTC progress reports on `~ritpub-sipsyl/webrtc-on-urbit`
25- Check out WebRTC progress reports on `~ritpub-sipsyl/webrtc-on-urbit`
pages/404.js+3
@@ -7,6 +7,9 @@ import Section from "../components/Section";
7export default function NotFound(props) {
7export default function NotFound(props) {
8 return (
8 return (
9 <Container>
9 <Container>
10+ <Head>
11+ <title>Urbit • 404</title>
12+ </Head>
10 <SingleColumn>
13 <SingleColumn>
11 <Header search={props.search} />
14 <Header search={props.search} />
12 <Section className="pt-48">
15 <Section className="pt-48">
pages/blog.js+5−3
@@ -11,11 +11,14 @@ import { getAllPosts, formatDate } from "../lib/lib";
11export default function Blog({ posts, search }) {
11export default function Blog({ posts, search }) {
12 return (
12 return (
13 <Container>
13 <Container>
14+ <Head>
15+ <title>Urbit • Blog</title>
16+ </Head>
14 <SingleColumn>
17 <SingleColumn>
15 <Header search={search} />
18 <Header search={search} />
16 <Section narrow>
19 <Section narrow>
17 <div className="measure">
20 <div className="measure">
18− <h2 className="pb-16">Urbit Blog</h2>
21+ <h1 className="pb-16">Blog</h1>
19 <p className="pb-6">
22 <p className="pb-6">
20 Stories from the broader Urbit community, the Urbit Foundation,
23 Stories from the broader Urbit community, the Urbit Foundation,
21 and the many people contributing to Urbit.
24 and the many people contributing to Urbit.
@@ -37,8 +40,7 @@ export default function Blog({ posts, search }) {
37 post.extra.image ? (
40 post.extra.image ? (
38 <BackgroundImage
41 <BackgroundImage
39 src={post.extra.image}
42 src={post.extra.image}
40− style={{ height: "620px" }}
41− className="w-full rounded-lg"
43+ className="w-full rounded-lg tile-height"
42 />
44 />
43 ) : null
45 ) : null
44 }
46 }
pages/events.js+97−50
@@ -10,60 +10,104 @@ import Section from "../components/Section";
10import BackgroundImage from "../components/BackgroundImage";
10import BackgroundImage from "../components/BackgroundImage";
11import { getAllPosts, formatDate } from "../lib/lib";
11import { getAllPosts, formatDate } from "../lib/lib";
12
12
13−function assignEventCard(event) {
13+// function assignEventCard(event) {
14− if (event.extra.youtube) {
14+// if (event.extra.youtube) {
15− return (
15+// return (
16− <img
16+// <img
17− src={`http://img.youtube.com/vi/${event.extra.youtube}/maxresdefault.jpg`}
17+// src={`http://img.youtube.com/vi/${event.extra.youtube}/maxresdefault.jpg`}
18− className="w-full rounded-lg h-auto w-full"
18+// className="w-full rounded-lg h-auto w-full"
19− />
19+// />
20− );
20+// );
21− }
21+// }
22−
22+//
23− if (event.extra.image) {
23+// if (event.extra.image) {
24− return (
24+// return (
25− <BackgroundImage
25+// <BackgroundImage
26− src={event.extra.image}
26+// src={event.extra.image}
27− style={{ height: "620px" }}
27+// style={{ height: "620px" }}
28− className="w-full rounded-lg"
28+// className="w-full rounded-lg"
29− />
29+// />
30− );
30+// );
31+// }
32+//
33+// return (
34+// <div
35+// className="w-full rounded-lg bg-wall"
36+// style={{ height: "620px" }}
37+// ></div>
38+// );
39+// }
40+//
41+// function EventCard(props) {
42+// return (
43+// <div key={props.event.slug} className="mb-24 cursor-pointer">
44+// <Link href={`/events/${props.event.slug}`}>
45+// <div>
46+// {assignEventCard(props.event)}
47+// <h3 className="mt-4">{props.event.title}</h3>
48+// <div className="flex items-baseline">
49+// {props.event.extra.author ? (
50+// <div className="type-ui text-gray mt-4">
51+// {props.event.extra.author}
52+// </div>
53+// ) : null}
54+// {props.event.extra.author && post.extra.ship ? (
55+// <div className="mx-1 text-gray">•</div>
56+// ) : null}
57+// {props.event.extra.ship ? (
58+// <div className="type-ui text-gray font-mono">
59+// {props.event.extra.ship}
60+// </div>
61+// ) : null}
62+// </div>
63+//
64+// <div className="type-ui text-gray mt-2">
65+// {formatDate(new Date(props.event.date))} - {props.event.extra.time}
66+// </div>
67+// </div>
68+// </Link>
69+// </div>
70+// );
31− }
71+// }
32
72
73+function EventCard({ event }) {
33 return (
74 return (
34 <div
75 <div
35− className="w-full rounded-lg bg-wall"
76+ key={event.slug}
36− style={{ height: "620px" }}
37− ></div>
38− );
39−}
40−
41−function EventCard(props) {
42− return (
43− <div key={props.event.slug} className="mb-24 cursor-pointer">
77+ className="mb-24 cursor-pointer bg-wall rounded-xl tile-height"
78+ style={{ backgroundImage: event.extra?.image || "" }}
79+ >
44− <Link href={`/events/${props.event.slug}`}>
80+ <Link href={`/events/${event.slug}`}>
45− <div>
81+ <div className="flex flex-col p-8 justify-between items-between h-full relative">
46− {assignEventCard(props.event)}
82+ <div className="flex-grow-1 flex flex-col justify-center h-full">
47− <h3 className="mt-4">{props.event.title}</h3>
83+ <h3 className="mb-4">{event.title}</h3>
48− <div className="flex items-baseline">
84+ <h4 className="mt-4 type-gray">{event?.type}</h4>
49− {props.event.extra.author ? (
50− <div className="type-ui text-gray mt-4">
51− {props.event.extra.author}
52− </div>
53− ) : null}
54− {props.event.extra.author && post.extra.ship ? (
55− <div className="mx-1 text-gray">•</div>
56− ) : null}
57− {props.event.extra.ship ? (
58− <div className="type-ui text-gray font-mono">
59− {props.event.extra.ship}
60− </div>
61− ) : null}
62 </div>
85 </div>
63−
86+ <div className="absolute left-8 bottom-8 w-full">
64− <div className="type-ui text-gray mt-2">
87+ <p className="text-gray">{event.extra.host}</p>
65− {formatDate(new Date(props.event.date))} - {props.event.extra.time}
88+ <p className="text-gray">{event.extra.guests}</p>
66 </div>
89 </div>
90+ {event.extra.youtube ? (
91+ <a
92+ onClick={(e) => e.stopPropagation()}
93+ className="absolute w-16 h-16 right-8 bottom-8 bg-white flex items-center justify-center rounded-full bg-cover bg-center bg-no-repeat"
94+ target="_blank"
95+ href={`https://www.youtube.com/watch?v=${event.extra.youtube}`}
96+ >
97+ <svg
98+ width="48"
99+ height="48"
100+ viewBox="0 0 16 16"
101+ fill="none"
102+ xmlns="http://www.w3.org/2000/svg"
103+ >
104+ <path
105+ d="M11.25 7.56699C11.5833 7.75944 11.5833 8.24056 11.25 8.43301L6.75 11.0311C6.41667 11.2235 6 10.983 6 10.5981L6 5.40192C6 5.01702 6.41667 4.77646 6.75 4.96891L11.25 7.56699Z"
106+ fill="black"
107+ />
108+ </svg>
109+ </a>
110+ ) : null}
67 </div>
111 </div>
68 </Link>
112 </Link>
69 </div>
113 </div>
@@ -73,11 +117,14 @@ function EventCard(props) {
73export default function Events({ pastEvents, currentEvents, search }) {
117export default function Events({ pastEvents, currentEvents, search }) {
74 return (
118 return (
75 <Container>
119 <Container>
120+ <Head>
121+ <title>Urbit • Events</title>
122+ </Head>
76 <SingleColumn>
123 <SingleColumn>
77 <Header search={search} />
124 <Header search={search} />
78 <Section narrow>
125 <Section narrow>
79 <div className="measure">
126 <div className="measure">
80− <h2 className="pb-16">Urbit Events</h2>
127+ <h1 className="pb-16">Events</h1>
81 <p className="pb-6">
128 <p className="pb-6">
82 Events of all kinds: In-person, Remote, and Recorded.
129 Events of all kinds: In-person, Remote, and Recorded.
83 </p>
130 </p>
pages/events/[slug].js+1−1
@@ -66,7 +66,7 @@ export default function Event({
66 </Section>
66 </Section>
67 <Section narrow className={markdownStyles["markdown"]}>
67 <Section narrow className={markdownStyles["markdown"]}>
68 <article
68 <article
69− className="flex flex-col items-center pt-12 w-full"
69+ className="pt-12 w-full"
70 dangerouslySetInnerHTML={{ __html: decode(markdown) }}
70 dangerouslySetInnerHTML={{ __html: decode(markdown) }}
71 ></article>
71 ></article>
72 </Section>
72 </Section>
pages/grants.js+6−4
@@ -91,10 +91,11 @@ export default function Grants({
91 );
91 );
92 });
92 });
93
93
94− console.log("filteredPosts:", filteredPosts);
95−
96 return (
94 return (
97 <Container>
95 <Container>
96+ <Head>
97+ <title>Urbit • Grants</title>
98+ </Head>
98 <SingleColumn>
99 <SingleColumn>
99 <Header search={search} />
100 <Header search={search} />
100 {
101 {
@@ -102,7 +103,7 @@ export default function Grants({
102 }
103 }
103 <Section wide>
104 <Section wide>
104 <div className="measure pb-16">
105 <div className="measure pb-16">
105− <h2 className="pb-16">Urbit Grants</h2>
106+ <h1 className="pb-16">Grants</h1>
106 <p className="mb-8">
107 <p className="mb-8">
107 Urbit is a community project. While anyone can contribute, we help
108 Urbit is a community project. While anyone can contribute, we help
108 focus development and reward exceptional contribution through our
109 focus development and reward exceptional contribution through our
@@ -122,7 +123,8 @@ export default function Grants({
122 </i>
123 </i>
123 </p>
124 </p>
124 <p>
125 <p>
125− — Urbit Community Member <pre>~radbur-sivmus</pre>
126+ — Urbit Community Member{" "}
127+ <pre className="ml-6">~radbur-sivmus</pre>
126 </p>
128 </p>
127 </div>
129 </div>
128 </Section>
130 </Section>
pages/index.js+4−1
@@ -48,6 +48,9 @@ export default function Home({ posts, events, openGrantsCount, search }) {
48
48
49 return (
49 return (
50 <Container>
50 <Container>
51+ <Head>
52+ <title>Urbit</title>
53+ </Head>
51 <SingleColumn>
54 <SingleColumn>
52 <Header search={search} />
55 <Header search={search} />
53
56
@@ -94,7 +97,7 @@ export default function Home({ posts, events, openGrantsCount, search }) {
94 }
97 }
95 <Section narrow>
98 <Section narrow>
96 <div className="flex flex-col md:flex-row md:items-center items-start measure pb-12">
99 <div className="flex flex-col md:flex-row md:items-center items-start measure pb-12">
97− <h2 className="m-0 p-0 mr-4 md:mb-0 mb-4">Urbit Grants</h2>
100+ <h2 className="m-0 p-0 mr-4 md:mb-0 mb-4">Grants</h2>
98 <Link href="/grants">
101 <Link href="/grants">
99 <a className="bg-green text-white badge-lg">
102 <a className="bg-green text-white badge-lg">
100 {openGrantsCount} Open
103 {openGrantsCount} Open
styles/globals.css+4
@@ -63,6 +63,10 @@ button {
63 border: none;
63 border: none;
64}
64}
65
65
66+.tile-height {
67+ height: 38rem;
68+}
69+
66.button-sm {
70.button-sm {
67 @apply flex px-4 py-1 rounded-lg type-ui;
71 @apply flex px-4 py-1 rounded-lg type-ui;
68}
72}