diff --git a/dictionary/en.json b/dictionary/en.json
index 2f0e6db..f0edc02 100644
--- a/dictionary/en.json
+++ b/dictionary/en.json
@@ -4,6 +4,7 @@
"heroTitle": "Create Stunning 3D Text Designs",
"heroSubtitle": "Generate and customize beautiful 3D text effects for your projects",
"toolTitle": "3D Text Generator Tool",
+ "toolMore": "need more options",
"getStarted": "Generate Now",
"featuresTitle": "Powerful Features",
"feature1Title": "3D Text Customization",
@@ -45,6 +46,8 @@
"downloadBackground": "Download"
},
"TextEditor": {
+ "seoTitle": "3D Text Generator - More Options",
+ "seoDescription": "Fast Create professional 3D text with more options. control the color, font, and effect",
"title": "Text Editor",
"defaultText": "please input your text",
"textColor": "Text Color",
@@ -59,10 +62,10 @@
"copyright": "© {year} Screen Designer. All rights reserved."
},
"DoNotWriteOnThisPage": {
- "seoTitle": "Do Not Write On This Page Generator - Custom Background Creator",
- "seoDescription": "Free online tool to generate professional 'Do Not Write On This Page' backgrounds. Customize text, colors and download high-resolution images for notebooks, whiteboards and screens.",
- "toolTitle": "Do Not Write On This Page Generator",
- "heroTitle": "Professional 'Do Not Write On This Page' Background Creator",
+ "seoTitle": "Do Not Write On This Page - 3D Text Generator",
+ "seoDescription": "Free online tool to generate 'Do Not Write On This Page' 3D Text. Customize text, colors and download high-resolution images for notebooks, whiteboards and screens.",
+ "toolTitle": "'Do Not Write On This Page' Generator",
+ "heroTitle": "'Do Not Write On This Page' 3D Text Generator",
"heroSubtitle": "Generate and customize perfect backgrounds for notebooks, whiteboards and digital screens",
"feature1Title": "Text Customization",
"feature1Desc": "Fully customize text content, fonts and colors to create your perfect design",
@@ -72,6 +75,6 @@
"feature3Desc": "Download print-ready high-quality images in multiple formats",
"ctaTitle": "Create Your Custom Background Now",
"ctaSubtitle": "Start generating professional 'Do Not Write On This Page' designs",
- "ctaButton": "Generate Background"
+ "ctaButton": "Generate 3D Text"
}
}
\ No newline at end of file
diff --git a/dictionary/zh.json b/dictionary/zh.json
index af1e61b..0205284 100644
--- a/dictionary/zh.json
+++ b/dictionary/zh.json
@@ -4,6 +4,7 @@
"heroTitle": "创建惊艳的3D文字设计",
"heroSubtitle": "为您的项目生成并定制精美的3D文字效果",
"toolTitle": "3D文字生成工具",
+ "toolMore": "需要更多选项",
"getStarted": "立即生成",
"featuresTitle": "强大功能",
"feature1Title": "3D文字定制",
@@ -45,6 +46,8 @@
"downloadBackground": "下载图片"
},
"TextEditor": {
+ "seoTitle": "3D 文字生成器 - 更多的选项",
+ "seoDescription": "快速创建具有更多选项的专业 3D 文本。控制颜色、字体和效果",
"title": "文字编辑",
"defaultText": "输入您的文字",
"textColor": "文字颜色",
diff --git a/public/og-image-black-screen.png b/public/og-image-black-screen.png
deleted file mode 100644
index 911b855..0000000
Binary files a/public/og-image-black-screen.png and /dev/null differ
diff --git a/public/og-image-do-not-write-on-this-page.png b/public/og-image-do-not-write-on-this-page.png
index d5de0cb..ada5e0d 100644
Binary files a/public/og-image-do-not-write-on-this-page.png and b/public/og-image-do-not-write-on-this-page.png differ
diff --git a/public/og-image-white-screen.png b/public/og-image-white-screen.png
deleted file mode 100644
index d157d8d..0000000
Binary files a/public/og-image-white-screen.png and /dev/null differ
diff --git a/public/og-image.png b/public/og-image.png
index 177c847..8121c44 100644
Binary files a/public/og-image.png and b/public/og-image.png differ
diff --git a/src/app/[locale]/do-not-write-on-this-page/page.tsx b/src/app/[locale]/do-not-write-on-this-page/page.tsx
index 2872e9c..defb847 100644
--- a/src/app/[locale]/do-not-write-on-this-page/page.tsx
+++ b/src/app/[locale]/do-not-write-on-this-page/page.tsx
@@ -4,8 +4,8 @@ import Footer from "@/components/Footer";
import Header from "@/components/Header";
import { useTranslations } from "next-intl";
import { Metadata } from "next";
-import Editor from "@/components/Editor";
-import { FontNames, FontWeights } from "@/components/common/TextSetting";
+import Editor from "@/components/SimpleEditor";
+import { FontNames, FontWeights, TextProp } from "@/components/common/TextSetting";
export default function Page({
params,
@@ -19,12 +19,7 @@ export default function Page({
const t = useTranslations("DoNotWriteOnThisPage");
const indexT = useTranslations("Index");
- const text = {
- text: "Do Not Write On This Page",
- color: "#8e86fe",
- font: FontNames[0],
- weight: FontWeights[0],
- }
+ const text = TextProp.default("Do Not Write On This Page");
return (
diff --git a/src/app/[locale]/editor/page.tsx b/src/app/[locale]/editor/page.tsx
new file mode 100644
index 0000000..98eb453
--- /dev/null
+++ b/src/app/[locale]/editor/page.tsx
@@ -0,0 +1,73 @@
+
+import Footer from "@/components/Footer";
+import FullEditor from "@/components/FullEditor";
+import Header from "@/components/Header";
+import { Locales } from "@/i18n/config";
+import { Box, Flex } from "@radix-ui/themes";
+import { Metadata } from "next";
+import { getTranslations } from "next-intl/server";
+const host = process.env.NEXT_PUBLIC_HOST;
+export default function Page() {
+
+ return (
+
+
+
+
+
+
+ );
+}
+
+const locales = Locales;
+
+export function generateStaticParams() {
+ return locales.map((locale) => ({ locale }));
+}
+
+export async function generateMetadata({
+ params,
+}: {
+ params: Promise<{ locale: string }>;
+}): Promise
{
+ const { locale } = await params;
+ const t = await getTranslations({ locale, namespace: "TextEditor" });
+
+ const name = "editor";
+
+ return {
+ title: t("seoTitle"),
+ description: t("seoDescription"),
+ openGraph: {
+ title: t("seoTitle"),
+ description: t("seoDescription"),
+ url: `${host}/${locale}/${name}`,
+ images: [
+ {
+ url: `${process.env.NEXT_PUBLIC_HOST}/og-image-${name}.png`,
+ width: 1200,
+ height: 630,
+ alt: t("seoTitle"),
+ },
+ ],
+ locale: locale,
+ type: "website",
+ },
+ twitter: {
+ card: "summary_large_image",
+ title: t("seoTitle"),
+ description: t("seoDescription"),
+ images: [`${process.env.NEXT_PUBLIC_HOST}/og-image-${name}.png`],
+ },
+ alternates: {
+ canonical: `${host}/${name}`,
+ languages: {
+ en: `${host}/en/${name}`,
+ zh: `${host}/zh/${name}`,
+ },
+ },
+ };
+}
diff --git a/src/app/[locale]/page.tsx b/src/app/[locale]/page.tsx
index a498b86..f57807b 100644
--- a/src/app/[locale]/page.tsx
+++ b/src/app/[locale]/page.tsx
@@ -2,7 +2,7 @@ import { use } from "react";
import { getTranslations, setRequestLocale } from "next-intl/server";
import Footer from "@/components/Footer";
import Header from "@/components/Header";
-import Editor from "@/components/Editor";
+import Editor from "@/components/SimpleEditor";
import { useTranslations } from "next-intl";
import { Locales } from "@/i18n/config";
import { Metadata } from "next";
@@ -182,7 +182,7 @@ export async function generateMetadata({
title: t("title"),
description: t("description"),
images: [`${host}/og-image.png`],
- creator: "@s0ver5",
+ creator: "Yaomker",
},
alternates: {
canonical: `${host}`,
diff --git a/src/app/sitemap.ts b/src/app/sitemap.ts
index d583b47..e1153f4 100644
--- a/src/app/sitemap.ts
+++ b/src/app/sitemap.ts
@@ -19,6 +19,18 @@ export default function sitemap(): MetadataRoute.Sitemap {
changeFrequency: "monthly" as const,
priority: 0.8,
})),
+ {
+ url: baseUrl + "/editor",
+ lastModified: new Date(),
+ changeFrequency: "yearly",
+ priority: 1,
+ },
+ ...locales.map((locale) => ({
+ url: `${baseUrl}/${locale}/editor`,
+ lastModified: new Date(),
+ changeFrequency: "monthly" as const,
+ priority: 0.8,
+ })),
{
url: baseUrl + "/do-not-write-on-this-page",
lastModified: new Date(),
diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx
index 5623ada..e324da4 100644
--- a/src/components/Footer.tsx
+++ b/src/components/Footer.tsx
@@ -8,6 +8,14 @@ export default function Footer() {