Psyte es una solución entregada para buscar documentación, inspirada en DocSearch de Algolia.
Echa un vistazo a la documentación de la noción-enhancer para una demostración en vivo.

ADVERTENCIA: Psique se construye específicamente para buscar documentación. No está creado para la implementación en otras interfaces (por ejemplo, comercio electrónico) ni se usa con esquemas de datos personalizados.
El cliente psique requiere un índice de resultados previamente generado para la búsqueda. Esto debería ser una matriz de registros Result (ver tipos.d.ts). Los índices se proporcionan al cliente programáticamente, pero deben tomar la forma de un archivo .json sin formato/minificado.
Los indexadores son complementos/middleware que rastrean un sitio y generan un índice, ya sea durante un proceso de compilación o sobre la marcha si el sitio se sirve dinámicamente.
Los indexadores para algunos generadores de documentación se proporcionan a continuación. Si su generador de elección aún no es compatible, abra una solicitud de función o escriba la suya y abra una solicitud de extracción.
Agregue lo siguiente a su archivo _config.ts :
import psyche from 'https://deno.land/x/psyche/indexers/lume.ts' ;
site . use ( psyche ( ) ) ; El indexador se puede configurar proporcionando un objeto LumeConfig como el primer argumento de la llamada psyche() (ver tipos.d.ts).
Por defecto:
/search.json .data.section o donde data.draft = true será ignorado.data.section_order y ordenadas por data.order .data.title .data.section .<article></article> en una página se indexan de acuerdo con HTML semántico. Otros elementos (por ejemplo <blockquote></blockquote> ) se tratan como párrafos. Esto funciona mejor con la salida de Markdown.Lea los datos de la página y/o las páginas de datos compartidas de la documentación de Lume para ver cómo establecer estas propiedades.
El cliente psique está escrito en TypeScript. Puede importarlo directamente si los activos de su sitio serán agrupados por EG ESBuild, o importar la construcción de JavaScript pre-transpilado y minificado.
import psyche from 'https://deno.land/x/psyche/client/mod.ts' ;
// or
import psyche from 'https://deno.land/x/psyche/client/psyche.min.mjs' ; La exportación predeterminada psyche es una función que cuando se proporciona un objeto ClientConfig (ver tipos.d.ts) devolverá una ClientInstance (ver tipos.d.ts).
Llamar .register() en una instancia de cliente insertará el componente en el documento y escuchará las prensas de tecla de acceso rápido. El componente se puede abrir llamando .open() o presionando CTRL/⌘ + K .
P.ej
const searchInstance = psyche ( {
theme : { scrollbarStyle : 'square' } ,
index : await fetch ( '/search.json' ) . then ( ( res ) => res . json ( ) ) ,
} ) ;
searchInstance . register ( ) ;
searchInstance . open ( ) ; Para agregar una tecla caliente a la lista en el modal de búsqueda, agréguela a la matriz hotkeys del objeto ClientConfig de Psique (ver tipos.d.ts).
Para las teclas de acceso rápido dependientes de la plataforma, el platformModifier exportación nombrado será equivalente a la clave ⌘ en macOS o la tecla CTRL en otras plataformas.
Para manejar las teclas de acceso rápido, proporcione un objeto ClientHotkey (ver tipos.d.ts) al registerHotkey de exportación nombrado. Este es un KeyboardEvent parcial con algunas propiedades adicionales:
platformModifier es equivalente a metaKey en macOS o ctrlKey en otras plataformas.onkeydown se llamará cuando se presione la combinación de teclas hacia abajo, pase el KeyboardEvent Avenciado como su primer argumento.onkeyup se llamará cuando se lance la combinación de teclas, pase el KeyboardEvent Agrandado como su primer argumento.P.ej
import psyche , {
registerHotkey ,
platformModifier ,
} from 'https://deno.land/x/psyche/client/psyche.min.mjs' ;
registerHotkey ( {
key : 'l' ,
platformModifier : true ,
shiftKey : true ,
onkeydown : ( event ) => {
event . preventDefault ( ) ;
toggleTheme ( ) ;
} ,
} ) ;
const searchInstance = psyche ( {
hotkeys : [ { kbd : ` ${ platformModifier } + SHIFT + L` , label : 'to toggle theme' } ] ,
} ) ;
searchInstance . register ( ) ;Los cambios en este proyecto se registran en ChangeLog.
Este proyecto tiene licencia bajo la licencia MIT.
Para apoyar el desarrollo futuro de este proyecto, considere patrocinar al autor.