From 6d2d7466aa080d0334289bdad4656fca35cfed97 Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Wed, 5 Nov 2025 15:41:10 +0100 Subject: [PATCH 01/14] Extract Search and Flexsearch from Nextra --- package.json | 4 +- pnpm-lock.yaml | 6 + src/app/(main)/layout.tsx | 23 +++ src/app/not-found.tsx | 13 +- src/components/blog-page/index.tsx | 4 +- src/components/flexsearch.tsx | 277 +++++++++++++++++++++++++++ src/components/footer/index.tsx | 12 +- src/components/highlight-matches.tsx | 49 +++++ src/components/index-page/index.tsx | 1 + src/components/navbar/nav-link.tsx | 42 ++++ src/components/navbar/navbar.tsx | 99 ++++------ src/components/search.tsx | 234 ++++++++++++++++++++++ src/components/sidebar.tsx | 9 +- theme.config.tsx | 12 +- 14 files changed, 690 insertions(+), 95 deletions(-) create mode 100644 src/app/(main)/layout.tsx create mode 100644 src/components/flexsearch.tsx create mode 100644 src/components/highlight-matches.tsx create mode 100644 src/components/navbar/nav-link.tsx create mode 100644 src/components/search.tsx diff --git a/package.json b/package.json index 1e0cfb964e..87ca77c521 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "type": "module", "repository": "graphql/graphql.github.io website", "private": true, - "packageManager": "pnpm@10.16.1+sha512.0e155aa2629db8672b49e8475da6226aa4bdea85fdcdfdc15350874946d4f3c91faaf64cbdc4a5d1ab8002f473d5c3fcedcd197989cf0390f9badd3c04678706", + "packageManager": "pnpm@10.20.0+sha512.cf9998222162dd85864d0a8102e7892e7ba4ceadebbf5a31f9c2fce48dfce317a9c53b9f6464d1ef9042cba2e02ae02a9f7c143a2b438cd93c91840f0192b9dd", "scripts": { "analyze": "ANALYZE=true next build", "build": "next build", @@ -47,7 +47,9 @@ "clsx": "^2.1.1", "cm6-graphql": "^0.2.1", "date-fns": "^2.30.0", + "escape-string-regexp": "^5.0.0", "fast-glob": "^3.3.3", + "flexsearch": "0.7.43", "github-slugger": "2.0.0", "graphql": "16.10.0", "gray-matter": "^4.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c5c0cb0365..930cd8dc3a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -88,9 +88,15 @@ importers: date-fns: specifier: ^2.30.0 version: 2.30.0 + escape-string-regexp: + specifier: ^5.0.0 + version: 5.0.0 fast-glob: specifier: ^3.3.3 version: 3.3.3 + flexsearch: + specifier: 0.7.43 + version: 0.7.43 github-slugger: specifier: 2.0.0 version: 2.0.0 diff --git a/src/app/(main)/layout.tsx b/src/app/(main)/layout.tsx new file mode 100644 index 0000000000..5fe030e3b3 --- /dev/null +++ b/src/app/(main)/layout.tsx @@ -0,0 +1,23 @@ +// @ts-expect-error: we want to import the same version as Nextra for the main page +import { ThemeProvider } from "next-themes" + +import { Footer } from "../../components/footer" +import { Navbar } from "../../components/navbar/navbar" +import { NewFontsStyleTag } from "../fonts" + +export default function MainLayout({ + children, +}: { + children: React.ReactNode +}) { + return ( + <> + + + +
{children}
+