diff --git a/components/LayoutWrapper.tsx b/components/LayoutWrapper.tsx
index 93f1873..689f74b 100644
--- a/components/LayoutWrapper.tsx
+++ b/components/LayoutWrapper.tsx
@@ -29,7 +29,7 @@ const LayoutWrapper = ({ children }: Props) => {
{link.title}
diff --git a/components/MediaItem.tsx b/components/MediaItem.tsx
new file mode 100644
index 0000000..bf11620
--- /dev/null
+++ b/components/MediaItem.tsx
@@ -0,0 +1,24 @@
+import PhotoGallery from './PhotoGallery'
+import YoutubeVideo from './YouTubeVideo'
+
+const MediaItem = (props) => {
+ const { type, title, data } = props
+
+ if (type !== 'video' && type !== 'photos') return null
+
+ const item =
+ type === 'video' ? (
+
+ ) : (
+
+ )
+
+ return (
+
+
{title}
+ {item}
+
+ )
+}
+
+export default MediaItem
diff --git a/components/PhotoGallery.tsx b/components/PhotoGallery.tsx
new file mode 100644
index 0000000..7806575
--- /dev/null
+++ b/components/PhotoGallery.tsx
@@ -0,0 +1,21 @@
+import 'photoswipe/dist/photoswipe.css'
+import { Gallery, Item } from 'react-photoswipe-gallery'
+import Image from './Image'
+
+const PhotoGallery = (props) => {
+ const { title, data } = props
+
+ return (
+
+ {data.length
+ ? data.map((d: string) => (
+ -
+ {({ ref, open }) => }
+
+ ))
+ : null}
+
+ )
+}
+
+export default PhotoGallery
diff --git a/components/ThemeSwitch.tsx b/components/ThemeSwitch.tsx
deleted file mode 100644
index 5409766..0000000
--- a/components/ThemeSwitch.tsx
+++ /dev/null
@@ -1,38 +0,0 @@
-import { useEffect, useState } from 'react'
-import { useTheme } from 'next-themes'
-
-const ThemeSwitch = () => {
- const [mounted, setMounted] = useState(false)
- const { theme, setTheme, resolvedTheme } = useTheme()
-
- // When mounted on client, now we can show the UI
- useEffect(() => setMounted(true), [])
-
- return (
-
- )
-}
-
-export default ThemeSwitch
diff --git a/components/YouTubeVideo.tsx b/components/YouTubeVideo.tsx
new file mode 100644
index 0000000..e32e7e9
--- /dev/null
+++ b/components/YouTubeVideo.tsx
@@ -0,0 +1,18 @@
+const YoutubeVideo = (props) => {
+ const { title, data } = props
+
+ return (
+
+
+
+ )
+}
+
+export default YoutubeVideo
diff --git a/data/mediaData.ts b/data/mediaData.ts
new file mode 100644
index 0000000..b879625
--- /dev/null
+++ b/data/mediaData.ts
@@ -0,0 +1,9 @@
+const mediaData = [
+ {
+ type: 'video',
+ title: ' Beatus - live @ Trois-Rivières Metal Fest 2004',
+ data: 'GC65l2Fo1q8',
+ },
+]
+
+export default mediaData
diff --git a/layouts/PostLayout.tsx b/layouts/PostLayout.tsx
index 67f9420..f96f603 100644
--- a/layouts/PostLayout.tsx
+++ b/layouts/PostLayout.tsx
@@ -10,6 +10,7 @@ import ScrollTopAndComment from '@/components/ScrollTopAndComment'
import { ReactNode } from 'react'
import { PostFrontMatter } from 'types/PostFrontMatter'
import { AuthorFrontMatter } from 'types/AuthorFrontMatter'
+import YoutubeVideo from '@/components/YouTubeVideo'
const postDateTemplate: Intl.DateTimeFormatOptions = {
weekday: 'long',
@@ -98,18 +99,7 @@ export default function PostLayout({ frontMatter, authorDetails, next, prev, chi
{children}
- {youtubeId ? (
-
-
-
- ) : null}
+ {youtubeId ?
: null}
diff --git a/package-lock.json b/package-lock.json
index 408fc81..89f1540 100644
Binary files a/package-lock.json and b/package-lock.json differ
diff --git a/package.json b/package.json
index eb60f08..f8effcf 100644
--- a/package.json
+++ b/package.json
@@ -24,10 +24,12 @@
"mdx-bundler": "^8.0.0",
"next": "12.1.0",
"next-themes": "^0.0.14",
+ "photoswipe": "^5.2.7",
"postcss": "^8.4.5",
"preact": "^10.6.2",
"react": "17.0.2",
"react-dom": "17.0.2",
+ "react-photoswipe-gallery": "^2.2.1",
"reading-time": "1.3.0",
"rehype-autolink-headings": "^6.1.0",
"rehype-citation": "^0.2.0",
diff --git a/pages/media.tsx b/pages/media.tsx
new file mode 100644
index 0000000..c2c72c3
--- /dev/null
+++ b/pages/media.tsx
@@ -0,0 +1,30 @@
+import siteMetadata from '@/data/siteMetadata'
+import mediaData from '@/data/mediaData'
+import { PageSEO } from '@/components/SEO'
+import MediaItem from '@/components/MediaItem'
+
+export default function Media() {
+ return (
+ <>
+
+
+
+
+ Media
+
+
+
+
+ {mediaData.length ? (
+ mediaData.map((d) => (
+
+ ))
+ ) : (
+
No media found.
+ )}
+
+
+
+ >
+ )
+}
diff --git a/pages/tour.tsx b/pages/tour.tsx
index c077ffe..96bac05 100644
--- a/pages/tour.tsx
+++ b/pages/tour.tsx
@@ -4,7 +4,7 @@ import TourDate from '@/components/TourDate'
import Link from '@/components/Link'
import { PageSEO } from '@/components/SEO'
-export default function Projects() {
+export default function Tour() {
return (
<>