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 ROASTER | |
| </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, | |
| } | |
| ); | |
| } | |