From b8bf7d4939fbb42936557f1d4ad7cbc223ca4784 Mon Sep 17 00:00:00 2001 From: Kamil Dzieniszewski Date: Mon, 26 Jan 2026 17:20:45 +0100 Subject: [PATCH] feat: Add video playlists section with a corresponding navigation link. --- src/App.tsx | 2 + src/components/navigation.tsx | 1 + src/components/video-playlists.tsx | 180 +++++++++++++++++++++++++++++ 3 files changed, 183 insertions(+) create mode 100644 src/components/video-playlists.tsx diff --git a/src/App.tsx b/src/App.tsx index 9735e52..e3ffd10 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -6,6 +6,7 @@ import { Partners } from '@/components/partners.tsx'; import { PhotosSlider } from '@/components/photos-slider.tsx'; import { Speakers } from '@/components/speakers.tsx'; import { Venue } from '@/components/venue.tsx'; +import { VideoPlaylists } from '@/components/video-playlists.tsx'; import { useErrorTracking } from '@/hooks/useErrorTracking'; import { useScrollDepthTracking } from '@/hooks/useScrollDepthTracking'; import { useTimeOnPageTracking } from '@/hooks/useTimeOnPageTracking'; @@ -27,6 +28,7 @@ export const App = () => { + diff --git a/src/components/navigation.tsx b/src/components/navigation.tsx index 4683a39..3013cfd 100644 --- a/src/components/navigation.tsx +++ b/src/components/navigation.tsx @@ -24,6 +24,7 @@ export const Navigation = () => { { label: 'Speakers', id: 'speakers' }, { label: 'Venue', id: 'venue' }, { label: 'CFP', id: 'cfp' }, + { label: 'Videos', id: 'videos' }, { label: 'Contact', id: 'contact' }, ]; diff --git a/src/components/video-playlists.tsx b/src/components/video-playlists.tsx new file mode 100644 index 0000000..1458a36 --- /dev/null +++ b/src/components/video-playlists.tsx @@ -0,0 +1,180 @@ +interface VideoPlaylist { + id: string; + title: string; + year: string; + playlistUrl: string; + thumbnailUrl: string; + videoCount?: string; + description: string; +} + +const VIDEO_PLAYLISTS: VideoPlaylist[] = [ + { + id: '1', + title: 'meet.js Summit 2023', + year: '2023', + playlistUrl: + 'https://www.youtube.com/watch?v=cSCW8N6qdNk&list=PLMCOR-t1TNte48Vv0B18RgGslQVmeRJ-7', + thumbnailUrl: 'https://i.ytimg.com/vi/cSCW8N6qdNk/maxresdefault.jpg', + description: + 'Watch all the amazing talks from meet.js Summit 2024 conference', + }, + { + id: '2', + title: 'meet.js Summit 2022', + year: '2022', + playlistUrl: + 'https://www.youtube.com/watch?v=3BlGkmnrIjA&list=PLMCOR-t1TNtd1IpGSTU9HSy3srwN6cUhI', + thumbnailUrl: 'https://i.ytimg.com/vi/3BlGkmnrIjA/maxresdefault.jpg', + description: + 'Explore the inspiring presentations from meet.js Summit 2023', + }, + { + id: '3', + title: 'meet.js Summit 2019', + year: '2019', + playlistUrl: + 'https://www.youtube.com/watch?v=MRad-nVzNQI&list=PLMCOR-t1TNtfyUllieWcXzevJ5LoGBYQy', + thumbnailUrl: 'https://i.ytimg.com/vi/MRad-nVzNQI/maxresdefault.jpg', + description: 'Relive the best moments from meet.js Summit 2022 conference', + }, +]; + +export const VideoPlaylists = () => { + if (VIDEO_PLAYLISTS.length === 0) { + return null; + } + + return ( +
+
+ {/* Section Header */} +
+

+ Video Archive +

+

+ Catch up on previous meet.js Summit conferences. Watch inspiring talks + from industry experts and community leaders. +

+
+ + {/* Playlists Grid */} + + + {/* Keyframe animation */} + +
+ ); +};