ogimagecn
componenteditorialsource: ok · refreshed
Editorial
A poster-style Open Graph image with oversized display type and a large faint ghost word set behind the content.
npx shadcn add "https://ogimagecn.vercel.app/r/editorial.json"free
No selection tags yet — empty means no evidence, not lack of support.
Dependencies
Bundle weight · lightRegistry dependencies
https://ogimagecn.com/r/badge.jsonhttps://ogimagecn.com/r/brand-mark.json
Files1 · source cached 10/8/2026, 2:49:48 AM
registry/blocks/editorial/index.tsx
import { Badge } from "@/components/og/badge";
import { BrandMark } from "@/components/og/brand-mark";
export interface EditorialProps {
kicker: string;
title: string;
meta: string;
ghost?: string;
brand: string;
logo?: string;
}
export const Editorial = ({
kicker,
title,
meta,
ghost,
brand,
logo,
}: EditorialProps) => (
<div
style={{
backgroundColor: "#f5f1e9",
color: "#0a0a0a",
display: "flex",
flexDirection: "column",
height: "100%",
justifyContent: "space-between",
overflow: "hidden",
padding: "80px",
position: "relative",
width: "100%",
}}
>
<div
style={{
bottom: "-60px",
color: "rgba(10,10,10,0.05)",
display: "flex",
fontSize: "420px",
fontWeight: 800,
letterSpacing: "-0.04em",
lineHeight: 1,
position: "absolute",
right: "-20px",
}}
>
{ghost ?? title.split(" ")[0]}
</div>
<Badge
background="rgba(225,29,72,0.15)"
color="#e11d48"
style={{ alignSelf: "flex-start", fontWeight: 700, padding: "10px 24px" }}
uppercase
>
{kicker}
</Badge>
<div
style={{
display: "flex",
fontSize: title.length > 36 ? 96 : 120,
fontWeight: 800,
letterSpacing: "-0.04em",
lineHeight: 0.98,
maxWidth: "1000px",
}}
>
{title}
</div>
<div
style={{
alignItems: "center",
borderTop: "2px solid rgba(10,10,10,0.15)",
display: "flex",
justifyContent: "space-between",
paddingTop: "28px",
}}
>
<div style={{ alignItems: "center", display: "flex", gap: "12px" }}>
<BrandMark background="#e11d48" radius={6} size={32} src={logo} />
<div style={{ display: "flex", fontSize: "32px", fontWeight: 700 }}>
{brand}
</div>
</div>
<div style={{ color: "#52525b", display: "flex", fontSize: "30px" }}>
{meta}
</div>
</div>
</div>
);