From cbf46710cc682b14cb1db8d7fc02ae11d9fefd91 Mon Sep 17 00:00:00 2001 From: MaxLee-dev Date: Thu, 3 Sep 2026 14:07:30 +0900 Subject: [PATCH 1/2] fix(website): restore docs search with fumadocs 16.15 upgrade MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 런타임 readFile 인덱스 대신 `createFromSource`를 써서 검색 인덱스가 Vercel 번들에 포함되도록 함 - fumadocs 16.15는 zbsearch multilingual 기반이라 한글 검색이 무설정으로 동작 — 직접 붙였던 Orama 의존성(`@orama/orama`, `@oramacloud/client`)과 커스텀 검색 다이얼로그 제거 - 16.15에서 깨진 base-ui API 대응: `isTabActive` → `isLayoutTabActive`(useTreePath 필요), 제거된 `useI18n`/`I18nLabel`은 영어 리터럴로 대체 --- apps/website/package.json | 6 +- apps/website/src/app/(home)/page.tsx | 9 +- apps/website/src/app/api/search/route.ts | 18 +- .../fumadocs/docs-layout-client.tsx | 11 +- .../components/fumadocs/docs-page-client.tsx | 10 +- .../src/components/fumadocs/docs-page.tsx | 5 +- .../src/components/fumadocs/search-toggle.tsx | 4 +- pnpm-lock.yaml | 779 +++++++++++------- 8 files changed, 489 insertions(+), 353 deletions(-) diff --git a/apps/website/package.json b/apps/website/package.json index 633344275..9b589fbe1 100644 --- a/apps/website/package.json +++ b/apps/website/package.json @@ -15,8 +15,6 @@ }, "dependencies": { "@base-ui/react": "^1.7.0", - "@orama/orama": "^3.1.18", - "@oramacloud/client": "^2.1.4", "@radix-ui/react-collapsible": "^1.1.20", "@radix-ui/react-dialog": "^1.1.23", "@radix-ui/react-radio-group": "^1.4.7", @@ -29,11 +27,11 @@ "@vercel/analytics": "^1.6.1", "clsx": "^2.1.1", "color-convert": "^3.1.3", - "fumadocs-core": "16.8.11", + "fumadocs-core": "16.15.5", "fumadocs-docgen": "3.0.10", "fumadocs-mdx": "14.3.2", "fumadocs-typescript": "5.2.6", - "fumadocs-ui": "npm:@fumadocs/base-ui@16.8.11", + "fumadocs-ui": "npm:@fumadocs/base-ui@16.15.5", "fuse.js": "^7.5.0", "lodash-es": "^4.18.1", "markdown-table": "^3.0.4", diff --git a/apps/website/src/app/(home)/page.tsx b/apps/website/src/app/(home)/page.tsx index 4da9f5a45..e5880122e 100644 --- a/apps/website/src/app/(home)/page.tsx +++ b/apps/website/src/app/(home)/page.tsx @@ -1,7 +1,5 @@ 'use client'; -import { useState } from 'react'; - import { Badge, Button, Text, useTheme } from '@vapor-ui/core'; import { AiSmartieIcon, @@ -10,6 +8,7 @@ import { SearchOutlineIcon, StarIcon, } from '@vapor-ui/icons'; +import { useSearchContext } from 'fumadocs-ui/contexts/search'; import Link from 'next/link'; import { ChromeWindow } from '~/components/chrome-window'; @@ -19,7 +18,6 @@ import { LocalTabsContent, LocalTabsList, } from '~/components/local-tabs/local-tabs'; -import DefaultSearchDialog from '~/components/search/search'; import { VAPOR_BANNER_URL } from '~/constants/image-urls'; import { CustomThemeProvider, useCustomTheme } from '~/providers'; @@ -159,7 +157,7 @@ const ThemeSection = () => { ); }; export default function HomePage() { - const [isSearchOpen, setIsSearchOpen] = useState(false); + const { setOpenSearch } = useSearchContext(); const { resolvedTheme } = useTheme(); return ( @@ -183,7 +181,6 @@ export default function HomePage() { : 'linear-gradient(180deg, rgba(35, 39, 46, 0.00) 0%, var(--vapor-color-canvas, #23272E) 100%)', }} /> -
@@ -237,7 +234,7 @@ export default function HomePage() {