Spaces:
Running
Running
import { getRoast } from "@/app/actions/roast"; | |
import Image from "next/image"; | |
import { ImageResponse } from "next/og"; | |
import { NextRequest } from "next/server"; | |
import Logo from "@/assets/logo.svg"; | |
export async function GET( | |
request: NextRequest, | |
{ params }: { params: { slug: string } } | |
) { | |
const { slug } = params; | |
const roast = await getRoast({ id: slug }); | |
if (!roast?.data) { | |
return undefined; | |
} | |
return new ImageResponse( | |
( | |
<div | |
style={{ | |
fontSize: 40, | |
color: "black", | |
background: "#f4f4f5", | |
width: "100%", | |
height: "100%", | |
padding: "40px", | |
textAlign: "left", | |
justifyContent: "center", | |
alignItems: "flex-start", | |
display: "flex", | |
position: "relative", | |
flexDirection: "column", | |
}} | |
> | |
<div | |
style={{ | |
overflow: "hidden", | |
position: "relative", | |
width: "100%", | |
height: "100%", | |
display: "flex", | |
flexDirection: "column", | |
justifyContent: "center", | |
alignItems: "flex-start", | |
// border: "1px solid #d4d4d8", | |
background: "white", | |
borderRadius: 40, | |
padding: "60px 50px", | |
boxShadow: | |
"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)", | |
}} | |
> | |
<div | |
style={{ | |
letterSpacing: 10, | |
fontSize: 26, | |
margin: 0, | |
marginBottom: 20, | |
color: "#71717a", | |
display: "flex", | |
alignItems: "center", | |
justifyContent: "flex-start", | |
}} | |
> | |
<img | |
src="https://huggingface.co/front/assets/huggingface_logo-noborder.svg" | |
alt="logo hugging face" | |
style={{ | |
width: 50, | |
height: 50, | |
marginRight: 20, | |
objectFit: "contain", | |
}} | |
/> | |
HUGGER LOVER | |
</div> | |
<p | |
style={{ | |
fontSize: 35, | |
margin: 0, | |
lineHeight: 1.4, | |
color: "#3f3f46", | |
whiteSpace: "break-spaces", | |
lineClamp: 2, | |
marginTop: 10, | |
textWrap: "pretty", | |
}} | |
> | |
{roast.data.text}... | |
</p> | |
<p | |
style={{ | |
position: "absolute", | |
bottom: -100, | |
right: -10, | |
fontSize: 240, | |
opacity: 0.5, | |
}} | |
> | |
π | |
</p> | |
<div | |
style={{ | |
width: "100vw", | |
height: "200px", | |
background: | |
"linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, white 100%)", | |
position: "absolute", | |
bottom: 0, | |
left: 0, | |
}} | |
></div> | |
</div> | |
</div> | |
), | |
{ | |
width: 1200, | |
height: 630, | |
} | |
); | |
} | |