docs: added cloud documentation project (#12711)

This commit is contained in:
Shahed Nasser
2025-06-12 11:29:14 +03:00
committed by GitHub
parent bd6d9777c5
commit 8a88748982
85 changed files with 1463 additions and 19 deletions
+77
View File
@@ -0,0 +1,77 @@
"use client"
import {
AiAssistantProvider,
AnalyticsProvider,
ColorModeProvider,
HooksLoader,
LearningPathProvider,
MobileProvider,
ModalProvider,
NotificationProvider,
PaginationProvider,
ScrollControllerProvider,
SiteConfigProvider,
} from "docs-ui"
import SidebarProvider from "./sidebar"
import SearchProvider from "./search"
import { config } from "../config"
import { MainNavProvider } from "./main-nav"
type ProvidersProps = {
children?: React.ReactNode
}
const Providers = ({ children }: ProvidersProps) => {
return (
<AnalyticsProvider writeKey={process.env.NEXT_PUBLIC_SEGMENT_API_KEY}>
<SiteConfigProvider config={config}>
<MobileProvider>
<ColorModeProvider>
<ModalProvider>
<LearningPathProvider>
<NotificationProvider>
<ScrollControllerProvider scrollableSelector="#main">
<SidebarProvider>
<PaginationProvider>
<MainNavProvider>
<SearchProvider>
<AiAssistantProvider
apiUrl={
process.env.NEXT_PUBLIC_AI_ASSISTANT_URL ||
"temp"
}
websiteId={
process.env.NEXT_PUBLIC_AI_WEBSITE_ID || "temp"
}
recaptchaSiteKey={
// eslint-disable-next-line prettier/prettier, max-len
process.env.NEXT_PUBLIC_AI_API_ASSISTANT_RECAPTCHA_SITE_KEY ||
"temp"
}
>
<HooksLoader
options={{
pageScrollManager: true,
currentLearningPath: false,
}}
>
{children}
</HooksLoader>
</AiAssistantProvider>
</SearchProvider>
</MainNavProvider>
</PaginationProvider>
</SidebarProvider>
</ScrollControllerProvider>
</NotificationProvider>
</LearningPathProvider>
</ModalProvider>
</ColorModeProvider>
</MobileProvider>
</SiteConfigProvider>
</AnalyticsProvider>
)
}
export default Providers
+28
View File
@@ -0,0 +1,28 @@
"use client"
import {
getNavDropdownItems,
MainNavProvider as UiMainNavProvider,
} from "docs-ui"
import { useMemo } from "react"
import { config } from "../config"
type MainNavProviderProps = {
children?: React.ReactNode
}
export const MainNavProvider = ({ children }: MainNavProviderProps) => {
const navigationDropdownItems = useMemo(
() =>
getNavDropdownItems({
basePath: config.baseUrl,
}),
[]
)
return (
<UiMainNavProvider navItems={navigationDropdownItems}>
{children}
</UiMainNavProvider>
)
}
+52
View File
@@ -0,0 +1,52 @@
"use client"
import { SearchProvider as UiSearchProvider } from "docs-ui"
import { config } from "../config"
type SearchProviderProps = {
children: React.ReactNode
}
const SearchProvider = ({ children }: SearchProviderProps) => {
return (
<UiSearchProvider
algolia={{
appId: process.env.NEXT_PUBLIC_ALGOLIA_APP_ID || "temp",
apiKey: process.env.NEXT_PUBLIC_ALGOLIA_API_KEY || "temp",
mainIndexName:
process.env.NEXT_PUBLIC_DOCS_ALGOLIA_INDEX_NAME || "temp",
}}
indices={[
{
value: process.env.NEXT_PUBLIC_DOCS_ALGOLIA_INDEX_NAME || "temp",
title: "Docs",
},
{
value: process.env.NEXT_PUBLIC_API_ALGOLIA_INDEX_NAME || "temp",
title: "Store & Admin API",
},
]}
defaultIndex={process.env.NEXT_PUBLIC_DOCS_ALGOLIA_INDEX_NAME || "temp"}
searchProps={{
isLoading: false,
suggestions: [
{
title: "Search Suggestions",
items: [
// TODO: Add more suggestions
"Manage Organizations",
"Create Project",
"Manage Environments",
"View Logs",
],
},
],
checkInternalPattern: new RegExp(`^${config.baseUrl}/cloud`),
}}
>
{children}
</UiSearchProvider>
)
}
export default SearchProvider
+25
View File
@@ -0,0 +1,25 @@
"use client"
import {
SidebarProvider as UiSidebarProvider,
useScrollController,
} from "docs-ui"
import { config } from "@/config"
type SidebarProviderProps = {
children?: React.ReactNode
}
const SidebarProvider = ({ children }: SidebarProviderProps) => {
const { scrollableElement } = useScrollController()
return (
<UiSidebarProvider
scrollableElement={scrollableElement}
sidebars={config.sidebars}
>
{children}
</UiSidebarProvider>
)
}
export default SidebarProvider