diff --git a/dashboard/src/app/blog/page.tsx b/dashboard/src/app/blog/page.tsx
index ff7b5a2..1c91384 100644
--- a/dashboard/src/app/blog/page.tsx
+++ b/dashboard/src/app/blog/page.tsx
@@ -1,6 +1,7 @@
export const dynamic = 'force-dynamic'
import Link from 'next/link'
+import SearchComponent from '@components/search'
import { getHomepagePosts } from '@cms/content'
import type { Metadata } from 'next'
import { notFound } from 'next/navigation'
@@ -31,12 +32,13 @@ function formatDate(dateStr: string | undefined, language: 'zh' | 'en'): string
}
type PageProps = {
- searchParams: { page?: string }
+ searchParams?: { page?: string } | Promise<{ page?: string }>
}
export default async function BlogPage({ searchParams }: PageProps) {
const posts = await getHomepagePosts()
- const { page } = searchParams ?? {}
+ const resolvedSearchParams = await Promise.resolve(searchParams ?? {})
+ const { page } = resolvedSearchParams ?? {}
const postsPerPage = 10
const currentPage = parseInt(page || '1', 10)
const totalPages = Math.max(1, Math.ceil(posts.length / postsPerPage))
@@ -57,6 +59,7 @@ export default async function BlogPage({ searchParams }: PageProps) {
Latest updates, releases, and insights from the Cloud-Neutral community.
+
{posts.length === 0 ? (
diff --git a/dashboard/src/components/Navbar.tsx b/dashboard/src/components/Navbar.tsx
index eed92f7..0741327 100644
--- a/dashboard/src/components/Navbar.tsx
+++ b/dashboard/src/components/Navbar.tsx
@@ -2,15 +2,15 @@
import Link from 'next/link'
import Image from 'next/image'
import { usePathname } from 'next/navigation'
-import { FormEvent, useEffect, useMemo, useRef, useState } from 'react'
-import { Mail, Search } from 'lucide-react'
+import { useEffect, useMemo, useRef, useState } from 'react'
+import { Mail } from 'lucide-react'
import { useLanguage } from '../i18n/LanguageProvider'
import { translations } from '../i18n/translations'
import LanguageToggle from './LanguageToggle'
import ReleaseChannelSelector, { ReleaseChannel } from './ReleaseChannelSelector'
import { getFeatureToggleInfo } from '@lib/featureToggles'
import { useUser } from '@lib/userStore'
-import { AskAIDialog } from './AskAIDialog'
+import SearchComponent from './search'
const CHANNEL_ORDER: ReleaseChannel[] = ['stable', 'beta', 'develop']
const DEFAULT_CHANNELS: ReleaseChannel[] = ['stable']
@@ -231,13 +231,8 @@ export default function Navbar() {
download: isChinese ? '下载' : 'Download',
openSource: isChinese ? '开源项目' : 'Open source',
moreServices: isChinese ? '更多服务' : 'More services',
- searchPlaceholder: isChinese ? '请输入关键字搜索内容' : 'Ask anything about your docs',
}
- const [searchValue, setSearchValue] = useState('')
- const [askDialogOpen, setAskDialogOpen] = useState(false)
- const [pendingQuestion, setPendingQuestion] = useState<{ key: number; text: string } | null>(null)
-
useEffect(() => {
if (typeof window === 'undefined') {
return
@@ -281,15 +276,6 @@ export default function Navbar() {
{ key: 'xscopehub', label: 'XScopeHub', href: '/xscopehub' },
]
- const handleSearchSubmit = (event: FormEvent) => {
- event.preventDefault()
- const trimmed = searchValue.trim()
- if (!trimmed) return
- setPendingQuestion({ key: Date.now(), text: trimmed })
- setAskDialogOpen(true)
- setSearchValue('')
- }
-
if (isHiddenRoute) {
return null
}
@@ -397,22 +383,7 @@ export default function Navbar() {
-
+
{user ? (