From d837dd38bfb2d22dd6b19c602ae9f038752ffed7 Mon Sep 17 00:00:00 2001
From: rosemariejebbjtxbfp
Date: Wed, 24 Jun 2026 05:00:31 +0000
Subject: [PATCH] =?UTF-8?q?feat(public-frontend):=20=E6=96=B0=E5=A2=9E?=
=?UTF-8?q?=E8=81=94=E7=B3=BB=E6=88=91=E4=BB=AC=E9=A1=B5=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
---
public-frontend/src/App.tsx | 14 ++-
public-frontend/src/components/Contact.tsx | 113 +++++++++++++++++++++
2 files changed, 125 insertions(+), 2 deletions(-)
create mode 100644 public-frontend/src/components/Contact.tsx
diff --git a/public-frontend/src/App.tsx b/public-frontend/src/App.tsx
index 18d09ea..6cd4794 100644
--- a/public-frontend/src/App.tsx
+++ b/public-frontend/src/App.tsx
@@ -1,10 +1,11 @@
import { useEffect, useState } from "react";
-import { Boxes, Search, PlusCircle, Code2, KeyRound } from "lucide-react";
+import { Boxes, Search, PlusCircle, Code2, KeyRound, Headset } from "lucide-react";
import Home from "./components/Home";
import ProductView from "./components/ProductView";
import Contribute from "./components/Contribute";
import ApiDocs from "./components/ApiDocs";
import Account from "./components/Account";
+import Contact from "./components/Contact";
import { api } from "./api";
type View =
@@ -12,13 +13,15 @@ type View =
| { name: "product"; id: string }
| { name: "contribute" }
| { name: "api" }
- | { name: "account" };
+ | { name: "account" }
+ | { name: "contact" };
const NAV: { key: View["name"]; label: string; icon: typeof Search }[] = [
{ key: "home", label: "检索", icon: Search },
{ key: "contribute", label: "贡献档案", icon: PlusCircle },
{ key: "api", label: "API", icon: Code2 },
{ key: "account", label: "API 密钥", icon: KeyRound },
+ { key: "contact", label: "联系我们", icon: Headset },
];
export default function App() {
@@ -88,6 +91,7 @@ export default function App() {
)}
{view.name === "api" && setView({ name: "account" })} />}
{view.name === "account" && }
+ {view.name === "contact" && }