add og images
This commit is contained in:
@@ -10,11 +10,12 @@
|
|||||||
"lint": "eslint . --max-warnings 0"
|
"lint": "eslint . --max-warnings 0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@usesend/email-editor": "workspace:*",
|
||||||
|
"@usesend/ui": "workspace:*",
|
||||||
|
"iconoir-react": "^7.11.0",
|
||||||
"next": "^15.3.1",
|
"next": "^15.3.1",
|
||||||
"react": "19.1.0",
|
"react": "19.1.0",
|
||||||
"react-dom": "19.1.0",
|
"react-dom": "19.1.0"
|
||||||
"@usesend/ui": "workspace:*",
|
|
||||||
"@usesend/email-editor": "workspace:*"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@next/eslint-plugin-next": "^15.3.1",
|
"@next/eslint-plugin-next": "^15.3.1",
|
||||||
|
@@ -17,22 +17,21 @@ const jetbrainsMono = JetBrains_Mono({
|
|||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "useSend – Open source email platform",
|
title: "useSend – Open source email platform",
|
||||||
description:
|
description: "Pay only for what you send, not for storing contacts",
|
||||||
"Open source email platform for everyone: SMTP, API, editor, analytics.",
|
|
||||||
icons: [{ rel: "icon", url: "/favicon.ico" }],
|
icons: [{ rel: "icon", url: "/favicon.ico" }],
|
||||||
metadataBase: new URL("https://usesend.com"),
|
metadataBase: new URL("https://usesend.com"),
|
||||||
openGraph: {
|
openGraph: {
|
||||||
title: "useSend – Open source email platform",
|
title: "useSend – Open source email platform",
|
||||||
description:
|
description: "Pay only for what you send, not for storing contacts",
|
||||||
"Open source email platform for everyone: SMTP, API, editor, analytics.",
|
|
||||||
url: "https://usesend.com",
|
url: "https://usesend.com",
|
||||||
siteName: "useSend",
|
siteName: "useSend",
|
||||||
images: [
|
images: [
|
||||||
{
|
{
|
||||||
url: "/logo-squircle.png",
|
url: "https://uploads.usesend.com/logos/og.png",
|
||||||
width: 512,
|
width: 1200,
|
||||||
height: 512,
|
height: 630,
|
||||||
alt: "useSend",
|
alt: "useSend – Open source email platform",
|
||||||
|
type: "image/png",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
locale: "en_US",
|
locale: "en_US",
|
||||||
@@ -41,9 +40,15 @@ export const metadata: Metadata = {
|
|||||||
twitter: {
|
twitter: {
|
||||||
card: "summary_large_image",
|
card: "summary_large_image",
|
||||||
title: "useSend – Open source email platform",
|
title: "useSend – Open source email platform",
|
||||||
description:
|
description: "Pay only for what you send, not for storing contacts",
|
||||||
"Open source email platform for everyone: SMTP, API, editor, analytics.",
|
images: ["https://uploads.usesend.com/logos/og.png"],
|
||||||
images: ["/logo-squircle.png"],
|
},
|
||||||
|
robots: {
|
||||||
|
index: true,
|
||||||
|
follow: true,
|
||||||
|
},
|
||||||
|
alternates: {
|
||||||
|
canonical: "https://usesend.com",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -53,7 +58,11 @@ export default function RootLayout({
|
|||||||
children: React.ReactNode;
|
children: React.ReactNode;
|
||||||
}) {
|
}) {
|
||||||
return (
|
return (
|
||||||
<html lang="en" suppressHydrationWarning className="scroll-smooth bg-background">
|
<html
|
||||||
|
lang="en"
|
||||||
|
suppressHydrationWarning
|
||||||
|
className="scroll-smooth bg-background"
|
||||||
|
>
|
||||||
<body
|
<body
|
||||||
className={`font-mono ${inter.variable} ${jetbrainsMono.variable} bg-background`}
|
className={`font-mono ${inter.variable} ${jetbrainsMono.variable} bg-background`}
|
||||||
>
|
>
|
||||||
|
@@ -7,6 +7,7 @@ export function FeatureCardPlain({
|
|||||||
title?: string;
|
title?: string;
|
||||||
content?: string;
|
content?: string;
|
||||||
}) {
|
}) {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="rounded-[18px] bg-primary/20 p-1">
|
<div className="rounded-[18px] bg-primary/20 p-1">
|
||||||
<div className="h-full rounded-[14px] bg-primary/20 p-0.5 shadow-sm">
|
<div className="h-full rounded-[14px] bg-primary/20 p-0.5 shadow-sm">
|
||||||
|
@@ -42,8 +42,8 @@ function Slider({
|
|||||||
}, [dragging]);
|
}, [dragging]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex items-center gap-3">
|
<div className="flex flex-col sm:flex-row gap-3 sm:items-center">
|
||||||
<div className="w-40 sm:w-56 md:w-72 shrink-0">
|
<div className="w-full sm:w-56 md:w-72 shrink-0">
|
||||||
<label htmlFor={id} className="text-sm font-medium block">
|
<label htmlFor={id} className="text-sm font-medium block">
|
||||||
{label}
|
{label}
|
||||||
</label>
|
</label>
|
||||||
|
11
pnpm-lock.yaml
generated
11
pnpm-lock.yaml
generated
@@ -36,6 +36,9 @@ importers:
|
|||||||
'@usesend/ui':
|
'@usesend/ui':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../packages/ui
|
version: link:../../packages/ui
|
||||||
|
iconoir-react:
|
||||||
|
specifier: ^7.11.0
|
||||||
|
version: 7.11.0(react@19.1.0)
|
||||||
next:
|
next:
|
||||||
specifier: ^15.3.1
|
specifier: ^15.3.1
|
||||||
version: 15.3.1(@babel/core@7.26.10)(react-dom@19.1.0)(react@19.1.0)
|
version: 15.3.1(@babel/core@7.26.10)(react-dom@19.1.0)(react@19.1.0)
|
||||||
@@ -11745,6 +11748,14 @@ packages:
|
|||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/iconoir-react@7.11.0(react@19.1.0):
|
||||||
|
resolution: {integrity: sha512-uvTKtnHYwbbTsmQ6HCcliYd50WK0GbjP497RwdISxKzfS01x4cK1Mn/F2mT/t2roSaJQ0I+KnHxMcyvmNMXWsQ==}
|
||||||
|
peerDependencies:
|
||||||
|
react: 18 || 19
|
||||||
|
dependencies:
|
||||||
|
react: 19.1.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/iconv-lite@0.4.24:
|
/iconv-lite@0.4.24:
|
||||||
resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
|
resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
|
Reference in New Issue
Block a user