docs: create docs workspace (#5174)
* docs: migrate ui docs to docs universe * created yarn workspace * added eslint and tsconfig configurations * fix eslint configurations * fixed eslint configurations * shared tailwind configurations * added shared ui package * added more shared components * migrating more components * made details components shared * move InlineCode component * moved InputText * moved Loading component * Moved Modal component * moved Select components * Moved Tooltip component * moved Search components * moved ColorMode provider * Moved Notification components and providers * used icons package * use UI colors in api-reference * moved Navbar component * used Navbar and Search in UI docs * added Feedback to UI docs * general enhancements * fix color mode * added copy colors file from ui-preset * added features and enhancements to UI docs * move Sidebar component and provider * general fixes and preparations for deployment * update docusaurus version * adjusted versions * fix output directory * remove rootDirectory property * fix yarn.lock * moved code component * added vale for all docs MD and MDX * fix tests * fix vale error * fix deployment errors * change ignore commands * add output directory * fix docs test * general fixes * content fixes * fix announcement script * added changeset * fix vale checks * added nofilter option * fix vale error
This commit is contained in:
71
www/apps/docs/src/providers/Search/index.tsx
Normal file
71
www/apps/docs/src/providers/Search/index.tsx
Normal file
@@ -0,0 +1,71 @@
|
||||
import React, { useEffect, useState } from "react"
|
||||
import { SearchProvider as UiSearchProvider, checkArraySameElms } from "docs-ui"
|
||||
import { ThemeConfig } from "@medusajs/docs"
|
||||
import { useThemeConfig } from "@docusaurus/theme-common"
|
||||
import { useLocalPathname } from "@docusaurus/theme-common/internal"
|
||||
|
||||
type SearchProviderProps = {
|
||||
children: React.ReactNode
|
||||
}
|
||||
|
||||
const SearchProvider = ({ children }: SearchProviderProps) => {
|
||||
const [defaultFilters, setDefaultFilters] = useState<string[]>([])
|
||||
const { algoliaConfig: algolia } = useThemeConfig() as ThemeConfig
|
||||
const currentPath = useLocalPathname()
|
||||
|
||||
useEffect(() => {
|
||||
let resultFilters = []
|
||||
algolia.defaultFiltersByPath.some((filtersByPath) => {
|
||||
if (currentPath.startsWith(filtersByPath.path)) {
|
||||
resultFilters = filtersByPath.filters
|
||||
}
|
||||
})
|
||||
if (!resultFilters.length && algolia.defaultFilters) {
|
||||
resultFilters = algolia.defaultFilters
|
||||
}
|
||||
if (!checkArraySameElms(defaultFilters, resultFilters)) {
|
||||
setDefaultFilters(resultFilters)
|
||||
}
|
||||
}, [currentPath])
|
||||
|
||||
return (
|
||||
<UiSearchProvider
|
||||
algolia={{
|
||||
appId: algolia.appId,
|
||||
apiKey: algolia.apiKey,
|
||||
mainIndexName: algolia.indexNames.docs,
|
||||
indices: Object.values(algolia.indexNames),
|
||||
}}
|
||||
searchProps={{
|
||||
filterOptions: algolia.filters,
|
||||
suggestions: [
|
||||
{
|
||||
title: "Getting started? Try one of the following terms.",
|
||||
items: [
|
||||
"Install Medusa with create-medusa-app",
|
||||
"Next.js quickstart",
|
||||
"Admin dashboard quickstart",
|
||||
"Commerce modules",
|
||||
"Medusa architecture",
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Developing with Medusa",
|
||||
items: [
|
||||
"Recipes",
|
||||
"How to create endpoints",
|
||||
"How to create an entity",
|
||||
"How to create a plugin",
|
||||
"How to create an admin widget",
|
||||
],
|
||||
},
|
||||
],
|
||||
}}
|
||||
initialDefaultFilters={defaultFilters}
|
||||
>
|
||||
{children}
|
||||
</UiSearchProvider>
|
||||
)
|
||||
}
|
||||
|
||||
export default SearchProvider
|
||||
Reference in New Issue
Block a user