From 2dd4214998f5a5ae6bc7f72f09fd35f3b3d5d73f Mon Sep 17 00:00:00 2001 From: Caihaohan Date: Tue, 27 Jan 2026 19:18:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=B8=85=E7=A9=BA=E6=8C=89=E9=92=AE=E5=B9=B6=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=20AI=20=E6=90=9C=E7=B4=A2=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在搜索输入框有内容时显示清空按钮(X 图标) - 点击清空按钮可清除输入内容并重置搜索状态 - 移除 AI 模式下的提示文字以简化界面 - 清理相关的 aiHint/traditionalHint props 及传递链 Co-Authored-By: Claude (glm-4.7) --- src/app/[locale]/page.tsx | 2 - .../[locale]/projects/ProjectsPageClient.tsx | 6 --- src/app/[locale]/projects/page.tsx | 2 - src/components/search/AISearchBar.tsx | 43 +++++++++++++------ src/components/search/HomeSearchBar.tsx | 6 --- 5 files changed, 30 insertions(+), 29 deletions(-) diff --git a/src/app/[locale]/page.tsx b/src/app/[locale]/page.tsx index cf53365..8265486 100644 --- a/src/app/[locale]/page.tsx +++ b/src/app/[locale]/page.tsx @@ -39,8 +39,6 @@ export default async function HomePage({ params }: HomePageProps) { toggleToAI={tCommon('toggleToAI')} toggleToTraditional={tCommon('toggleToTraditional')} searching={tCommon('searching')} - aiHint={tCommon('aiHint')} - traditionalHint={tCommon('traditionalHint')} /> diff --git a/src/app/[locale]/projects/ProjectsPageClient.tsx b/src/app/[locale]/projects/ProjectsPageClient.tsx index 71ae340..e3ef48e 100644 --- a/src/app/[locale]/projects/ProjectsPageClient.tsx +++ b/src/app/[locale]/projects/ProjectsPageClient.tsx @@ -22,8 +22,6 @@ interface ProjectsPageClientProps { toggleToAI: string toggleToTraditional: string searching: string - aiHint: string - traditionalHint: string translations: { viewDetails: string submitProjectTitle: string @@ -42,8 +40,6 @@ export function ProjectsPageClient({ toggleToAI, toggleToTraditional, searching, - aiHint, - traditionalHint, translations, }: ProjectsPageClientProps) { const searchParams = useSearchParams() @@ -143,8 +139,6 @@ export function ProjectsPageClient({ toggleToAI={toggleToAI} toggleToTraditional={toggleToTraditional} searching={searching} - aiHint={aiHint} - traditionalHint={traditionalHint} onSearch={handleAISearch} loading={loading} /> diff --git a/src/app/[locale]/projects/page.tsx b/src/app/[locale]/projects/page.tsx index 5932944..3c0cb71 100644 --- a/src/app/[locale]/projects/page.tsx +++ b/src/app/[locale]/projects/page.tsx @@ -52,8 +52,6 @@ export default async function ProjectsPage({ toggleToAI={tCommon('toggleToAI')} toggleToTraditional={tCommon('toggleToTraditional')} searching={tCommon('searching')} - aiHint={tCommon('aiHint')} - traditionalHint={tCommon('traditionalHint')} translations={translations} > {/* Tag Cloud - rendered inside client component for non-AI mode */} diff --git a/src/components/search/AISearchBar.tsx b/src/components/search/AISearchBar.tsx index c9f32a6..e3f64c1 100644 --- a/src/components/search/AISearchBar.tsx +++ b/src/components/search/AISearchBar.tsx @@ -1,7 +1,8 @@ 'use client' -import { useState } from 'react' -import { Sparkles } from 'lucide-react' +import { useState, useEffect } from 'react' +import { useRouter, useSearchParams } from 'next/navigation' +import { Sparkles, X } from 'lucide-react' interface AISearchBarProps { locale: string @@ -12,8 +13,6 @@ interface AISearchBarProps { toggleToAI: string toggleToTraditional: string searching: string - aiHint: string - traditionalHint: string onSearch: (query: string, isAI: boolean) => void loading?: boolean } @@ -27,14 +26,22 @@ export function AISearchBar({ toggleToAI, toggleToTraditional, searching, - aiHint, - traditionalHint, onSearch, loading = false, }: AISearchBarProps) { + const router = useRouter() + const searchParams = useSearchParams() const [query, setQuery] = useState('') const [aiMode, setAiMode] = useState(false) + // 从 URL 参数初始化 query + useEffect(() => { + const searchParam = searchParams.get('search') + if (searchParam) { + setQuery(searchParam) + } + }, [searchParams]) + const handleSubmit = (e: React.FormEvent) => { e.preventDefault() if (query.trim()) { @@ -46,6 +53,11 @@ export function AISearchBar({ setAiMode(!aiMode) } + const handleClear = () => { + setQuery('') + router.push(`/${locale}/projects`) + } + return (
@@ -69,6 +81,18 @@ export function AISearchBar({ {/* Buttons Container */}
+ {/* Clear button - only show when there's a query */} + {query && ( + + )} + {/* AI Mode Toggle */}
- - {/* AI Mode Hint */} - {aiMode && ( -
- 💡 {aiHint} -
- )}
) } diff --git a/src/components/search/HomeSearchBar.tsx b/src/components/search/HomeSearchBar.tsx index 329a61f..86680d0 100644 --- a/src/components/search/HomeSearchBar.tsx +++ b/src/components/search/HomeSearchBar.tsx @@ -11,8 +11,6 @@ interface HomeSearchBarProps { toggleToAI: string toggleToTraditional: string searching: string - aiHint: string - traditionalHint: string } export function HomeSearchBar({ @@ -24,8 +22,6 @@ export function HomeSearchBar({ toggleToAI, toggleToTraditional, searching, - aiHint, - traditionalHint, }: HomeSearchBarProps) { const handleSearch = (query: string, isAI: boolean) => { const params = new URLSearchParams() @@ -44,8 +40,6 @@ export function HomeSearchBar({ toggleToAI={toggleToAI} toggleToTraditional={toggleToTraditional} searching={searching} - aiHint={aiHint} - traditionalHint={traditionalHint} onSearch={handleSearch} /> )