From 70db5be257005a230a3f0f52f28d7ec650cc3886 Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Tue, 4 Aug 2026 12:28:19 +0800 Subject: [PATCH] feat(docs): add sponsor contact form --- docs/app/[lang]/sponsors/page.tsx | 28 ++-- .../components/landing/SponsorContactForm.tsx | 145 ++++++++++++++++++ 2 files changed, 157 insertions(+), 16 deletions(-) create mode 100644 docs/components/landing/SponsorContactForm.tsx diff --git a/docs/app/[lang]/sponsors/page.tsx b/docs/app/[lang]/sponsors/page.tsx index d5d89df1f..7d5f9d352 100644 --- a/docs/app/[lang]/sponsors/page.tsx +++ b/docs/app/[lang]/sponsors/page.tsx @@ -2,6 +2,7 @@ import type { Metadata } from "next"; import Link from "next/link"; import { LandingFooter } from "@/components/landing/LandingFooter"; import { LandingNav } from "@/components/landing/LandingNav"; +import { SponsorContactForm } from "@/components/landing/SponsorContactForm"; import { buildMetadata } from "@/lib/metadata"; const i18n = { @@ -14,10 +15,8 @@ const i18n = { rainyunSponsorAction: "Visit RainYun", easysearchSponsorDesc: "Easysearch is an enterprise-grade distributed search engine compatible with Elasticsearch APIs, combining full-text, vector, geospatial search, real-time analytics, and AI capabilities in one platform.", easysearchSponsorAction: "Visit Easysearch", - becomeTitle: "Support DBX", - becomeDesc: "Financial sponsorship, infrastructure, developer tools, services, and other forms of support are all welcome from individuals and organizations.", - becomeContact: "QQ: 86554840", - becomeAction: "Contact us", + becomeTitle: "Sponsorship inquiries", + becomeDesc: "If you would like to support DBX with funding, infrastructure, developer tools, or services, tell us about the idea and how to reach you.", }, cn: { title: "赞助商与合作伙伴", @@ -28,10 +27,8 @@ const i18n = { rainyunSponsorAction: "访问雨云", easysearchSponsorDesc: "Easysearch 是一款企业级分布式搜索引擎,兼容 ES API、融合全文检索、向量检索、地理空间位置检索、实时分析与 AI 能力,为企业提供统一的数据检索与智能分析基础设施。", easysearchSponsorAction: "访问 Easysearch", - becomeTitle: "支持 DBX", - becomeDesc: "无论是个人还是团队,资金赞助、基础设施、开发工具、服务资源或其他形式的支持都十分欢迎。", - becomeContact: "QQ:86554840", - becomeAction: "联系赞助合作", + becomeTitle: "赞助合作", + becomeDesc: "如果你愿意通过资金、基础设施、开发工具或服务资源支持 DBX,请留下联系方式和合作说明。", }, }; @@ -107,14 +104,13 @@ export default async function SponsorsPage({ params }: { params: Promise<{ lang: ))} -
-

{t.becomeTitle}

-

{t.becomeDesc}

-
- {t.becomeContact} - - {t.becomeAction} - +
+
+

{t.becomeTitle}

+

{t.becomeDesc}

+
+
+
diff --git a/docs/components/landing/SponsorContactForm.tsx b/docs/components/landing/SponsorContactForm.tsx new file mode 100644 index 000000000..ee94412fa --- /dev/null +++ b/docs/components/landing/SponsorContactForm.tsx @@ -0,0 +1,145 @@ +"use client"; + +import type { FormEvent } from "react"; +import { Send } from "lucide-react"; + +const CONTACT_EMAIL = "1156263951@qq.com"; + +const i18n = { + en: { + nameLabel: "Name", + namePlaceholder: "How should we address you?", + emailLabel: "Email", + emailPlaceholder: "you@company.com", + organizationLabel: "Organization", + optional: "optional", + organizationPlaceholder: "Company, team, or community", + supportTypeLabel: "Support type", + supportTypes: ["Financial sponsorship", "Infrastructure or services", "Developer tools", "Community collaboration", "Other"], + messageLabel: "How would you like to support DBX?", + messagePlaceholder: "Share your idea, available resources, expected timeline, and anything else that helps us understand the proposal.", + submit: "Continue in email", + privacy: "This opens your email app with the message prepared. DBX does not store the form content on this website.", + alternatives: "Other ways to reach us", + qq: "QQ: 86554840", + subject: "DBX sponsorship inquiry", + emailBody: { + greeting: "Hello DBX team,", + name: "Name", + email: "Email", + organization: "Organization", + supportType: "Support type", + message: "Message", + source: "Source page", + }, + }, + cn: { + nameLabel: "姓名", + namePlaceholder: "怎么称呼你?", + emailLabel: "电子邮箱", + emailPlaceholder: "you@company.com", + organizationLabel: "公司或团队", + optional: "选填", + organizationPlaceholder: "公司、团队或社区名称", + supportTypeLabel: "支持方式", + supportTypes: ["资金赞助", "基础设施或服务资源", "开发工具", "社区合作", "其他"], + messageLabel: "你希望如何支持 DBX?", + messagePlaceholder: "可以介绍合作想法、可提供的资源、预期时间,以及其他便于我们了解方案的信息。", + submit: "用邮箱发送", + privacy: "点击后会打开你的邮件客户端并预填内容,DBX 不会在本站保存这些表单信息。", + alternatives: "其他联系方式", + qq: "QQ:86554840", + subject: "DBX 赞助合作咨询", + emailBody: { + greeting: "你好,DBX 团队:", + name: "姓名", + email: "电子邮箱", + organization: "公司或团队", + supportType: "支持方式", + message: "合作说明", + source: "来源页面", + }, + }, +}; + +export function SponsorContactForm({ lang }: { lang: "en" | "cn" }) { + const t = i18n[lang]; + + function handleSubmit(event: FormEvent) { + event.preventDefault(); + + const formData = new FormData(event.currentTarget); + const value = (field: string) => String(formData.get(field) ?? "").trim(); + const body = [ + t.emailBody.greeting, + "", + `${t.emailBody.name}: ${value("name")}`, + `${t.emailBody.email}: ${value("email")}`, + `${t.emailBody.organization}: ${value("organization") || "-"}`, + `${t.emailBody.supportType}: ${value("supportType")}`, + "", + `${t.emailBody.message}:`, + value("message"), + "", + `${t.emailBody.source}: ${window.location.href}`, + ].join("\n"); + + window.location.href = `mailto:${CONTACT_EMAIL}?subject=${encodeURIComponent(t.subject)}&body=${encodeURIComponent(body)}`; + } + + const fieldClassName = + "mt-2 min-h-11 w-full rounded-lg border border-landing-line bg-[#0d1422] px-3.5 text-sm text-landing-ink outline-none transition placeholder:text-[#65758b] focus:border-[#6ea8ff]/70 focus:ring-2 focus:ring-[#6ea8ff]/15"; + + return ( +
+
+ + +
+ +
+ + +
+ +