diff --git a/web/app/[slug]/page.tsx b/web/app/[slug]/page.tsx index 4fc2070..07e0996 100644 --- a/web/app/[slug]/page.tsx +++ b/web/app/[slug]/page.tsx @@ -2,7 +2,7 @@ import DarkModeButton from '@/components/DarkModeButton'; import NavBar from '@/components/NavBar'; -import TalkEntry from '@/components/TalkEntry'; +import TalkPageContent from '@/components/TalkPageContent'; import { getTalks } from '@/components/utils'; export async function generateStaticParams() { @@ -24,7 +24,7 @@ export default async function Home({ params }: { params: { slug: string } }) { - + ); diff --git a/web/app/page.tsx b/web/app/page.tsx index 32979b1..936246c 100644 --- a/web/app/page.tsx +++ b/web/app/page.tsx @@ -2,7 +2,7 @@ import DarkModeButton from '@/components/DarkModeButton'; import NavBar from '@/components/NavBar'; -import Talks from '@/components/Talks'; +import TalksPageContent from '@/components/TalksPageContent'; import { getTalks } from '@/components/utils'; export default async function Home() { @@ -20,7 +20,7 @@ export default async function Home() { - + ); diff --git a/web/components/ListEntry.tsx b/web/components/ListEntry.tsx new file mode 100644 index 0000000..8d109c8 --- /dev/null +++ b/web/components/ListEntry.tsx @@ -0,0 +1,31 @@ +// Copyright 2024 Pejman Ghorbanzade + +import { format } from 'date-fns'; +import type { Talk } from '@/components/types'; + +export function ListEntry({ + talk, + className +}: { + talk: Talk; + className?: string; +}) { + return ( +
+
+
+ {talk.conference} + {talk.location && , {talk.location}} +
+
{talk.title}
+
+
+ +
+
+ ); +} diff --git a/web/components/TalkEntry.tsx b/web/components/TalkPageContent.tsx similarity index 75% rename from web/components/TalkEntry.tsx rename to web/components/TalkPageContent.tsx index 0f5ebd2..d012498 100644 --- a/web/components/TalkEntry.tsx +++ b/web/components/TalkPageContent.tsx @@ -1,29 +1,17 @@ // Copyright 2024 Pejman Ghorbanzade -import { Talk } from '@/components/types'; -import { format } from 'date-fns'; -import Markdown from 'markdown-to-jsx'; import Image from 'next/image'; +import Markdown from 'markdown-to-jsx'; +import { ListEntry } from '@/components/ListEntry'; +import { Talk } from '@/components/types'; -export default function TalkEntry({ talk }: { talk: Talk }) { +export default function TalkPageContent({ talk }: { talk: Talk }) { return ( -
-
-
-
- {talk.conference} - {talk.location && ( - , {talk.location} - )} -
-
{talk.title}
-
-
- -
-
+
+
@@ -39,7 +27,9 @@ export default function TalkEntry({ talk }: { talk: Talk }) { )} {talk.abstract && !talk.tags.includes('hide-abstract') && (
-
Abstract
+
+ Abstract +
{talk.abstract} @@ -69,7 +59,7 @@ function YouTube({ link }: { link: string }) { function Links({ talk }: { talk: Talk }) { return ( -
+
{/* {talk.abstract && !talk.tags.includes('hide-abstract') && Abstract} {talk.links.youtube && ( diff --git a/web/components/Talks.tsx b/web/components/TalksPageContent.tsx similarity index 58% rename from web/components/Talks.tsx rename to web/components/TalksPageContent.tsx index 8339612..cc1fece 100644 --- a/web/components/Talks.tsx +++ b/web/components/TalksPageContent.tsx @@ -3,11 +3,11 @@ import Link from 'next/link'; import { useState } from 'react'; -import { format } from 'date-fns'; +import { ListEntry } from '@/components/ListEntry'; import ViewToggleButton from '@/components/ViewToggleButton'; import type { Talk, View } from '@/components/types'; -export default function Talks({ talks }: { talks: Talk[] }) { +export default function TalksPageContent({ talks }: { talks: Talk[] }) { const [view, setView] = useState('list'); const ViewComponent = view === 'list' ? ListView : GridView; return ( @@ -35,28 +35,12 @@ function ListView({ talks }: { talks: Talk[] }) { className="flex decoration-transparent cursor-pointer" href={`/${talk.slug}`} > - + ))}
); } - -function ListEntry({ talk }: { talk: Talk }) { - return ( -
-
-
- {talk.conference} - {talk.location && , {talk.location}} -
-
{talk.title}
-
-
- -
-
- ); -}