UNPKG

next-static-search

Version:

A powerful react search based on pagefind with beautiful UI

116 lines (84 loc) 3.09 kB
# 🔎 Next Static Search Based on Pagefind A lightweight, zero-config search solution for Next.js static sites, built on top of Pagefind. Easily integrate full-text, client-side search into your statically generated Next.js website without relying on external services. ![npm version](https://img.shields.io/npm/v/next-static-search.svg) ![package size minified](https://img.shields.io/bundlephobia/min/next-static-search?style=plastic) [![](https://data.jsdelivr.com/v1/package/npm/next-static-search/badge)](https://www.jsdelivr.com/package/npm/next-static-search) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com) ![total downloads](https://img.shields.io/npm/dt/next-static-search.svg) ![total downloads per year](https://img.shields.io/npm/dy/next-static-search.svg) ![total downloads per week](https://img.shields.io/npm/dw/next-static-search.svg) ![total downloads per month](https://img.shields.io/npm/dm/next-static-search.svg) [download-image]: https://img.shields.io/npm/dm/next-static-search.svg [download-url]: https://npmjs.org/package/next-static-search [![next-static-search](https://nodei.co/npm/next-static-search.png)](https://npmjs.org/package/next-static-search) ## 📦 Installation ```bash npm i next-static-search yarn add next-static-search pnpm i next-static-search bun add next-static-search ``` ## ⚙️ Demo Access Demo at: [Demo](https://next-static-search.vercel.app/) ## 🔍 Features - 🔧 Plug-and-play integration with static Next.js sites (SSG/ISR compatible) - ⚡ Blazing fast search powered by Pagefind - 🧠 Prebuilt search index with zero runtime cost - 🎯 Works out-of-the-box with Next.js export and static hosting ## 🧑‍💻 Usage Install pagefind as a dev dependency: ```bash npm i pagefind --save-dev yarn add pagefind -D pnpm i pagefind --save-dev bun add pagefind --save-dev ``` Add following command to your package.json as `next-static-search` rely on files generated by pagefind. ```json // package.json { // ... "scripts": { "postbuild": "pagefind --site .next --output-path .next/static/pagefind" } // ... } ``` Import the component where you want this search: ```jsx import { NextStaticSearch } from "next-static-search"; import "./globals.css"; import "next-static-search/dist/index.css"; export default function RootLayout({ children, }: Readonly<{ children: React.ReactNode, }>) { return ( <html lang="en"> <body> <header> <NextStaticSearch /> </header> {children} </body> </html> ); } ``` ## 🔧 Config object structure ```ts interface INextStaticSearch { placeholder?: string; searchClassName?: string; macSymbol?: React.JSX.Element | string; windowsSymbol?: React.JSX.Element | string; searchBoxTitle?: string; errorMessage?: string; notFoundMessage?: string; searchBoxType: "modal" | "inline"; } ``` ## 🧑‍🎓 Credits Developed with ❤️ by **[Farasat Ali](https://github.com/faraasat)** Feedback and contributions welcome!