Skip to content

Commit 37b8fc8

Browse files
committed
fixes
1 parent 9d05b41 commit 37b8fc8

File tree

5 files changed

+68
-62
lines changed

5 files changed

+68
-62
lines changed

next.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import withLess from "next-with-less"
66
import { remarkGraphiQLComment } from "./src/remark-graphiql-comment.js"
77
import fs from "fs"
88

9-
const vercelJSON = JSON.parse(fs.readFileSync("./vercel.json", 'utf-8'));
9+
const vercelJSON = JSON.parse(fs.readFileSync("./vercel.json", "utf-8"))
1010

1111
const withNextra = nextra({
1212
theme: "nextra-theme-docs",

src/app/conf/2024/gallery/page.tsx

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from 'react'
1+
import React from "react"
22
import { Metadata } from "next"
33
import { images } from "../../2023/gallery/_conf-images"
44
import NextImage from "next-image-export-optimizer"
@@ -9,18 +9,17 @@ export const metadata: Metadata = {
99
}
1010

1111
function chunk<T>(arr: T[], len: number): T[][] {
12-
const chunks: T[][] = [];
13-
let i = 0;
12+
const chunks: T[][] = []
13+
let i = 0
1414

1515
while (i < arr.length) {
16-
chunks.push(arr.slice(i, i + len));
17-
i += len;
16+
chunks.push(arr.slice(i, i + len))
17+
i += len
1818
}
1919

20-
return chunks;
20+
return chunks
2121
}
2222

23-
2423
export default function GalleryPage() {
2524
const currentImages = chunk(images, 6)
2625

src/app/conf/2024/pricing.tsx

Lines changed: 55 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { Button } from "@/app/conf/_components/button"
22
import { CheckIcon } from "@/icons"
33
import { clsx } from "clsx"
4-
import { schedule, speakers } from './_data'
5-
import { InfiniteMovingSpeakers } from '../_components/infinite-moving-speakers'
6-
import { SessionList } from '../_components/schedule/session-list'
7-
import { filterCategories2024 } from '../_components/schedule/filter-categories'
8-
import { eventsColors } from './utils'
4+
import { schedule, speakers } from "./_data"
5+
import { InfiniteMovingSpeakers } from "../_components/infinite-moving-speakers"
6+
import { SessionList } from "../_components/schedule/session-list"
7+
import { filterCategories2024 } from "../_components/schedule/filter-categories"
8+
import { eventsColors } from "./utils"
99

1010
interface Pricing {
1111
title: string
@@ -34,7 +34,6 @@ function shuffle<T extends any[]>(array: T): T {
3434
return array
3535
}
3636

37-
3837
const pricing: Pricing[] = [
3938
{
4039
title: "Early Bird",
@@ -117,55 +116,62 @@ export function Pricing() {
117116
</div>
118117

119118
<div className={clsx(classes.container, "flex flex-col items-center")}>
120-
<h3 className="text-[45px] text-center font-bold mb-20">Our Special Speakers</h3>
121-
122-
<InfiniteMovingSpeakers pauseOnHover={true}>
123-
{speakers.filter((e) => e.avatar).map((speaker) => (
124-
<div
125-
key={speaker.username}
126-
className="group border-[1.5px] border-[rgba(255,255,255,0.4)] cursor-pointer hover:-translate-y-3 transition-transform duration-300 relative rounded-full overflow-hidden md:size-[210px]"
127-
>
128-
<a href={`/conf/2024/speakers/${speaker.username}`}>
129-
<img className="size-[120px] md:size-[210px] rounded-full" src={speaker.avatar} alt={speaker.name} />
130-
</a>
131-
<div className="pointer-events-none bg-[rgba(0,0,0,0.6)] h-[40px] text-sm md:text-base md:h-[55px] w-[120px] md:w-[210px] absolute left-0 bottom-0 opacity-1 md:opacity-0 group-hover:opacity-100 transition-opacity duration-300 flex justify-center">
132-
<span className="mt-2.5 md:mt-3.5 font-medium">{speaker.name.split(" ")[0]}</span>
133-
</div>
134-
</div>
135-
))}
136-
</InfiniteMovingSpeakers>
137-
119+
<h3 className="text-[45px] text-center font-bold mb-20">
120+
Our Special Speakers
121+
</h3>
122+
123+
<InfiniteMovingSpeakers pauseOnHover={true}>
124+
{speakers
125+
.filter(e => e.avatar)
126+
.map(speaker => (
127+
<div
128+
key={speaker.username}
129+
className="group border-[1.5px] border-[rgba(255,255,255,0.4)] cursor-pointer hover:-translate-y-3 transition-transform duration-300 relative rounded-full overflow-hidden md:size-[210px]"
130+
>
131+
<a href={`/conf/2024/speakers/${speaker.username}`}>
132+
<img
133+
className="size-[120px] md:size-[210px] rounded-full"
134+
src={speaker.avatar}
135+
alt={speaker.name}
136+
/>
137+
</a>
138+
<div className="pointer-events-none bg-[rgba(0,0,0,0.6)] h-[40px] text-sm md:text-base md:h-[55px] w-[120px] md:w-[210px] absolute left-0 bottom-0 opacity-1 md:opacity-0 group-hover:opacity-100 transition-opacity duration-300 flex justify-center">
139+
<span className="mt-2.5 md:mt-3.5 font-medium">
140+
{speaker.name.split(" ")[0]}
141+
</span>
142+
</div>
143+
</div>
144+
))}
145+
</InfiniteMovingSpeakers>
138146

139147
<div className="mt-14 flex gap-4">
140148
<Button href="/conf/2024/speakers">See all Speakers</Button>
141149
</div>
142150

151+
<div className="mt-16">
152+
<h3 className="text-[45px] text-center font-bold mb-16">
153+
The Schedule
154+
</h3>
155+
156+
<SessionList
157+
year="2024"
158+
filterCategories={filterCategories2024}
159+
eventsColors={eventsColors}
160+
showFilter={false}
161+
// @ts-expect-error -- fixme
162+
scheduleData={shuffle(schedule.filter(e => e.speakers))
163+
.slice(0, 3)
164+
.map(schedule => ({
165+
...schedule,
166+
speakers:
167+
schedule?.speakers?.map(speaker =>
168+
speakers.find(s => s.username === speaker.username),
169+
) || [],
170+
}))}
171+
/>
172+
</div>
143173

144-
145-
<div className='mt-16'>
146-
147-
<h3 className="text-[45px] text-center font-bold mb-16">The Schedule</h3>
148-
149-
<SessionList
150-
year="2024"
151-
filterCategories={filterCategories2024}
152-
eventsColors={eventsColors}
153-
showFilter={false}
154-
// @ts-expect-error -- fixme
155-
scheduleData={shuffle(schedule.filter((e)=>e.speakers))
156-
.slice(0, 3)
157-
.map(schedule => ({
158-
...schedule,
159-
speakers: schedule?.speakers?.map(speaker =>
160-
speakers.find(s => s.username === speaker.username),
161-
) || [],
162-
}))}
163-
/>
164-
165-
166-
</div>
167-
168-
<div className="mt-14 flex gap-4">
174+
<div className="mt-14 flex gap-4">
169175
<Button href="/conf/2024/speakers">View full schedule</Button>
170176
</div>
171177
</div>

src/app/conf/_components/infinite-moving-speakers.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import React, { ReactElement, CSSProperties, Children, ReactNode } from "react"
22
import { clsx } from "clsx"
33

4-
54
export function InfiniteMovingSpeakers({
65
children,
76
pauseOnHover = true,
@@ -25,8 +24,8 @@ export function InfiniteMovingSpeakers({
2524
)}
2625
style={
2726
{
28-
"--animation-duration": '300s',
29-
"--animation-direction": 'forwards'
27+
"--animation-duration": "300s",
28+
"--animation-direction": "forwards",
3029
} as CSSProperties
3130
}
3231
>

src/app/conf/_components/schedule/session-list.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,14 +166,16 @@ export function SessionList({
166166
key={session.id}
167167
className={`${clsx(
168168
"white shadow-2xl rounded-md overflow-hidden flex flex-col text-current hover:no-underline focus:no-underline",
169-
)} ${year === "2024" ? "bg-[#251f30]": ""}`}
169+
)} ${year === "2024" ? "bg-[#251f30]" : ""}`}
170170
href={
171171
year === "2024"
172172
? `/conf/${year}/schedule/${session.id}`
173173
: `/conf/${year}/sessions/${session.id}`
174174
}
175175
>
176-
<div className={`${year === '2024' ?'hidden' : ''} bg-[#251F30] text-white flex justify-between py-5 px-7 relative`}>
176+
<div
177+
className={`${year === "2024" ? "hidden" : ""} bg-[#251F30] text-white flex justify-between py-5 px-7 relative`}
178+
>
177179
<div className="text-sm flex flex-col gap-2 [*:hover>*>&]:opacity-0 transition-opacity duration-300 opacity-100">
178180
{year !== "2024" && (
179181
<div className="flex gap-3">

0 commit comments

Comments
 (0)