@@ -3,6 +3,12 @@ import { groq, type PortableTextBlock } from "next-sanity";
33import { notFound } from "next/navigation" ;
44import { Suspense } from "react" ;
55
6+ //Google Ads
7+ import dynamic from "next/dynamic" ;
8+ const GoogleAdBanner = dynamic ( ( ) => import ( "@/components/google-ad-banner" ) , {
9+ ssr : false ,
10+ } ) ;
11+
612import Avatar from "@/components/avatar" ;
713import DateComponent from "@/components/date" ;
814import MoreContent from "@/components/more-content" ;
@@ -15,6 +21,7 @@ import { resolveOpenGraphImage } from "@/sanity/lib/utils";
1521import CoverMedia from "@/components/cover-media" ;
1622import MoreHeader from "@/components/more-header" ;
1723import { BreadcrumbLinks } from "@/components/breadrumb-links" ;
24+ import SponsorCard from "@/components/sponsor-card" ;
1825
1926type Props = {
2027 params : { slug : string } ;
@@ -66,11 +73,18 @@ export default async function PostPage({ params }: Props) {
6673 < h1 className = "mb-12 text-4xl font-bold leading-tight tracking-tighter text-balance md:text-7xl md:leading-none lg:text-8xl" >
6774 { post . title }
6875 </ h1 >
69- < div className = "hidden md:mb-12 md:block" >
70- < div className = "flex flex-col gap-8" >
71- { post ?. author && (
72- < div className = "flex" >
73- { post . author . map ( ( a ) => (
76+ < div className = "mb-8 sm:mx-0 md:mb-16" >
77+ < CoverMedia
78+ cloudinaryImage = { post ?. coverImage }
79+ cloudinaryVideo = { post ?. videoCloudinary }
80+ youtube = { post ?. youtube }
81+ />
82+ </ div >
83+ < div className = "max-w-2xl sm:max-w-none" >
84+ < div className = "mb-6" >
85+ { ( post ?. author ) && (
86+ < div className = "flex flex-wrap gap-2" >
87+ { post ?. author ?. map ( ( a ) => (
7488 < Avatar
7589 key = { a . _id }
7690 name = { a . title }
@@ -80,39 +94,28 @@ export default async function PostPage({ params }: Props) {
8094 ) ) }
8195 </ div >
8296 ) }
83- < div className = "text-lg" >
84- < DateComponent dateString = { post . date } />
85- </ div >
8697 </ div >
87- </ div >
88- < div className = "mb-8 sm:mx-0 md:mb-16" >
89- < CoverMedia
90- cloudinaryImage = { post ?. coverImage }
91- cloudinaryVideo = { post ?. videoCloudinary }
92- youtube = { post ?. youtube }
93- />
94- </ div >
95- < div className = "block md:hidden" >
96- < div className = "max-w-2xl mx-auto" >
97- < div className = "mb-6" >
98- { post . author && (
99- < div className = "flex" >
100- { post . author . map ( ( a ) => (
101- < Avatar
102- key = { a . _id }
103- name = { a . title }
104- href = { `/author/${ a ?. slug } ` }
105- coverImage = { a ?. coverImage }
106- />
107- ) ) }
108- </ div >
109- ) }
110- </ div >
111- < div className = "mb-4 text-lg" >
112- < DateComponent dateString = { post . date } />
113- </ div >
98+ < div className = "mb-4 text-lg" >
99+ < DateComponent dateString = { post . date } />
114100 </ div >
115101 </ div >
102+ { post ?. sponsor ?. length ? (
103+ < section className = "flex flex-col mt-10 mb-10" >
104+ < h2 className = "mb-4 text-2xl font-bold" > Sponsors</ h2 >
105+ < hr className = "border-accent-2" />
106+ < div className = "my-12 " >
107+ < SponsorCard sponsors = { post . sponsor } />
108+ </ div >
109+ < hr className = "border-accent-2" />
110+ </ section >
111+ ) : (
112+ < GoogleAdBanner
113+ data-ad-slot = "slotnumber"
114+ data-full-width-responsive = "true"
115+ data-ad-layout = "in-article"
116+ data-ad-format = "fluid"
117+ />
118+ ) }
116119 { post . content ?. length && (
117120 < PortableText
118121 className = "mx-auto prose-violet lg:prose-xl dark:prose-invert"
0 commit comments