Skip to content

Commit 8015f66

Browse files
committed
.
1 parent 89ee46f commit 8015f66

File tree

4 files changed

+386
-5
lines changed

4 files changed

+386
-5
lines changed

app/(default)/(event)/cvpr2026/workshop/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ export default function Home() {
171171
<div className="w-full h-svh py-16 px-6 3xl:px-16">
172172
<div className="w-full h-full relative rounded-sm">
173173
<Image
174-
src='/assets/background/denver.jpg'
174+
src='https://ik.imagekit.io/opendrivelab/nils-huenerfuerst-OVE2SA0TVJE-unsplash.jpg?updatedAt=1761792013763'
175175
alt='Denver'
176176
fill
177177
className='object-center object-cover bg-gradient-landing rounded-sm bg-black bg-opacity-30 bg-blend-overlay select-none'
Lines changed: 354 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,354 @@
1+
import type { Metadata } from "next";
2+
export const metadata: Metadata = {
3+
title: "Workshop at RSS 2026 | OpenDriveLab",
4+
description: "Workshop at RSS 2026",
5+
keywords: ["Workshop", "RSS 2026", "OpenDriveLab", "HKU"],
6+
};
7+
8+
9+
import Image from 'next/image'
10+
import Link from "next/link"
11+
12+
13+
14+
import { AspectRatio } from "@/components/ui/aspect-ratio"
15+
16+
17+
18+
const speakers: {
19+
name: string;
20+
image: string;
21+
position: string;
22+
affiliation: string;
23+
link: string;
24+
}[] = [
25+
{
26+
name: "Hao Su",
27+
image: "/assets/person/hao_su.jpg",
28+
position: "Associate Professor",
29+
affiliation: 'UC San Diego',
30+
link: 'https://cseweb.ucsd.edu/~haosu/'
31+
},
32+
// {
33+
// name: "Harold Soh",
34+
// image: "/assets/person/harold_soh.jpg",
35+
// position: "Associate Professor",
36+
// affiliation: 'National University of Singapore',
37+
// link: 'https://haroldsoh.com/'
38+
// },
39+
];
40+
41+
42+
43+
const organizers: {
44+
name: string;
45+
affiliation: string;
46+
link: string;
47+
}[] = [
48+
{
49+
name: "Hongyang Li",
50+
affiliation: 'University of Hong Kong',
51+
link: 'https://datascience.hku.hk/people/hongyang-li/'
52+
},
53+
{
54+
name: "Ping Luo",
55+
affiliation: 'University of Hong Kong',
56+
link: 'http://luoping.me/'
57+
},
58+
{
59+
name: "Yasemin Bekiroğlu",
60+
affiliation: 'University College London',
61+
link: 'https://www.dryaseminbekiroglu.com/'
62+
},
63+
{
64+
name: "Lucy Xiaoyang Shi",
65+
affiliation: 'Stanford & Physical Intelligence',
66+
link: 'https://lucys0.github.io/'
67+
},
68+
{
69+
name: "Huijie Wang",
70+
affiliation: 'OpenDriveLab',
71+
link: 'https://faikit.github.io/'
72+
},
73+
];
74+
75+
76+
77+
const events: {
78+
title: string;
79+
subtitle: string;
80+
url: string,
81+
image: string;
82+
imageoption: string;
83+
location: string;
84+
}[] = [
85+
{
86+
title: "From Labs to Life: Embodied Intelligence in the Wild",
87+
subtitle: "CVPR 2026",
88+
url: "/cvpr2026/workshop",
89+
image: "https://ik.imagekit.io/opendrivelab/nils-huenerfuerst-OVE2SA0TVJE-unsplash.jpg?updatedAt=1761792013763",
90+
imageoption: "object-center",
91+
location: "Denver",
92+
},
93+
{
94+
title: "Learning to See: Advancing Spatial Understanding for Embodied Intelligence",
95+
subtitle: "ICCV 2025",
96+
url: "/iccv2025/workshop",
97+
image: "/assets/background/honolulu.jpg",
98+
imageoption: "object-center",
99+
location: "Honolulu",
100+
},
101+
];
102+
103+
104+
105+
export default function Home() {
106+
return (
107+
<div className="w-full">
108+
109+
110+
111+
<div className="w-full h-svh py-16 px-6 3xl:px-16">
112+
<div className="w-full h-full relative rounded-sm">
113+
<Image
114+
src='https://ik.imagekit.io/opendrivelab/jamie-davies-Hao52Fu9-F8-unsplash.jpg'
115+
alt='Sydney'
116+
fill
117+
className='object-center object-cover bg-gradient-landing rounded-sm bg-black bg-opacity-30 bg-blend-overlay select-none'
118+
/>
119+
<div className="w-full h-full absolute flex flex-col justify-end items-start p-6 xl:p-10 gap-6">
120+
<div className="flex flex-row gap-6">
121+
<Image
122+
src='https://ik.imagekit.io/opendrivelab/rss2026.png'
123+
alt='cvpr'
124+
width={256}
125+
height={1}
126+
className='select-none'
127+
/>
128+
</div>
129+
<h1 className="text-white text-t1 font-bold">
130+
Towards Robust Execution of Complex Long-Horizon Tasks
131+
</h1>
132+
<h5 className="text-white">
133+
RSS 2026 Workshop
134+
<br></br>
135+
Sydney, Australia
136+
</h5>
137+
</div>
138+
</div>
139+
</div>
140+
141+
142+
143+
<div className="w-full px-6 flex justify-center mt-24">
144+
<div className="w-full max-w-7xl flex">
145+
<h2 className="text-t1">
146+
<Link href="#introduction" className="scroll-mt-32 group flex items-center" id="introduction">
147+
Introduction
148+
<span className="ml-6 hidden group-hover:inline-block size-6 text-foreground">
149+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor">
150+
<path d="M15.197 3.35462C16.8703 1.67483 19.4476 1.53865 20.9536 3.05046C22.4596 4.56228 22.3239 7.14956 20.6506 8.82935L18.2268 11.2626M10.0464 14C8.54044 12.4882 8.67609 9.90087 10.3494 8.22108L12.5 6.06212" strokeWidth="2.5" strokeLinecap="round"/>
151+
<path d="M13.9536 10C15.4596 11.5118 15.3239 14.0991 13.6506 15.7789L11.2268 18.2121L8.80299 20.6454C7.12969 22.3252 4.55237 22.4613 3.0464 20.9495C1.54043 19.4377 1.67609 16.8504 3.34939 15.1706L5.77323 12.7373" strokeWidth="2.5" strokeLinecap="round"/>
152+
</svg>
153+
</span>
154+
</Link>
155+
</h2>
156+
</div>
157+
</div>
158+
159+
160+
161+
<div className="w-full px-6 flex justify-center mt-12">
162+
<div className="w-full max-w-7xl flex flex-col gap-3">
163+
<p className="leading-relaxed">
164+
TBD
165+
</p>
166+
</div>
167+
</div>
168+
169+
170+
171+
<div className="w-full px-6 flex justify-center mt-24">
172+
<div className="w-full max-w-7xl flex">
173+
<h2 className="text-t1">
174+
<Link href="#schedule" className="scroll-mt-32 group flex items-center" id="schedule">
175+
Schedule
176+
<span className="ml-6 hidden group-hover:inline-block size-6 text-foreground">
177+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor">
178+
<path d="M15.197 3.35462C16.8703 1.67483 19.4476 1.53865 20.9536 3.05046C22.4596 4.56228 22.3239 7.14956 20.6506 8.82935L18.2268 11.2626M10.0464 14C8.54044 12.4882 8.67609 9.90087 10.3494 8.22108L12.5 6.06212" strokeWidth="2.5" strokeLinecap="round"/>
179+
<path d="M13.9536 10C15.4596 11.5118 15.3239 14.0991 13.6506 15.7789L11.2268 18.2121L8.80299 20.6454C7.12969 22.3252 4.55237 22.4613 3.0464 20.9495C1.54043 19.4377 1.67609 16.8504 3.34939 15.1706L5.77323 12.7373" strokeWidth="2.5" strokeLinecap="round"/>
180+
</svg>
181+
</span>
182+
</Link>
183+
</h2>
184+
</div>
185+
</div>
186+
<div className="w-full px-6 flex justify-center mt-12">
187+
<div className="w-full max-w-7xl flex">
188+
To be announced.
189+
</div>
190+
</div>
191+
192+
193+
194+
<div className="w-full px-6 flex justify-center mt-24">
195+
<div className="w-full max-w-7xl flex">
196+
<h2 className="text-t1">
197+
<Link href="#speaker" className="scroll-mt-32 group flex items-center" id="speaker">
198+
Speakers
199+
<span className="ml-6 hidden group-hover:inline-block size-6 text-foreground">
200+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor">
201+
<path d="M15.197 3.35462C16.8703 1.67483 19.4476 1.53865 20.9536 3.05046C22.4596 4.56228 22.3239 7.14956 20.6506 8.82935L18.2268 11.2626M10.0464 14C8.54044 12.4882 8.67609 9.90087 10.3494 8.22108L12.5 6.06212" strokeWidth="2.5" strokeLinecap="round"/>
202+
<path d="M13.9536 10C15.4596 11.5118 15.3239 14.0991 13.6506 15.7789L11.2268 18.2121L8.80299 20.6454C7.12969 22.3252 4.55237 22.4613 3.0464 20.9495C1.54043 19.4377 1.67609 16.8504 3.34939 15.1706L5.77323 12.7373" strokeWidth="2.5" strokeLinecap="round"/>
203+
</svg>
204+
</span>
205+
</Link>
206+
</h2>
207+
</div>
208+
</div>
209+
<div className="w-full px-6 flex justify-center mt-12">
210+
<div className="w-full max-w-7xl flex">
211+
To be announced.
212+
</div>
213+
</div>
214+
215+
216+
{/* <div className="w-full px-6 flex justify-center mt-12">
217+
<div className="w-full max-w-7xl grid gap-12 grid-cols-2 md:grid-cols-3 xl:grid-cols-4 3xl:grid-cols-5">
218+
{[...speakers.values()].map((speaker) => (
219+
<div className="flex flex-col gap-3 group/image" key={speaker.name}>
220+
<Link href={speaker.link} target="_blank">
221+
<AspectRatio ratio={1/1}>
222+
<Image
223+
src={speaker.image}
224+
alt={speaker.name}
225+
fill
226+
className="h-full w-full rounded-sm object-cover bg-gradient-landing group-hover/image:scale-101 transition delay-100 duration-200"
227+
/>
228+
</AspectRatio>
229+
</Link>
230+
<span className="text-xl">
231+
{speaker.name}
232+
</span>
233+
<div className="flex flex-col">
234+
<i className="text-xs text-o-gray">
235+
{speaker.position}
236+
</i>
237+
<span className="">
238+
{speaker.affiliation}
239+
</span>
240+
</div>
241+
242+
</div>
243+
))}
244+
</div>
245+
</div> */}
246+
247+
248+
249+
<div className="w-full px-6 flex justify-center mt-24">
250+
<div className="w-full max-w-7xl flex">
251+
<h2 className="text-t1">
252+
<Link href="#organizer" className="scroll-mt-32 group flex items-center" id="organizer">
253+
Organizers
254+
<span className="ml-6 hidden group-hover:inline-block size-6 text-foreground">
255+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor">
256+
<path d="M15.197 3.35462C16.8703 1.67483 19.4476 1.53865 20.9536 3.05046C22.4596 4.56228 22.3239 7.14956 20.6506 8.82935L18.2268 11.2626M10.0464 14C8.54044 12.4882 8.67609 9.90087 10.3494 8.22108L12.5 6.06212" strokeWidth="2.5" strokeLinecap="round"/>
257+
<path d="M13.9536 10C15.4596 11.5118 15.3239 14.0991 13.6506 15.7789L11.2268 18.2121L8.80299 20.6454C7.12969 22.3252 4.55237 22.4613 3.0464 20.9495C1.54043 19.4377 1.67609 16.8504 3.34939 15.1706L5.77323 12.7373" strokeWidth="2.5" strokeLinecap="round"/>
258+
</svg>
259+
</span>
260+
</Link>
261+
</h2>
262+
</div>
263+
</div>
264+
265+
266+
267+
<div className="w-full px-6 flex justify-center mt-12">
268+
<div className="w-full max-w-7xl">
269+
<div className="w-full max-w-5xl flex flex-col gap-6">
270+
{[...organizers.values()].map((organizer) => (
271+
<div className="flex gap-6" key={organizer.name}>
272+
{
273+
organizer.link == "" && (
274+
<div className="flex-1/2">
275+
<span>
276+
{organizer.name}
277+
</span>
278+
</div>
279+
)
280+
}
281+
{
282+
organizer.link != "" && (
283+
<div className="flex-1/2">
284+
<Link href={organizer.link} target={organizer.link.startsWith('http') ? '_blank' : '_self'} className="hover:text-o-blue">
285+
{organizer.name}
286+
</Link>
287+
</div>
288+
)
289+
}
290+
<i className="flex-1/2">
291+
{organizer.affiliation}
292+
</i>
293+
</div>
294+
))}
295+
</div>
296+
</div>
297+
</div>
298+
299+
300+
301+
<div className="w-full px-6 flex justify-center mt-24">
302+
<div className="w-full max-w-7xl flex">
303+
<h2 className="text-t1">
304+
<Link href="#related" className="scroll-mt-32 group flex items-center" id="related">
305+
Related Workshops
306+
<span className="ml-6 hidden group-hover:inline-block size-6 text-foreground">
307+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor">
308+
<path d="M15.197 3.35462C16.8703 1.67483 19.4476 1.53865 20.9536 3.05046C22.4596 4.56228 22.3239 7.14956 20.6506 8.82935L18.2268 11.2626M10.0464 14C8.54044 12.4882 8.67609 9.90087 10.3494 8.22108L12.5 6.06212" strokeWidth="2.5" strokeLinecap="round"/>
309+
<path d="M13.9536 10C15.4596 11.5118 15.3239 14.0991 13.6506 15.7789L11.2268 18.2121L8.80299 20.6454C7.12969 22.3252 4.55237 22.4613 3.0464 20.9495C1.54043 19.4377 1.67609 16.8504 3.34939 15.1706L5.77323 12.7373" strokeWidth="2.5" strokeLinecap="round"/>
310+
</svg>
311+
</span>
312+
</Link>
313+
</h2>
314+
</div>
315+
</div>
316+
317+
318+
319+
<div className="w-full px-6 flex justify-center mt-12">
320+
<div className="w-full max-w-7xl grid gap-12 grid-cols-1 xl:grid-cols-2">
321+
{[...events.values()].map((event) => (
322+
<div className="flex flex-col gap-6" key={event.title}>
323+
<Link className="w-full h-64 md:h-80 relative rounded-sm shadow-sm overflow-hidden group" href={event.url} target={event.url.startsWith('http') ? '_blank' : '_self'}>
324+
<Image
325+
src={event.image}
326+
alt={event.location}
327+
fill
328+
className={event.imageoption + " object-cover bg-gradient-landing group-hover:scale-103 transition delay-100 duration-200"}
329+
/>
330+
<div className="w-full h-full absolute flex flex-col justify-end items-end p-6">
331+
<h3 className="text-white font-bold text-t0 select-none">
332+
{event.location}
333+
</h3>
334+
</div>
335+
</Link>
336+
<div className="flex flex-col gap-3">
337+
<h2 className="text-xl font-bold">
338+
{event.title}
339+
</h2>
340+
<h3>
341+
{event.subtitle}
342+
</h3>
343+
</div>
344+
345+
</div>
346+
))}
347+
</div>
348+
</div>
349+
350+
351+
352+
</div>
353+
);
354+
}

components/redirect.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,16 +168,21 @@ export default function Redirect() {
168168

169169
// event 2025
170170
if (
171-
pathname.toLowerCase() == '/cvpr2025' ||
172-
pathname.toLowerCase() == '/cvpr2025/'
171+
pathname.toLowerCase().startsWith('/rss2026')
173172
) {
174-
redirect('/cvpr2025/')
173+
redirect('/rss2026/workshop/')
175174
}
176175
if (
177-
pathname.toLowerCase().startsWith('/cvpr2026/workshop')
176+
pathname.toLowerCase().startsWith('/cvpr2026')
178177
) {
179178
redirect('/cvpr2026/workshop/')
180179
}
180+
if (
181+
pathname.toLowerCase() == '/cvpr2025' ||
182+
pathname.toLowerCase() == '/cvpr2025/'
183+
) {
184+
redirect('/cvpr2025/')
185+
}
181186
if (
182187
pathname.toLowerCase().startsWith('/cvpr2025/workshop')
183188
) {

0 commit comments

Comments
 (0)