Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add speaker names and URL next to their talks #338

Merged
merged 11 commits into from
Aug 16, 2024
2 changes: 1 addition & 1 deletion app/components/AdGrid.css.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ export const h1 = style({
"@media": {
[breakpoints.medium]: {
fontSize: `clamp(5rem, 9vw, 8rem)`,
fontWeight: "700",
fontWeight: vars.weights.large,
},
},

Expand Down
5 changes: 2 additions & 3 deletions app/components/AnchorWithArrow.css.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import { style } from "@vanilla-extract/css";

export const anchor = style({
display: "flex",
gap: "0.25em",
justifyContent: "flex-start",
alignItems: "center",
display: "inline-flex",
});

export const arrow = style({
Expand Down
1 change: 0 additions & 1 deletion app/components/AnchorWithArrow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ export function AnchorWithArrow({ children, href }: AnchorWithArrowProps) {
href={href}
rel="noreferrer"
target="_blank"
variant="heavy"
>
{children}
<Arrow className={styles.arrow} label="" variant="out" />
Expand Down
22 changes: 19 additions & 3 deletions app/components/EventDetails.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { EventData } from "~/schemas";

import { AnchorWithArrow } from "./AnchorWithArrow";
import * as styles from "./EventDetails.css";
import { UnorderedList } from "./UnorderedList";

export interface EventDetailsProps {
active?: boolean;
Expand All @@ -23,11 +24,26 @@ export function EventDetails({ active, event }: EventDetailsProps) {
<article className={styles.article}>
<h3 className={styles.heading}>{formatDate(event.date)}</h3>
<div>{event.location}</div>
<ul className={styles.list}>
<UnorderedList className={styles.list}>
{event.topics.map((topic) => (
<li key={topic}>{topic}</li>
<li key={topic.title}>
<strong>{topic.title}</strong>
{topic.author && (
<>
{" "}
by{" "}
{topic.author.url ? (
<AnchorWithArrow href={topic.author.url}>
{topic.author.name}
</AnchorWithArrow>
) : (
topic.author.name
)}
</>
)}
</li>
))}
</ul>
</UnorderedList>
<AnchorWithArrow href={event.link}>
{active ? "Register Now" : "Event Info"}
</AnchorWithArrow>
Expand Down
3 changes: 3 additions & 0 deletions app/components/UnorderedList.css.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { bodyText } from "./BodyText.css";

export const unorderedList = bodyText;
12 changes: 12 additions & 0 deletions app/components/UnorderedList.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import clsx from "clsx";
import React from "react";

import * as styles from "./UnorderedList.css";

export interface UnorderedListProps extends React.PropsWithChildren {
className?: string;
}

export function UnorderedList({ children, className }: UnorderedListProps) {
return <ul className={clsx(styles.unorderedList, className)}>{children}</ul>;
}
79 changes: 68 additions & 11 deletions app/data/events.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,20 @@
"location": "Microsoft NERD Center",
"time": "5:30pm - 8:30pm",
"topics": [
"Declarative Builds and Deployments with Nix",
"Supabase is Sweet"
{
"author": {
"name": "Xavier Ruiz",
"url": "https://xav.ie"
},
"title": "Declarative Builds and Deployments with Nix"
},
{
"author": {
"name": "Josh Goldberg",
"url": "https://joshuakgoldberg.com/"
},
"title": "Supabase is Sweet"
}
]
},
{
Expand All @@ -15,8 +27,19 @@
"location": "Microsoft NERD Center",
"time": "5:30pm - 8:30pm",
"topics": [
"Web Observables! In The Platform!",
"Coding for the Common Good with BUILD UMass"
{
"author": {
"name": "Dominic Farolino"
},
"title": "Web Observables! In The Platform!"
},
{
"author": {
"name": "Abhijit Ajit Kamath",
"url": "https://abhijitkamath.com/"
},
"title": "Coding for the Common Good with BUILD UMass"
}
]
},
{
Expand All @@ -25,8 +48,14 @@
"location": "Microsoft NERD Center",
"time": "5:30pm - 8:30pm",
"topics": [
"What's New in TypeScript 5.5",
"Group Discussion: Learning TypeScript"
{
"author": {
"name": "Josh Goldberg",
"url": "https://joshuakgoldberg.com/"
},
"title": "What's New in TypeScript 5.5"
},
{ "title": "Group Discussion: Learning TypeScript" }
]
},
{
Expand All @@ -35,8 +64,19 @@
"location": "Microsoft NERD Center",
"time": "5:30pm - 8:30pm",
"topics": [
"Every Single Thing You Can Do With Destructuring",
"Conference And Meetup Talk Proposals Helpful Tips"
{
"author": {
"name": "Dimitri Mitropoulos"
},
"title": "Every Single Thing You Can Do With Destructuring"
},
{
"author": {
"name": "Anna Astori",
"url": "https://www.linkedin.com/in/anna-astori/"
},
"title": "Conference And Meetup Talk Proposals Helpful Tips"
}
]
},
{
Expand All @@ -45,9 +85,26 @@
"location": "Microsoft NERD Center",
"time": "6:00pm - 8:30pm",
"topics": [
"What's New in TypeScript 5.4",
"It's Dangerous to Go to Runtime! Take Your (Ark)Types",
"How to Become a Fake Polyglot Programmer"
{
"author": {
"name": "Josh Goldberg",
"url": "https://joshuakgoldberg.com/"
},
"title": "What's New in TypeScript 5.4"
},
{
"author": {
"name": "David Blass",
"url": "https://x.com/ssalbdivad"
},
"title": "It's Dangerous to Go to Runtime! Take Your (Ark)Types"
},
{
"author": {
"name": "Nnenna Ndukwe"
},
"title": "How to Become a Fake Polyglot Programmer"
}
]
}
]
5 changes: 3 additions & 2 deletions app/routes/about.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { ExternalAnchor } from "~/components/Anchor";
import { BodyText } from "~/components/BodyText";
import { Heading } from "~/components/Heading";
import { Layout } from "~/components/Layout";
import { UnorderedList } from "~/components/UnorderedList";
import { createMeta, site } from "~/config";

const tagline = `We meet once every month or two to chat about our favorite typed superset of JavaScript.`;
Expand Down Expand Up @@ -42,7 +43,7 @@ export default function About() {
</ExternalAnchor>
.
</BodyText>
<ul>
<UnorderedList>
<li>
<strong>Josh Goldberg</strong>
</li>
Expand All @@ -61,7 +62,7 @@ export default function About() {
<li>
<strong>Hadley Garrett</strong>
</li>
</ul>
</UnorderedList>
<Heading level={3}>The Website</Heading>
<BodyText>
Built with React, Remix, TypeScript, Vanilla Extract, and Vite.
Expand Down
19 changes: 9 additions & 10 deletions app/routes/speak.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { Aside } from "~/components/Aside";
import { BodyText } from "~/components/BodyText";
import { Heading } from "~/components/Heading";
import { Layout } from "~/components/Layout";
import { UnorderedList } from "~/components/UnorderedList";
import { createMeta } from "~/config";

const tagline = `No prior experience or TypeScript expertise required!`;
Expand All @@ -30,16 +31,14 @@ export default function About() {
Boston TS Club Speaking Form
</AnchorWithArrow>
</BodyText>
<BodyText>
All we ask is:
<ul>
<li>
Send us your slides 24 hours in advance, so we can check them for
accessibility
</li>
<li>Be prepared to chat about your talk with attendees</li>
</ul>
</BodyText>
<BodyText>All we ask is:</BodyText>
<UnorderedList>
<li>
Send us your slides 24 hours in advance, so we can check them for
accessibility
</li>
<li>Be prepared to chat about your talk with attendees</li>
</UnorderedList>
<BodyText>
We're happy to give you all the support you need for a great experience,
including talk ideation, slides review, and feedback on a dry run. 💙
Expand Down
12 changes: 11 additions & 1 deletion app/schemas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,17 @@ export const eventSchema = z.object({
link: z.string(),
location: z.string(),
time: z.string(),
topics: z.array(z.string()),
topics: z.array(
z.object({
author: z
.object({
name: z.string(),
url: z.string().nullish(),
})
.nullish(),
title: z.string(),
}),
),
});

export type EventData = z.infer<typeof eventSchema>;
8 changes: 8 additions & 0 deletions cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,25 @@
"pnpm-lock.yaml"
],
"words": [
"Abhijit",
"Ajit",
"Astori",
"Blass",
"bluesky",
"bostonts",
"clsx",
"currentcolor",
"Dimitri",
"Farolino",
"Hadley",
"isbot",
"Jérémie",
"Kamath",
"knip",
"Mariah",
"Mitropoulos",
"Ndukwe",
"Nnenna",
"packagejson",
"Sanker",
"Supabase"
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"scripts": {
"build": "remix vite:build",
"dev": "remix vite:dev",
"format": "prettier .",
"format": "prettier --write .",
"lint": "eslint . .*js --max-warnings 0",
"lint:knip": "knip",
"lint:md": "markdownlint \"**/*.md\" \".github/**/*.md\" --rules sentences-per-line",
Expand Down
Loading