@@ -15,11 +15,15 @@ import Footer from "../components/Footer";
1515import Header from "../components/Header";
1616import EventPreview from "../components/EventPreview";
1717import { getAllEvents, pair } from "../lib/lib";
18+import { useRouter } from "next/router";
1819
1920import { eventKeys } from "../lib/constants";
2021
2122export default function Events({ events, search }) {
2223 const [selected, setSelected] = useState("All");
24+ const router = useRouter();
25+ const { tag } = router.query;
26+
2327 const post = {
2428 title: "Events",
2529 description: "In-person, remote, and recorded events about Urbit.",
@@ -27,6 +31,13 @@ export default function Events({ events, search }) {
2731
2832 const now = DateTime.now();
2933
34+ const tagFilter = (event) => {
35+ if (tag) {
36+ return event?.tags?.includes(tag)
37+ } else {
38+ return true;
39+ }
40+ }
3041 const selectionFilter = (event) => {
3142 if (selected === "All") {
3243 return true;
@@ -38,7 +49,7 @@ export default function Events({ events, search }) {
3849 };
3950
4051 const pastEvents = pair(
41− events.filter(selectionFilter).filter((event) => {
52+ events.filter(selectionFilter).filter(tagFilter).filter((event) => {
4253 const ends = generateRealtimeDate(event.ends);
4354 return ends < now;
4455 })
@@ -47,6 +58,7 @@ export default function Events({ events, search }) {
4758 const futureEvents = pair(
4859 events
4960 .filter(selectionFilter)
61+ .filter(tagFilter)
5062 .filter((event) => {
5163 const starts = generateRealtimeDate(event.starts);
5264 return starts > now;
@@ -64,7 +76,7 @@ export default function Events({ events, search }) {
6476 );
6577
6678 const happeningNow = pair(
67− events.filter(selectionFilter).filter((event) => {
79+ events.filter(selectionFilter).filter(tagFilter).filter((event) => {
6880 const starts = generateRealtimeDate(event.starts);
6981 const ends = generateRealtimeDate(event.ends);
7082 return starts < DateTime.now() && ends > now;
@@ -96,7 +108,9 @@ export default function Events({ events, search }) {
96108 <Header search={search} />
97109 <Section>
98110 <div className="measure">
99− <h1 className="pb-16">Events</h1>
111+ {tag
112+ ? <h1 className="pb-16">{events.filter(tagFilter).length} events tagged "{tag}"</h1>
113+ : <h1 className="pb-16">Events</h1>}
100114 <div className="flex space-x-2">
101115 <SelectedButton selection="All" text="All Events" />
102116 <SelectedButton selection="In-person" text="In-person" />