@@ -1,6 +1,6 @@
1import Head from "next/head";
1import Head from "next/head";
2import Link from "next/link";
2import Link from "next/link";
3−import React, { useState, useEffect } from "react";
3+import React from "react";
4import { DateTime } from "luxon";
4import { DateTime } from "luxon";
6import Container from "../components/Container";
6import Container from "../components/Container";
@@ -8,22 +8,14 @@ import Section from "../components/Section";
8import SingleColumn from "../components/SingleColumn";
8import SingleColumn from "../components/SingleColumn";
9import Header from "../components/Header";
9import Header from "../components/Header";
10import Footer from "../components/Footer";
10import Footer from "../components/Footer";
11−import BackgroundImage from "../components/BackgroundImage";
12import Contact from "../components/Contact";
11import Contact from "../components/Contact";
13import PostPreview from "../components/PostPreview";
12import PostPreview from "../components/PostPreview";
14import EventPreview from "../components/EventPreview";
13import EventPreview from "../components/EventPreview";
15import Cross from "../components/icons/Cross";
14import Cross from "../components/icons/Cross";
16import TwoUp from "../components/TwoUp";
15import TwoUp from "../components/TwoUp";
17import BubbleLink from "../components/BubbleLink";
16import BubbleLink from "../components/BubbleLink";
23− generateRealtimeDate,
17+import { getAllPosts, getAllEvents, generateRealtimeDate } from "../lib/lib";
25−import { contact, eventKeys } from "../lib/constants";
18+import { eventKeys } from "../lib/constants";
26−import { useLocalStorage } from "../lib/hooks";
28const Banner = ({ children, isOpen, href, dismiss }) => {
20const Banner = ({ children, isOpen, href, dismiss }) => {
@@ -50,7 +42,7 @@ const Banner = ({ children, isOpen, href, dismiss }) => {
53−export default function Home({ posts, events, openGrantsCount, search }) {
45+export default function Home({ posts, events, grantNumbers, search }) {
55 <Container>
47 <Container>
@@ -135,29 +127,24 @@ export default function Home({ posts, events, openGrantsCount, search }) {
135 <Section narrow>
127 <Section narrow>
136 <div className="flex items-center pb-12">
128 <div className="flex items-center pb-12">
137 <h2 className="m-0 p-0 mr-4">Grants</h2>
129 <h2 className="m-0 p-0 mr-4">Grants</h2>
138− {/* <Link href="/grants/proposals"> */}
139− {/* <a className="bg-green-400 text-white badge-lg"> */}
140− {/* {openGrantsCount} Open */}
144 <div className="flex flex-col md:flex-row w-full items-center md:items-start bg-green-100 px-8 py-8 rounded-xl">
131 <div className="flex flex-col md:flex-row w-full items-center md:items-start bg-green-100 px-8 py-8 rounded-xl">
145 <div className="flex items-center flex-col p-4 w-full">
132 <div className="flex items-center flex-col p-4 w-full">
146− <h2 className="text-green-400">200+</h2>
133+ <h2 className="text-green-400">{grantNumbers?.starsAwarded}</h2>
147 <h4 className="text-green-400 text-center pt-2">
134 <h4 className="text-green-400 text-center pt-2">
148 Urbit stars awarded
135 Urbit stars awarded
151 <div className="h-0 w-0 md:h-24 md:w-4 bg-green-200 self-center" />
138 <div className="h-0 w-0 md:h-24 md:w-4 bg-green-200 self-center" />
152 <div className="flex items-center flex-col p-4 w-full">
139 <div className="flex items-center flex-col p-4 w-full">
153− <h2 className="text-green-400">400+</h2>
140+ <h2 className="text-green-400">{grantNumbers?.contributors}</h2>
154 <h4 className="text-green-400 text-center pt-2">
141 <h4 className="text-green-400 text-center pt-2">
155 Different Contributors
142 Different Contributors
158 <div className="h-0 w-0 md:h-24 md:w-4 bg-green-200 self-center" />
145 <div className="h-0 w-0 md:h-24 md:w-4 bg-green-200 self-center" />
159 <div className="flex items-center flex-col p-4 w-full">
146 <div className="flex items-center flex-col p-4 w-full">
160− <h2 className="text-green-400">45+</h2>
147+ <h2 className="text-green-400">{grantNumbers?.active}</h2>
161 <h4 className="text-green-400 text-center pt-2">
148 <h4 className="text-green-400 text-center pt-2">
162 Active Projects
149 Active Projects
@@ -280,8 +267,6 @@ export default function Home({ posts, events, openGrantsCount, search }) {
282export async function getStaticProps() {
269export async function getStaticProps() {
283− const openGrantsCount = getOpenGrantsCount();
285 const posts = getAllPosts(
270 const posts = getAllPosts(
286 ["title", "slug", "date", "description", "extra"],
271 ["title", "slug", "date", "description", "extra"],
@@ -290,6 +275,25 @@ export async function getStaticProps() {
291 const events = getAllEvents(eventKeys, "events");
276 const events = getAllEvents(eventKeys, "events");
278+ const grants = getAllPosts(["extra", "taxonomies"], "grants", "date");
280+ const grantNumbers = {
281+ starsAwarded: grants.reduce(
283+ total + (Number(a?.extra?.reward.replace(/ star[s]?/, "")) || 0),
286+ contributors: [...new Set(grants.map((e) => e.extra.assignee))].length,
287+ active: grants.filter(
289+ !e.extra.canceled &&
290+ !e.extra.completed &&
292+ e.extra.assignee.length > 0
296+ console.log(grantNumbers.active);
293 const now = DateTime.now();
297 const now = DateTime.now();
295 const pastEvents = events.filter((event) => {
299 const pastEvents = events.filter((event) => {
@@ -322,7 +326,7 @@ export async function getStaticProps() {
325− openGrantsCount,
329+ grantNumbers,
326 events: happeningNow.concat(futureEvents).concat(pastEvents),
330 events: happeningNow.concat(futureEvents).concat(pastEvents),