@unterberg/nivel 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-4XQN7OBV.js → chunk-FNOA7AFJ.js} +3 -3
- package/dist/{chunk-G7DN5RH7.js → chunk-HU6EVSHN.js} +3 -2
- package/dist/chunk-HU6EVSHN.js.map +1 -0
- package/dist/{chunk-CL74JUQ4.js → chunk-NDJ5LYLK.js} +7 -1
- package/dist/chunk-NDJ5LYLK.js.map +1 -0
- package/dist/{chunk-XTBGSCAZ.js → chunk-OJDNRGFP.js} +2 -2
- package/dist/{chunk-DSQGGUBC.js → chunk-RJMKSYUK.js} +396 -242
- package/dist/chunk-RJMKSYUK.js.map +1 -0
- package/dist/cli.js +2 -2
- package/dist/client.d.ts +18 -2
- package/dist/client.js +6 -2
- package/dist/config.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/mdx.js +2 -2
- package/dist/runtime/client.d.ts +2 -2
- package/dist/runtime/client.js +6 -2
- package/dist/runtime/node.d.ts +1 -1
- package/dist/runtime/node.js +3 -3
- package/dist/{types-Dj-zbZbD.d.ts → types-BGAec0JI.d.ts} +11 -1
- package/dist/vike.d.ts +1 -1
- package/dist/vike.js +3 -3
- package/package.json +2 -2
- package/dist/chunk-CL74JUQ4.js.map +0 -1
- package/dist/chunk-DSQGGUBC.js.map +0 -1
- package/dist/chunk-G7DN5RH7.js.map +0 -1
- /package/dist/{chunk-4XQN7OBV.js.map → chunk-FNOA7AFJ.js.map} +0 -0
- /package/dist/{chunk-XTBGSCAZ.js.map → chunk-OJDNRGFP.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/shared/assets.ts","../src/docs/resolveDocsConfig.ts"],"sourcesContent":["const normalizeSiteBasePath = (value: string | undefined) => {\n const normalized = value?.trim().replace(/^\\/+|\\/+$/g, '') ?? ''\n return normalized ? `/${normalized}/` : '/'\n}\n\nconst importMetaEnv = (import.meta as ImportMeta & { env?: { BASE_URL?: string } }).env\n\nconst siteBasePath = normalizeSiteBasePath(importMetaEnv?.BASE_URL ?? process.env.PAGES_BASE_PATH)\n\nconst isExternalUrl = (value: string) => value.startsWith('//') || /^[a-z][a-z\\d+.-]*:/i.test(value)\n\nconst prependSiteBaseUrl = (value: string) => {\n if (value === '' || value.startsWith('#') || isExternalUrl(value)) {\n return value\n }\n\n const pathname = value.startsWith('/') ? value : `/${value.replace(/^\\/+/, '')}`\n return siteBasePath === '/' ? pathname : `${siteBasePath.slice(0, -1)}${pathname}`\n}\n\nexport const withSiteBaseUrl = (value: string) => {\n if (value === '' || value.startsWith('#') || isExternalUrl(value)) {\n return value\n }\n\n if (!value.startsWith('/')) {\n return value\n }\n\n if (siteBasePath !== '/' && (value === siteBasePath.slice(0, -1) || value.startsWith(siteBasePath))) {\n return value\n }\n\n return siteBasePath === '/' ? value : `${siteBasePath.slice(0, -1)}${value}`\n}\n\nexport const resolvePublicAssetUrl = (value: string | undefined) => {\n if (!value) {\n return undefined\n }\n\n if (value.startsWith('#') || isExternalUrl(value)) {\n return value\n }\n\n const pathname = value.startsWith('/') ? value : `/${value.replace(/^\\/+/, '')}`\n return withSiteBaseUrl(pathname)\n}\n\nexport const nivelPublicRoute = '/nivel'\n\n// Engine-owned assets always live under the site base, even if the public route\n// happens to match the repository base path on GitHub Pages.\nexport const baseAssets = `${prependSiteBaseUrl(nivelPublicRoute).replace(/\\/?$/, '/')}`\n\nexport const nivelAssetUrl = (assetPath: string) => `${baseAssets}${assetPath.replace(/^\\/+/, '')}`\n","import { nivelAssetUrl, resolvePublicAssetUrl, withSiteBaseUrl } from '../shared/assets.js'\nimport type {\n DocsAlgoliaConfig,\n DocsBrandConfig,\n DocsConfig,\n DocsFooterConfig,\n DocsHeadConfig,\n DocsPartnerConfig,\n DocsPageNode,\n DocsSectionNode,\n DocsSidebarNode,\n ResolvedDocsAlgoliaConfig,\n ResolvedDocsBrandConfig,\n ResolvedDocsConfig,\n ResolvedDocsPartnerConfig,\n ResolvedDocsPage,\n ResolvedDocsPartnersConfig,\n ResolvedDocsSection,\n ResolvedNavbarItem,\n ResolvedSidebarNode,\n ThemePreference,\n} from './types.js'\n\nexport const isExternalHref = (value: string) => {\n return /^(?:[a-z]+:)?\\/\\//i.test(value) || value.startsWith('mailto:') || value.startsWith('tel:')\n}\n\nconst normalizeBasePath = (value: string) => {\n const normalized = value.trim()\n\n if (!normalized) {\n throw new Error('Docs basePath must be a non-empty absolute path.')\n }\n\n if (!normalized.startsWith('/') || normalized.startsWith('//')) {\n throw new Error(`Docs basePath must start with \"/\". Received ${JSON.stringify(value)}.`)\n }\n\n if (normalized.includes('?') || normalized.includes('#')) {\n throw new Error(`Docs basePath cannot include query strings or hashes. Received ${JSON.stringify(value)}.`)\n }\n\n const collapsed = normalized.replace(/\\/+/g, '/').replace(/\\/+$/g, '')\n return collapsed === '' ? '/' : collapsed\n}\n\nconst normalizeContentDir = (value: string | undefined) => {\n const normalized = (value ?? 'docs').trim()\n\n if (!normalized) {\n throw new Error('Docs contentDir must be a non-empty project-relative path.')\n }\n\n if (normalized.startsWith('/') || normalized.startsWith('\\\\')) {\n throw new Error(`Docs contentDir must be project-relative. Received ${JSON.stringify(value)}.`)\n }\n\n if (/^[a-zA-Z]:[\\\\/]/.test(normalized)) {\n throw new Error(`Docs contentDir must be project-relative. Received ${JSON.stringify(value)}.`)\n }\n\n const segments = normalized.replaceAll('\\\\', '/').split('/')\n const resolvedSegments: string[] = []\n\n for (const segment of segments) {\n if (segment === '' || segment === '.') {\n continue\n }\n\n if (segment === '..') {\n throw new Error(`Docs contentDir cannot escape the project root. Received ${JSON.stringify(value)}.`)\n }\n\n resolvedSegments.push(segment)\n }\n\n if (resolvedSegments.length === 0) {\n throw new Error(`Docs contentDir must contain at least one path segment. Received ${JSON.stringify(value)}.`)\n }\n\n return resolvedSegments.join('/')\n}\n\nconst normalizeSlug = (value: string) => value.replace(/^\\/+|\\/+$/g, '')\n\nconst joinDocsHref = (basePath: string, slug: string) => {\n const normalizedBasePath = normalizeBasePath(basePath)\n const normalizedSlug = normalizeSlug(slug)\n\n if (!normalizedSlug) {\n return normalizedBasePath === '/' ? '/' : `${normalizedBasePath}/`\n }\n\n return normalizedBasePath === '/' ? `/${normalizedSlug}/` : `${normalizedBasePath}/${normalizedSlug}/`\n}\n\nconst normalizePathname = (value: string) => {\n const pathname = value.split('?')[0]?.split('#')[0] ?? value\n const normalized = pathname.trim().replace(/\\/+$/g, '')\n return normalized === '' ? '/' : `${normalized}/`.replace(/\\/+/g, '/')\n}\n\nexport const resolveDocsHref = (basePath: string, href: string) => {\n const normalized = href.trim()\n\n if (!normalized || normalized.startsWith('#') || isExternalHref(normalized)) {\n return null\n }\n\n const pathname = normalized.split('?')[0]?.split('#')[0] ?? normalized\n\n if (!pathname) {\n return null\n }\n\n if (pathname.startsWith('/')) {\n const normalizedPathname = normalizePathname(pathname)\n const normalizedBasePath = normalizeBasePath(basePath)\n\n if (normalizedBasePath === '/') {\n return normalizedPathname\n }\n\n return normalizedPathname === `${normalizedBasePath}/` || normalizedPathname.startsWith(`${normalizedBasePath}/`)\n ? normalizedPathname\n : null\n }\n\n if (pathname.startsWith('./') || pathname.startsWith('../')) {\n return null\n }\n\n return joinDocsHref(basePath, pathname)\n}\n\nconst normalizeSourcePath = (value: string) => {\n const segments = value.replaceAll('\\\\', '/').split('/')\n const normalizedSegments: string[] = []\n\n for (const segment of segments) {\n if (segment === '' || segment === '.') {\n continue\n }\n\n if (segment === '..') {\n normalizedSegments.pop()\n continue\n }\n\n normalizedSegments.push(segment)\n }\n\n return normalizedSegments.join('/')\n}\n\nconst getSectionHref = (items: ResolvedSidebarNode[], visibleOnly = false): string | null => {\n for (const item of items) {\n if (item.kind === 'page') {\n if (visibleOnly && !item.showInNav) {\n continue\n }\n\n return item.href\n }\n\n if (item.kind === 'group') {\n if (visibleOnly && !item.showInNav) {\n continue\n }\n\n const href = getSectionHref(item.items, visibleOnly)\n if (href) {\n return href\n }\n }\n }\n\n return null\n}\n\nconst resolveNavigationHref = (value: string, fieldName: string, basePath: string) => {\n const normalized = value.trim()\n\n if (!normalized) {\n throw new Error(`Docs ${fieldName} must be a non-empty string.`)\n }\n\n if (normalized.startsWith('#') || isExternalHref(normalized)) {\n return normalized\n }\n\n if (!normalized.startsWith('/')) {\n return joinDocsHref(basePath, normalized)\n }\n\n return normalizePathname(normalized)\n}\n\nconst resolveThemeConfig = (theme: DocsConfig['theme']) => {\n return {\n light: theme?.light ?? 'consumer-light',\n dark: theme?.dark ?? 'consumer-dark',\n defaultPreference: (theme?.defaultPreference ?? 'light') as ThemePreference,\n }\n}\n\nconst resolveFooterConfig = (footer: DocsFooterConfig | undefined) => {\n return {\n pagination: footer?.pagination ?? false,\n }\n}\n\nconst resolveBrandConfig = (brand: DocsBrandConfig | undefined, siteTitle: string): ResolvedDocsBrandConfig => {\n const text = brand?.text ?? siteTitle\n\n return {\n text,\n href: withSiteBaseUrl(brand?.href ?? '/'),\n logoLight: resolvePublicAssetUrl(brand?.logoLight),\n logoDark: resolvePublicAssetUrl(brand?.logoDark),\n logoAlt: brand?.logoAlt ?? `${text} logo`,\n }\n}\n\nconst resolveHeadConfig = (head: DocsHeadConfig | undefined) => {\n const fontPreset = head?.fontPreset ?? 'inter'\n const defaultFontStylesheetHref = fontPreset === 'inter' ? nivelAssetUrl('fonts/fonts-inter.css') : undefined\n const defaultFontPreloadHrefs =\n fontPreset === 'inter'\n ? [\n nivelAssetUrl('fonts/inter-v20-latin-regular.woff2'),\n nivelAssetUrl('fonts/inter-v20-latin-600.woff2'),\n nivelAssetUrl('fonts/inter-v20-latin-800.woff2'),\n ]\n : []\n\n return {\n faviconSvg: resolvePublicAssetUrl(head?.faviconSvg),\n faviconIco: resolvePublicAssetUrl(head?.faviconIco),\n appleTouchIcon: resolvePublicAssetUrl(head?.appleTouchIcon),\n fontPreset,\n fontStylesheetHref: head?.fontStylesheetHref ?? defaultFontStylesheetHref,\n fontPreloadHrefs: head?.fontPreloadHrefs ?? defaultFontPreloadHrefs,\n }\n}\n\nconst resolvePartnerAssetUrl = (value: string | undefined) => {\n if (!value) {\n return undefined\n }\n\n return resolvePublicAssetUrl(value)\n}\n\nconst resolvePartner = (partner: DocsPartnerConfig): ResolvedDocsPartnerConfig => {\n return {\n name: partner.name,\n href: withSiteBaseUrl(partner.href),\n logoLight: resolvePartnerAssetUrl(partner.logoLight) ?? partner.logoLight,\n logoDark: resolvePartnerAssetUrl(partner.logoDark),\n logoAlt: partner.logoAlt ?? `${partner.name} logo`,\n }\n}\n\nconst resolvePartnersConfig = (partners: DocsConfig['partners']): ResolvedDocsPartnersConfig => {\n return {\n primary: (partners?.primary ?? []).map(resolvePartner),\n gold: (partners?.gold ?? []).map(resolvePartner),\n }\n}\n\nconst requireTrimmedString = (value: string, fieldName: string) => {\n const normalized = value.trim()\n\n if (!normalized) {\n throw new Error(`Docs algolia config \"${fieldName}\" must be a non-empty string.`)\n }\n\n return normalized\n}\n\nconst resolveAlgoliaConfig = (algolia: DocsAlgoliaConfig | undefined): ResolvedDocsAlgoliaConfig | null => {\n if (!algolia) {\n return null\n }\n\n return {\n appId: requireTrimmedString(algolia.appId, 'appId'),\n apiKey: requireTrimmedString(algolia.apiKey, 'apiKey'),\n indexName: requireTrimmedString(algolia.indexName, 'indexName'),\n fields: {\n href: algolia.fields?.href?.trim() || 'href',\n title: algolia.fields?.title?.trim() || 'title',\n excerpt: algolia.fields?.excerpt?.trim() || 'excerpt',\n sectionTitle: algolia.fields?.sectionTitle?.trim() || 'sectionTitle',\n },\n searchParams: algolia.searchParams ?? {},\n }\n}\n\nconst normalizeAliases = (aliases: string[] | undefined, slug: string) => {\n const normalizedAliases = new Set<string>()\n\n for (const alias of aliases ?? []) {\n const normalizedAlias = normalizeSlug(alias)\n if (!normalizedAlias || normalizedAlias === slug) {\n continue\n }\n\n normalizedAliases.add(normalizedAlias)\n }\n\n return [...normalizedAliases]\n}\n\nexport const resolveDocsConfig = (config: DocsConfig): ResolvedDocsConfig => {\n const normalizedBasePath = normalizeBasePath(config.basePath)\n const normalizedContentDir = normalizeContentDir(config.contentDir)\n\n const pageIds = new Set<string>()\n const pageSlugs = new Set<string>()\n const pageAliases = new Set<string>()\n const groupIds = new Set<string>()\n const sectionIds = new Set<string>()\n const pages: ResolvedDocsPage[] = []\n const navbarItems: ResolvedNavbarItem[] = []\n\n const resolveSidebarNodes = (nodes: DocsSidebarNode[], sectionId: string): ResolvedSidebarNode[] => {\n return nodes.map((node) => {\n if (node.kind === 'group') {\n if (groupIds.has(node.id)) {\n throw new Error(`Duplicate docs group id \"${node.id}\".`)\n }\n\n groupIds.add(node.id)\n\n return {\n kind: 'group',\n id: node.id,\n title: node.title,\n href: node.href ? resolveNavigationHref(node.href, `group \"${node.id}\" href`, normalizedBasePath) : undefined,\n showInNav: node.showInNav ?? true,\n collapsible: node.collapsible,\n items: resolveSidebarNodes(node.items, sectionId),\n }\n }\n\n if (node.kind !== 'page') {\n throw new Error(`Invalid docs sidebar node: ${JSON.stringify(node)}`)\n }\n\n const pageNode = node as DocsPageNode\n const slug = normalizeSlug(pageNode.slug)\n const aliases = normalizeAliases(pageNode.aliases, slug)\n\n if (!slug) {\n throw new Error(`Docs page \"${pageNode.id}\" must define a non-empty slug.`)\n }\n\n if (pageIds.has(pageNode.id)) {\n throw new Error(`Duplicate docs page id \"${pageNode.id}\".`)\n }\n\n if (pageSlugs.has(slug)) {\n throw new Error(`Duplicate docs page slug \"${slug}\".`)\n }\n\n for (const alias of aliases) {\n if (pageSlugs.has(alias) || pageAliases.has(alias)) {\n throw new Error(`Duplicate docs page alias \"${alias}\".`)\n }\n }\n\n pageIds.add(pageNode.id)\n pageSlugs.add(slug)\n for (const alias of aliases) {\n pageAliases.add(alias)\n }\n\n const href = joinDocsHref(normalizedBasePath, slug)\n const page: ResolvedDocsPage = {\n ...pageNode,\n slug,\n aliases,\n href,\n aliasHrefs: aliases.map((alias) => joinDocsHref(normalizedBasePath, alias)),\n tableOfContents: pageNode.tableOfContents ?? true,\n sectionId,\n documentTitle: `${pageNode.title} | ${config.siteTitle}`,\n source: normalizeSourcePath(pageNode.source),\n }\n pages.push(page)\n\n return {\n kind: 'page',\n id: pageNode.id,\n title: pageNode.title,\n navTitle: pageNode.navTitle ?? pageNode.title,\n href,\n showInNav: pageNode.showInNav ?? true,\n }\n })\n }\n\n const sections: ResolvedDocsSection[] = config.graph.items.map((section: DocsSectionNode) => {\n if (section.kind !== 'section') {\n throw new Error(`Top-level docs graph items must be sections. Received ${JSON.stringify(section)}`)\n }\n\n if (sectionIds.has(section.id)) {\n throw new Error(`Duplicate docs section id \"${section.id}\".`)\n }\n\n sectionIds.add(section.id)\n\n const items = resolveSidebarNodes(section.items, section.id)\n const firstVisibleHref = getSectionHref(items, true)\n const href = section.href\n ? resolveNavigationHref(section.href, `section \"${section.id}\" href`, normalizedBasePath)\n : (firstVisibleHref ?? getSectionHref(items))\n\n if (!href) {\n throw new Error(`Docs section \"${section.id}\" must contain at least one page.`)\n }\n\n const resolvedSection: ResolvedDocsSection = {\n id: section.id,\n title: section.title,\n navTitle: section.navTitle ?? section.title,\n href,\n items,\n }\n\n navbarItems.push({\n id: section.id,\n title: resolvedSection.navTitle,\n href: resolvedSection.href,\n })\n\n return resolvedSection\n })\n\n if (pages.length === 0) {\n throw new Error('Docs graph must contain at least one page.')\n }\n\n return {\n siteTitle: config.siteTitle,\n siteDescription: config.siteDescription ?? null,\n basePath: normalizedBasePath,\n contentDir: normalizedContentDir,\n theme: resolveThemeConfig(config.theme),\n footer: resolveFooterConfig(config.footer),\n brand: resolveBrandConfig(config.brand, config.siteTitle),\n head: resolveHeadConfig(config.head),\n partners: resolvePartnersConfig(config.partners),\n algolia: resolveAlgoliaConfig(config.algolia),\n pages,\n sections,\n navbarItems,\n }\n}\n\nexport const getResolvedPageById = (config: { pages: ResolvedDocsPage[] }, pageId: string) => {\n const page = config.pages.find((candidate) => candidate.id === pageId)\n if (!page) {\n throw new Error(`Unknown docs page id \"${pageId}\".`)\n }\n return page\n}\n\nexport const getResolvedSectionById = (\n config: { sections?: ResolvedDocsSection[]; sidebarSections?: ResolvedDocsSection[] },\n sectionId: string,\n) => {\n const sections = config.sections ?? config.sidebarSections ?? []\n return sections.find((section) => section.id === sectionId) ?? null\n}\n\nexport const getResolvedPageByPathname = (config: { pages: ResolvedDocsPage[] }, pathname: string) => {\n const normalizedPathname = normalizePathname(pathname)\n\n return (\n config.pages.find((page) => {\n if (normalizePathname(page.href) === normalizedPathname) {\n return true\n }\n\n return page.aliasHrefs.some((aliasHref) => normalizePathname(aliasHref) === normalizedPathname)\n }) ?? null\n )\n}\n\nexport const getActiveSectionByPathname = (\n config: { pages: ResolvedDocsPage[]; sections?: ResolvedDocsSection[]; sidebarSections?: ResolvedDocsSection[] },\n pathname: string,\n) => {\n const activePage = getResolvedPageByPathname(config, pathname)\n\n if (!activePage) {\n return null\n }\n\n return getResolvedSectionById(config, activePage.sectionId)\n}\n\nexport const isSamePagePathname = (page: Pick<ResolvedDocsPage, 'href' | 'aliasHrefs'>, pathname: string) => {\n const normalizedPathname = normalizePathname(pathname)\n\n if (normalizePathname(page.href) === normalizedPathname) {\n return true\n }\n\n return page.aliasHrefs.some((aliasHref) => normalizePathname(aliasHref) === normalizedPathname)\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/runtime/client/AppLayout.tsx","../src/runtime/client/components/Navbar/index.tsx","../src/runtime/client/docsGlobalContext.ts","../src/runtime/client/components/Brand.tsx","../src/runtime/client/components/LayoutComponent.tsx","../src/runtime/client/components/Search.tsx","../src/runtime/client/search.ts","../src/runtime/client/components/ThemeSwitch.tsx","../src/runtime/client/store/settings-store.ts","../src/runtime/client/store/settings-storage.ts","../src/runtime/client/theme.ts","../src/runtime/client/components/Navbar/MegaMenu/index.tsx","../src/runtime/client/components/Navbar/useNavbarScroll.ts","../src/runtime/client/components/UserSettingsSync.tsx","../src/runtime/client/components/MetaHead/FaviconLinks.tsx","../src/runtime/client/components/MetaHead/FontLinks.tsx","../src/runtime/client/components/MetaHead/ThemeBootstrap.tsx","../src/runtime/client/components/MetaHead/index.tsx","../src/runtime/client/components/ProseContainer.tsx","../src/runtime/client/DocsPage.tsx","../src/runtime/client/components/DocsPagination.tsx","../src/runtime/client/components/Footer.tsx","../src/runtime/client/components/Sidebar.tsx","../src/runtime/client/components/docsNavigation.ts","../src/runtime/client/components/TableOfContents.tsx","../src/runtime/client/getMdxRuntimeValue.tsx"],"sourcesContent":["import { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport type { ReactNode } from 'react'\nimport { useState } from 'react'\nimport { usePageContext } from 'vike-react/usePageContext'\nimport { Navbar } from './components/Navbar/index.js'\nimport { UserSettingsSync } from './components/UserSettingsSync.js'\nimport { getDocsGlobalContext } from './docsGlobalContext.js'\n\ninterface AppLayoutProps {\n children: ReactNode\n}\n\nexport const AppLayout = ({ children }: AppLayoutProps) => {\n const pageContext = usePageContext()\n const docs = getDocsGlobalContext(pageContext as Parameters<typeof getDocsGlobalContext>[0])\n\n const [queryClient] = useState(() => new QueryClient())\n\n return (\n // todo: we should try vike-react-query instead\n <QueryClientProvider client={queryClient}>\n <UserSettingsSync theme={docs.theme} />\n <div className=\"min-h-screen bg-base-100 text-base-content\">\n <Navbar\n brand={docs.brand}\n algolia={docs.algolia}\n navbarItems={docs.navbarItems}\n sections={docs.sidebarSections}\n theme={docs.theme}\n />\n <div className=\"pt-16\">{children}</div>\n </div>\n </QueryClientProvider>\n )\n}\n","import cm, { cmMerge } from '@classmatejs/react'\nimport { ChevronDown } from 'lucide-react'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { usePageContext } from 'vike-react/usePageContext'\nimport { getActiveSectionByPathname } from '../../../../docs/resolveDocsConfig.js'\nimport type {\n DocsThemeConfig,\n ResolvedDocsAlgoliaConfig,\n ResolvedDocsBrandConfig,\n ResolvedDocsSection,\n ResolvedNavbarItem,\n} from '../../../../docs/types.js'\nimport { withSiteBaseUrl } from '../../../../shared/assets.js'\nimport { renderInlineMarkdown } from '../../../../shared/renderInlineMarkdown.js'\nimport { getDocsGlobalContext } from '../../docsGlobalContext.js'\nimport { Brand } from '../Brand.js'\nimport { LayoutComponent } from '../LayoutComponent.js'\nimport { Search } from '../Search.js'\nimport { ThemeSwitch } from '../ThemeSwitch.js'\nimport { MegaMenu } from './MegaMenu/index.js'\nimport { useNavbarScroll } from './useNavbarScroll.js'\n\ninterface NavbarProps {\n brand: ResolvedDocsBrandConfig\n algolia: ResolvedDocsAlgoliaConfig | null\n navbarItems: ResolvedNavbarItem[]\n theme: Required<DocsThemeConfig>\n sections: ResolvedDocsSection[]\n}\n\nexport const Navbar = ({ brand, algolia, navbarItems, theme, sections }: NavbarProps) => {\n const { urlPathname } = usePageContext()\n const isLandingPage = urlPathname === '/'\n const { isLandingPageScrolled } = useNavbarScroll(isLandingPage)\n const [isMegaMenuOpen, setIsMegaMenuOpen] = useState(false)\n const megaMenuCloseTimeoutRef = useRef<number | null>(null)\n const pageContext = usePageContext()\n const docs = getDocsGlobalContext(pageContext as Parameters<typeof getDocsGlobalContext>[0])\n const activeSection = getActiveSectionByPathname(docs, pageContext.urlPathname)\n const [hoveredSectionId, setHoveredSectionId] = useState<string | undefined>(activeSection?.id ?? sections[0]?.id)\n\n const showChrome = useMemo(\n () => !isLandingPage || isLandingPageScrolled || !isMegaMenuOpen,\n [isLandingPage, isLandingPageScrolled, isMegaMenuOpen],\n )\n\n const clearMegaMenuCloseTimeout = useCallback(() => {\n if (megaMenuCloseTimeoutRef.current === null) {\n return\n }\n\n window.clearTimeout(megaMenuCloseTimeoutRef.current)\n megaMenuCloseTimeoutRef.current = null\n }, [])\n\n const openMegaMenu = (currentSectionId?: string) => {\n if (currentSectionId !== undefined) {\n setHoveredSectionId(currentSectionId)\n }\n\n clearMegaMenuCloseTimeout()\n setIsMegaMenuOpen(true)\n }\n\n const closeMegaMenu = () => {\n clearMegaMenuCloseTimeout()\n setIsMegaMenuOpen(false)\n }\n\n const scheduleMegaMenuClose = () => {\n clearMegaMenuCloseTimeout()\n megaMenuCloseTimeoutRef.current = window.setTimeout(() => {\n setIsMegaMenuOpen(false)\n megaMenuCloseTimeoutRef.current = null\n }, 120)\n }\n\n useEffect(() => {\n return () => {\n clearMegaMenuCloseTimeout()\n }\n }, [clearMegaMenuCloseTimeout])\n\n return (\n <>\n <StyledNavbar $border={showChrome}>\n <LayoutComponent className=\"h-full\">\n {isLandingPage ? (\n <div className=\"relative z-3 flex h-full items-center justify-between py-4\">\n <div className=\"flex flex-1 items-center gap-4\">\n <Brand brand={brand} />\n </div>\n <nav\n aria-label=\"Primary\"\n className=\"top-0 left-0 flex min-w-0 flex-1 items-center justify-center gap-4 overflow-x-auto\"\n >\n <ul className=\"flex items-center font-semibold\">\n {navbarItems.map((item) => (\n <li key={item.id}>\n <a\n href={withSiteBaseUrl(item.href)}\n className={'h-full block py-3.25'}\n onPointerEnter={() => openMegaMenu(item.id)}\n onPointerLeave={scheduleMegaMenuClose}\n onFocus={() => openMegaMenu(item.id)}\n onBlur={scheduleMegaMenuClose}\n onClick={closeMegaMenu}\n >\n <span\n className={cmMerge('btn text-lg btn-ghost min-w-30 px-2 whitespace-nowrap tracking-tight')}\n >\n {renderInlineMarkdown(item.title)}\n <ChevronDown className=\"h-4 w-4 shrink-0\" />\n </span>\n </a>\n </li>\n ))}\n </ul>\n </nav>\n <div className=\"flex flex-1 items-center justify-end gap-2\">\n <Search algolia={algolia} />\n <ThemeSwitch theme={theme} />\n </div>\n </div>\n ) : (\n <div className=\"relative z-3 flex h-full items-center justify-between py-4\">\n <div className=\"flex w-80 flex-1 items-center justify-between gap-2 lg:flex-none\">\n <Brand brand={brand} />\n </div>\n <nav\n aria-label=\"Primary\"\n className=\"top-0 left-0 flex flex-1 items-center justify-start gap-4 overflow-x-auto lg:pl-6 xl:pl-10\"\n >\n <ul className=\"flex items-center gap-2 font-semibold\">\n {navbarItems.map((item) => (\n <li key={item.id}>\n <a\n href={withSiteBaseUrl(item.href)}\n onPointerEnter={() => openMegaMenu(item.id)}\n onPointerLeave={scheduleMegaMenuClose}\n onFocus={() => openMegaMenu(item.id)}\n onBlur={scheduleMegaMenuClose}\n onClick={closeMegaMenu}\n className={cmMerge(\n 'btn btn-sm px-2 whitespace-nowrap text-base tracking-tight',\n item.id === activeSection?.id ? 'btn-primary btn-soft' : 'btn-ghost',\n )}\n >\n {renderInlineMarkdown(item.title)}\n </a>\n </li>\n ))}\n </ul>\n <Search algolia={algolia} />\n </nav>\n <div className=\"flex w-78 flex-1 items-center justify-end gap-2 lg:flex-none\">\n <ThemeSwitch theme={theme} />\n </div>\n </div>\n )}\n </LayoutComponent>\n </StyledNavbar>\n <MegaMenu\n sections={sections}\n activeSectionId={activeSection?.id}\n hoveredSectionId={hoveredSectionId}\n isActive={isMegaMenuOpen}\n onOpen={openMegaMenu}\n onClose={scheduleMegaMenuClose}\n />\n </>\n )\n}\n\nconst StyledNavbar = cm.header<{ $border: boolean }>`\n fixed top-0 left-0 z-20 h-16 w-full bg-base-100\n`\n","import { usePageContext } from 'vike-react/usePageContext'\nimport type { DocsGlobalContextData } from '../../docs/types.js'\n\ntype DocsPageContext = {\n globalContext?: {\n docs?: DocsGlobalContextData\n }\n}\n\nexport const getDocsGlobalContext = (pageContext: DocsPageContext) => {\n const docs = pageContext.globalContext?.docs\n\n if (!docs) {\n throw new Error('Missing docs global context data.')\n }\n\n return docs\n}\n\nexport const useDocsGlobalContext = () => {\n return getDocsGlobalContext(usePageContext() as DocsPageContext)\n}\n","import { cmMerge } from '@classmatejs/react'\nimport type { ResolvedDocsBrandConfig } from '../../../docs/types.js'\n\ninterface BrandProps {\n brand: ResolvedDocsBrandConfig\n noText?: boolean\n}\n\nexport const Brand = ({ brand, noText = false }: BrandProps) => {\n const defaultLogo = brand.logoLight ?? brand.logoDark\n\n return (\n <a href={brand.href} className=\"flex items-center gap-3 text-base-content no-underline\">\n {defaultLogo && (\n <span className=\"relative block h-7 w-7 shrink-0\">\n {brand.logoLight && (\n <img\n src={brand.logoLight}\n alt={brand.logoAlt}\n className={cmMerge('h-7 w-7 object-contain', brand.logoDark ? 'block dark:hidden' : 'block')}\n />\n )}\n {brand.logoDark && (\n <img\n src={brand.logoDark}\n alt={brand.logoAlt}\n className={cmMerge('h-7 w-7 object-contain', brand.logoLight ? 'hidden dark:block' : 'block')}\n />\n )}\n </span>\n )}\n {!noText && <span className=\"text-xl font-semibold tracking-tight\">{brand.text}</span>}\n </a>\n )\n}\n","import cm from '@classmatejs/react'\n\nconst LayoutSize = {\n xxs: 'xxs',\n xs: 'xs',\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n xl: 'xl',\n full: 'full',\n} as const\ntype LayoutSize = (typeof LayoutSize)[keyof typeof LayoutSize]\n\nconst layoutComponentSizeMapping: { [key in LayoutSize]: string } = {\n xxs: 'max-w-[480px]',\n xs: 'max-w-[768px]',\n sm: 'max-w-5xl',\n md: 'max-w-6xl',\n lg: 'max-w-7xl',\n xl: 'max-w-[1440px]',\n full: 'max-w-full',\n} as const\n\ninterface LayoutComponentProps {\n $size?: LayoutSize\n $noGrow?: boolean\n}\n\nexport const LayoutComponent = cm.div.variants<LayoutComponentProps>({\n base: ({ $noGrow }) => `px-4 ${$noGrow ? '' : 'mx-auto w-full'} relative`,\n variants: {\n $size: layoutComponentSizeMapping,\n },\n defaultVariants: {\n $size: LayoutSize.xl,\n },\n})\n","import { cmMerge } from '@classmatejs/react'\nimport { useQuery } from '@tanstack/react-query'\nimport { ArrowRightFromLine, MessageCircleQuestion, Search as SearchIcon, TriangleAlert } from 'lucide-react'\nimport { useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport type { ResolvedDocsAlgoliaConfig } from '../../../docs/types.js'\nimport { withSiteBaseUrl } from '../../../shared/assets.js'\nimport { searchAlgoliaIndex } from '../search.js'\nimport { LayoutComponent } from './LayoutComponent.js'\n\nconst MIN_QUERY_LENGTH = 2\nconst QUERY_DEBOUNCE_MS = 150\n\nconst useDebouncedValue = (value: string, delayMs: number) => {\n const [debouncedValue, setDebouncedValue] = useState(value)\n\n useEffect(() => {\n const timeoutId = window.setTimeout(() => {\n setDebouncedValue(value)\n }, delayMs)\n\n return () => {\n window.clearTimeout(timeoutId)\n }\n }, [delayMs, value])\n\n return debouncedValue\n}\n\nexport const Search = ({ algolia }: { algolia: ResolvedDocsAlgoliaConfig | null }) => {\n const [isOpen, setIsOpen] = useState(false)\n const [query, setQuery] = useState('')\n const [isSearchHovered, setIsSearchHovered] = useState(false)\n const containerRef = useRef<HTMLDivElement | null>(null)\n const suggestionBoxRef = useRef<HTMLDivElement | null>(null)\n const debouncedQuery = useDebouncedValue(query, QUERY_DEBOUNCE_MS)\n const normalizedQuery = debouncedQuery.trim()\n const canSearch = Boolean(algolia) && normalizedQuery.length >= MIN_QUERY_LENGTH\n\n const searchQuery = useQuery({\n queryKey: ['nivel-algolia-search', algolia?.appId, algolia?.indexName, normalizedQuery],\n queryFn: ({ signal }) => searchAlgoliaIndex({ config: algolia!, query: normalizedQuery, signal }),\n enabled: isOpen && canSearch,\n retry: false,\n })\n\n useEffect(() => {\n if (!isOpen) {\n return\n }\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target as Node\n\n if (!containerRef.current?.contains(target) && !suggestionBoxRef.current?.contains(target)) {\n setIsOpen(false)\n }\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n setIsOpen(false)\n }\n }\n\n document.addEventListener('pointerdown', handlePointerDown)\n document.addEventListener('keydown', handleKeyDown)\n\n return () => {\n document.removeEventListener('pointerdown', handlePointerDown)\n document.removeEventListener('keydown', handleKeyDown)\n }\n }, [isOpen])\n\n if (!algolia) {\n return null\n }\n\n return (\n <div ref={containerRef} className=\"relative\">\n <div className=\"hidden md:block\">\n <label\n className={cmMerge(\n 'input input-sm w-56 transition-all',\n isSearchHovered ? 'border-primary-muted shadow-lg shadow-primary-muted-light' : 'shadow-transparent',\n )}\n onMouseEnter={() => setIsSearchHovered(true)}\n onMouseLeave={() => setIsSearchHovered(false)}\n >\n <span className=\"label\">\n <SearchIcon className=\"h-4 w-4 shrink-0\" />\n </span>\n <input\n type=\"text\"\n value={query}\n placeholder=\"Search docs\"\n className={cmMerge(\n 'w-full placeholder:text-base-muted-medium transition-colors',\n isSearchHovered && 'placeholder:text-base-muted',\n )}\n onFocus={() => {\n setIsOpen(true)\n }}\n onChange={(event) => {\n setQuery(event.target.value)\n setIsOpen(true)\n }}\n />\n </label>\n </div>\n <button\n type=\"button\"\n className=\"btn btn-ghost btn-square md:hidden\"\n aria-label=\"Search docs\"\n onClick={() => {\n setIsOpen(true)\n }}\n >\n <SearchIcon className=\"h-4 w-4\" />\n </button>\n <SearchSuggestionBox\n contentRef={suggestionBoxRef}\n isError={searchQuery.isError}\n isLoading={searchQuery.isFetching}\n isOpen={isOpen}\n onClose={() => {\n setIsOpen(false)\n }}\n onQueryChange={(nextQuery) => {\n setQuery(nextQuery)\n setIsOpen(true)\n }}\n query={query}\n results={searchQuery.data ?? []}\n />\n </div>\n )\n}\n\ntype SearchSuggestionBoxProps = {\n contentRef: React.RefObject<HTMLDivElement | null>\n isError: boolean\n isLoading: boolean\n isOpen: boolean\n onClose: () => void\n onQueryChange: (query: string) => void\n query: string\n results: Awaited<ReturnType<typeof searchAlgoliaIndex>>\n}\n\nconst SearchSuggestionBox = ({\n contentRef,\n isError,\n isLoading,\n isOpen,\n onClose,\n onQueryChange,\n query,\n results,\n}: SearchSuggestionBoxProps) => {\n const inputRef = useRef<HTMLInputElement | null>(null)\n const normalizedQuery = query.trim()\n const canSearch = normalizedQuery.length >= MIN_QUERY_LENGTH\n\n useEffect(() => {\n if (!isOpen) {\n return\n }\n\n const frameId = window.requestAnimationFrame(() => {\n inputRef.current?.focus()\n inputRef.current?.setSelectionRange(query.length, query.length)\n })\n\n return () => {\n window.cancelAnimationFrame(frameId)\n }\n }, [isOpen, query.length])\n\n if (!isOpen || typeof document === 'undefined') {\n return null\n }\n\n return createPortal(\n <div className=\"fixed inset-0 z-30 h-full w-full bg-base-100/50 backdrop-blur-lg\">\n <div className=\"absolute inset-0 z-1 bg-linear-to-b from-base-100 via-base-100 via-25% to-primary-muted-superlight dark:bg-linear-to-t\" />\n <LayoutComponent\n ref={contentRef}\n $size=\"sm\"\n className=\"mt-5 relative z-2 pt-6 p-6 bg-base-100/70 rounded-box shadow-lg shadow-primary-muted-light\"\n >\n <input\n placeholder=\"Search docs\"\n ref={inputRef}\n type=\"text\"\n className=\"input input-primary input-xl w-full\"\n value={query}\n onChange={(event) => onQueryChange(event.target.value)}\n />\n <div className=\"flex h-7 items-center px-4 text-xs text-base-muted\">\n {isLoading ? (\n <span className=\"flex items-center gap-1\">\n <span className=\"loading loading-dots loading-xs\" />\n Searching...\n </span>\n ) : normalizedQuery ? null : (\n <span className=\"flex items-center gap-1\">\n <MessageCircleQuestion className=\"h-3 w-3 shrink-0\" />\n Type at least {MIN_QUERY_LENGTH} characters.\n </span>\n )}\n </div>\n {normalizedQuery ? (\n isError ? (\n <div className=\"flex items-center gap-2 rounded-box border border-warning/40 bg-base-100 p-4 text-sm text-base-muted shadow-md shadow-primary-muted-light\">\n <TriangleAlert className=\"h-4 w-4 shrink-0 text-warning\" />\n Search is temporarily unavailable.\n </div>\n ) : !canSearch ? (\n <div className=\"text-sm text-base-muted\">Keep typing to search.</div>\n ) : !isLoading && results.length === 0 ? (\n <div className=\"text-sm text-base-muted\">No results found.</div>\n ) : (\n <div className=\"max-h-80 overflow-y-auto -mx-2 p-2\">\n <ul className=\"flex flex-col gap-2\">\n {results.map((result) => (\n <li key={result.href}>\n <a\n href={withSiteBaseUrl(result.href)}\n className=\"block rounded-box border border-base-muted-medium bg-base-100 p-4 hover:border-primary-muted hover:bg-base-200 shadow-md\"\n onClick={onClose}\n >\n <div className=\"mb-2 flex items-center justify-start gap-2\">\n <div className=\"text-base-content font-bold\">{result.title}</div>\n {result.sectionTitle ? (\n <div className=\"flex items-center gap-1 text-sm text-base-muted-medium\">\n <ArrowRightFromLine className=\"h-3 w-3\" /> {result.sectionTitle}\n </div>\n ) : null}\n </div>\n {result.excerpt ? <p className=\"text-xs leading-5 text-base-muted\">{result.excerpt}</p> : null}\n </a>\n </li>\n ))}\n </ul>\n </div>\n )\n ) : null}\n </LayoutComponent>\n </div>,\n document.body,\n )\n}\n","import type { ResolvedDocsAlgoliaConfig } from '../../docs/types.js'\n\ntype DocsSearchResult = {\n href: string\n title: string\n excerpt?: string\n sectionTitle?: string\n}\n\ntype SearchAlgoliaResponse = {\n hits?: unknown[]\n}\n\ntype AlgoliaDocSearchHit = {\n url?: unknown\n url_without_anchor?: unknown\n type?: unknown\n category?: unknown\n content?: unknown\n hierarchy?: Record<string, unknown> | null\n _highlightResult?: {\n content?: {\n value?: unknown\n }\n } | null\n _snippetResult?: {\n content?: {\n value?: unknown\n }\n } | null\n}\n\nconst hierarchyLevels = ['lvl0', 'lvl1', 'lvl2', 'lvl3', 'lvl4', 'lvl5', 'lvl6'] as const\n\nconst stripHtml = (value: string) => value.replace(/<[^>]+>/g, '')\n\nconst normalizeString = (value: unknown) => {\n if (typeof value === 'string') {\n const normalized = stripHtml(value).replace(/\\s+/g, ' ').trim()\n return normalized || undefined\n }\n\n if (typeof value === 'number' || typeof value === 'boolean') {\n return String(value)\n }\n\n return undefined\n}\n\nconst getValueAtPath = (value: unknown, path: string): unknown => {\n if (!path) {\n return undefined\n }\n\n const segments = path.split('.').filter(Boolean)\n let currentValue = value\n\n for (const segment of segments) {\n if (!currentValue || typeof currentValue !== 'object' || Array.isArray(currentValue)) {\n return undefined\n }\n\n currentValue = (currentValue as Record<string, unknown>)[segment]\n }\n\n return currentValue\n}\n\nconst getMappedString = (value: unknown, path: string): string | undefined => {\n return normalizeString(getValueAtPath(value, path))\n}\n\nconst buildSearchUrl = (appId: string, indexName: string) => {\n return `https://${appId}-dsn.algolia.net/1/indexes/${encodeURIComponent(indexName)}/query`\n}\n\nconst getDocSearchHierarchyValue = (\n hierarchy: AlgoliaDocSearchHit['hierarchy'],\n level: (typeof hierarchyLevels)[number],\n) => {\n if (!hierarchy || typeof hierarchy !== 'object') {\n return undefined\n }\n\n return normalizeString(hierarchy[level])\n}\n\nconst getDocSearchTitleLevel = (hit: AlgoliaDocSearchHit) => {\n const levelFromType =\n typeof hit.type === 'string' && /^lvl[0-6]$/.test(hit.type) ? (hit.type as (typeof hierarchyLevels)[number]) : null\n\n if (levelFromType && getDocSearchHierarchyValue(hit.hierarchy, levelFromType)) {\n return levelFromType\n }\n\n return [...hierarchyLevels]\n .reverse()\n .find((level) => level !== 'lvl0' && getDocSearchHierarchyValue(hit.hierarchy, level))\n}\n\nconst getDocSearchFallbackResult = (hit: unknown): Partial<DocsSearchResult> => {\n const docSearchHit = hit as AlgoliaDocSearchHit\n const titleLevel = getDocSearchTitleLevel(docSearchHit)\n const title = titleLevel ? getDocSearchHierarchyValue(docSearchHit.hierarchy, titleLevel) : undefined\n const titleLevelIndex = titleLevel ? hierarchyLevels.indexOf(titleLevel) : -1\n const sectionTitle =\n hierarchyLevels\n .slice(0, Math.max(titleLevelIndex, 0))\n .reverse()\n .map((level) => getDocSearchHierarchyValue(docSearchHit.hierarchy, level))\n .find(Boolean) ?? normalizeString(docSearchHit.category)\n\n return {\n href: normalizeString(docSearchHit.url) ?? normalizeString(docSearchHit.url_without_anchor),\n title: title ?? normalizeString(docSearchHit.category),\n excerpt:\n normalizeString(docSearchHit._snippetResult?.content?.value) ??\n normalizeString(docSearchHit.content) ??\n normalizeString(docSearchHit._highlightResult?.content?.value),\n sectionTitle,\n }\n}\n\nconst mapHitToSearchResult = (hit: unknown, config: ResolvedDocsAlgoliaConfig): DocsSearchResult | null => {\n const docSearchFallback = getDocSearchFallbackResult(hit)\n const href = getMappedString(hit, config.fields.href) ?? docSearchFallback.href\n const title = getMappedString(hit, config.fields.title) ?? docSearchFallback.title\n\n if (!href || !title) {\n return null\n }\n\n const excerpt = getMappedString(hit, config.fields.excerpt) ?? docSearchFallback.excerpt\n const sectionTitle = getMappedString(hit, config.fields.sectionTitle) ?? docSearchFallback.sectionTitle\n\n return {\n href,\n title,\n excerpt,\n sectionTitle,\n }\n}\n\nexport const searchAlgoliaIndex = async (options: {\n config: ResolvedDocsAlgoliaConfig\n query: string\n signal?: AbortSignal\n}) => {\n const { config, query, signal } = options\n const response = await fetch(buildSearchUrl(config.appId, config.indexName), {\n method: 'POST',\n signal,\n headers: {\n accept: 'application/json',\n 'content-type': 'application/json',\n 'x-algolia-api-key': config.apiKey,\n 'x-algolia-application-id': config.appId,\n },\n body: JSON.stringify({\n query,\n ...config.searchParams,\n }),\n })\n\n if (!response.ok) {\n throw new Error(`Algolia search request failed with status ${response.status}.`)\n }\n\n const data = (await response.json()) as SearchAlgoliaResponse\n\n return (data.hits ?? [])\n .map((hit) => mapHitToSearchResult(hit, config))\n .filter((result): result is DocsSearchResult => result !== null)\n}\n","import { Moon, Sun } from 'lucide-react'\nimport type { DocsThemeConfig } from '../../../docs/types.js'\nimport { useDocsUserSettingsStore } from '../store/settings-store.js'\nimport { resolveThemePreference } from '../theme.js'\n\nexport const ThemeSwitch = ({ theme }: { theme: Required<DocsThemeConfig> }) => {\n const themePreference = useDocsUserSettingsStore((state) => state.themePreference)\n const setThemePreference = useDocsUserSettingsStore((state) => state.setThemePreference)\n const effectiveThemePreference = resolveThemePreference(themePreference, theme)\n\n return (\n <button\n type=\"button\"\n aria-label=\"Toggle theme\"\n onClick={() => setThemePreference(effectiveThemePreference === 'light' ? 'dark' : 'light')}\n className=\"relative flex h-8 w-8 cursor-pointer items-center justify-center rounded-full border border-base-muted-light bg-base-200\"\n >\n <Sun className=\"h-4 w-4 dark:hidden\" />\n <Moon className=\"hidden h-4 w-4 dark:block\" />\n </button>\n )\n}\n","import { create } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\nimport type { UniversalMdxCodeBlockChoiceStore } from '../../../mdx/components/types.js'\nimport type { ThemePreference } from '../../../docs/types.js'\nimport { readLegacyCodeBlockChoice, USER_SETTINGS_STORAGE_KEY } from './settings-storage.js'\n\ntype DocsUserSettingsState = {\n codeBlockChoices: Record<string, string>\n themePreference: ThemePreference | null\n setCodeBlockChoice: (choiceGroupName: string, choice: string) => void\n setThemePreference: (themePreference: ThemePreference) => void\n}\n\nexport const useDocsUserSettingsStore = create<DocsUserSettingsState>()(\n persist(\n (set) => ({\n codeBlockChoices: {},\n themePreference: null,\n setCodeBlockChoice: (choiceGroupName, choice) =>\n set((state) => ({\n codeBlockChoices: {\n ...state.codeBlockChoices,\n [choiceGroupName]: choice,\n },\n })),\n setThemePreference: (themePreference) => set({ themePreference }),\n }),\n {\n name: USER_SETTINGS_STORAGE_KEY,\n storage: createJSONStorage(() => localStorage),\n partialize: ({ codeBlockChoices, themePreference }) => ({\n codeBlockChoices,\n themePreference,\n }),\n },\n ),\n)\n\nexport const docsCodeBlockChoiceStore: UniversalMdxCodeBlockChoiceStore = {\n subscribe: (listener) => useDocsUserSettingsStore.subscribe(listener),\n getChoice: (choiceGroupName) => useDocsUserSettingsStore.getState().codeBlockChoices[choiceGroupName] ?? null,\n setChoice: (choiceGroupName, choice) =>\n useDocsUserSettingsStore.getState().setCodeBlockChoice(choiceGroupName, choice),\n getLegacyChoice: readLegacyCodeBlockChoice,\n}\n","export const USER_SETTINGS_STORAGE_KEY = 'nivel-user-settings'\nconst LEGACY_CODE_BLOCK_CHOICE_STORAGE_KEY_PREFIX = 'vike-docpress:choice:'\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => {\n return typeof value === 'object' && value !== null\n}\n\nconst readPersistedSettingsState = () => {\n if (typeof window === 'undefined') {\n return null\n }\n\n try {\n const rawValue = window.localStorage.getItem(USER_SETTINGS_STORAGE_KEY)\n if (!rawValue) {\n return null\n }\n\n const parsedValue = JSON.parse(rawValue) as unknown\n if (!isRecord(parsedValue)) {\n return null\n }\n\n const state = parsedValue.state\n return isRecord(state) ? state : null\n } catch {\n return null\n }\n}\n\nexport const readLegacyCodeBlockChoice = (choiceGroupName: string) => {\n if (typeof window === 'undefined') {\n return null\n }\n\n try {\n const value = window.localStorage.getItem(`${LEGACY_CODE_BLOCK_CHOICE_STORAGE_KEY_PREFIX}${choiceGroupName}`)\n return value || null\n } catch {\n return null\n }\n}\n","import type { DocsThemeConfig, ThemePreference } from '../../docs/types.js'\n\nexport const DEFAULT_THEME_PREFERENCE: ThemePreference = 'light'\nexport const DARK_THEME_MEDIA_QUERY = '(prefers-color-scheme: dark)'\n\nconst getDataTheme = (themePreference: ThemePreference, themeConfig: Required<DocsThemeConfig>) => {\n return themePreference === 'dark' ? themeConfig.dark : themeConfig.light\n}\n\nconst isThemePreference = (value: unknown): value is ThemePreference => {\n return value === 'light' || value === 'dark'\n}\n\nconst getSystemThemePreference = (fallbackThemePreference: ThemePreference): ThemePreference => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return fallbackThemePreference\n }\n\n return window.matchMedia(DARK_THEME_MEDIA_QUERY).matches ? 'dark' : 'light'\n}\n\nexport const resolveThemePreference = (\n themePreference: ThemePreference | null | undefined,\n themeConfig: Required<DocsThemeConfig>,\n) => {\n if (isThemePreference(themePreference)) {\n return themePreference\n }\n\n return getSystemThemePreference(themeConfig.defaultPreference)\n}\n\nexport const applyThemePreference = (\n themePreference: ThemePreference | null | undefined,\n themeConfig: Required<DocsThemeConfig>,\n) => {\n if (typeof document === 'undefined') {\n return\n }\n\n document.documentElement.setAttribute(\n 'data-theme',\n getDataTheme(resolveThemePreference(themePreference, themeConfig), themeConfig),\n )\n}\n","import { cmMerge } from '@classmatejs/react'\nimport { useEffect, useState } from 'react'\nimport type { ResolvedDocsSection } from '../../../../../docs/types.js'\nimport { withSiteBaseUrl } from '../../../../../shared/assets.js'\nimport { renderInlineMarkdown } from '../../../../../shared/renderInlineMarkdown.js'\nimport { LayoutComponent } from '../../LayoutComponent.js'\n\nexport const MegaMenu = ({\n isActive,\n onOpen,\n onClose,\n sections,\n activeSectionId,\n hoveredSectionId,\n}: {\n isActive: boolean\n onOpen: (sectionId?: string) => void\n onClose: () => void\n sections: ResolvedDocsSection[]\n activeSectionId?: string\n hoveredSectionId?: string\n}) => {\n const visibleSectionId = hoveredSectionId ?? activeSectionId ?? sections[0]?.id\n const [visibleSectionElement, setVisibleSectionElement] = useState<HTMLDivElement | null>(null)\n const [contentHeight, setContentHeight] = useState(0)\n\n useEffect(() => {\n if (!visibleSectionId || visibleSectionElement === null) {\n return\n }\n\n const updateContentHeight = () => {\n setContentHeight(visibleSectionElement.offsetHeight)\n }\n\n updateContentHeight()\n\n if (typeof ResizeObserver === 'undefined') {\n return\n }\n\n const resizeObserver = new ResizeObserver(() => {\n updateContentHeight()\n })\n\n resizeObserver.observe(visibleSectionElement)\n\n return () => {\n resizeObserver.disconnect()\n }\n }, [visibleSectionElement, visibleSectionId])\n\n return (\n // biome-ignore lint/a11y/noStaticElementInteractions: ok\n <div\n className={cmMerge(\n 'fixed top-13 left-0 z-3 w-full pt-3',\n isActive ? 'pointer-events-auto' : 'pointer-events-none',\n )}\n onPointerEnter={() => onOpen(visibleSectionId)}\n onPointerLeave={onClose}\n >\n <div\n className={cmMerge(\n isActive ? 'opacity-100' : 'opacity-0',\n 'pointer-events-none absolute top-0 left-0 h-svh w-full bg-linear-to-t from-base-100/60 to-base-100 transition-opacity duration-200 backdrop-blur-md',\n )}\n />\n <div\n className={cmMerge(\n 'relative z-4 overflow-hidden bg-base-100 transition-[height] duration-300 ease-out border-b border-base-muted-light',\n )}\n // biome-ignore lint/nursery/noInlineStyles: needed here\n style={{ height: isActive ? contentHeight : 0 }}\n >\n <LayoutComponent $size=\"sm\">\n <div\n className={cmMerge(\n isActive ? 'translate-y-0 opacity-100' : '-translate-y-10 opacity-0',\n 'relative z-4 transition-all duration-300',\n )}\n >\n {sections.map((section) => (\n <div\n key={section.id}\n ref={section.id === visibleSectionId ? setVisibleSectionElement : undefined}\n className={cmMerge(\n section.id === visibleSectionId ? 'opacity-100' : 'opacity-0 pointer-events-none',\n 'transition-all absolute w-full duration-300',\n )}\n >\n {section.items.length > 0 && (\n <ul className=\"mt-2 flex \">\n {section.items.map(\n (child) =>\n child.showInNav !== false && (\n <li key={child.id} className=\"flex-1 py-3 mb-6 px-4\">\n {child.href ? (\n <a\n className=\"mb-4 block text-lg font-semibold tracking-tight\"\n href={withSiteBaseUrl(child.href)}\n >\n {child.title}\n </a>\n ) : (\n <span className=\"mb-4 block text-lg font-semibold tracking-tight\">{child.title}</span>\n )}\n {child.kind === 'group' && child.items.length > 0 && (\n <ul className=\"menu border-l border-base-muted-light py-0 w-full\">\n {child.items.map((subChild) => (\n <li key={subChild.id}>\n {subChild.href ? (\n <a href={withSiteBaseUrl(subChild.href)} onClick={onClose}>\n {renderInlineMarkdown(subChild.title)}\n </a>\n ) : (\n <span>{renderInlineMarkdown(subChild.title)}</span>\n )}\n </li>\n ))}\n </ul>\n )}\n </li>\n ),\n )}\n </ul>\n )}\n </div>\n ))}\n </div>\n </LayoutComponent>\n </div>\n </div>\n )\n}\n","import { useEffect, useState } from 'react'\n\nexport const useNavbarScroll = (isLandingPage: boolean) => {\n const [isLandingPageScrolled, setIsLandingPageScrolled] = useState(false)\n\n useEffect(() => {\n if (!isLandingPage) {\n setIsLandingPageScrolled(false)\n return\n }\n\n const handleScroll = () => {\n setIsLandingPageScrolled(window.scrollY > 20)\n }\n\n handleScroll()\n window.addEventListener('scroll', handleScroll, { passive: true })\n\n return () => {\n window.removeEventListener('scroll', handleScroll)\n }\n }, [isLandingPage])\n\n return {\n isLandingPageScrolled,\n }\n}\n","import { useEffect } from 'react'\nimport type { DocsConfig } from '../../../docs/types.js'\nimport { useDocsUserSettingsStore } from '../store/settings-store.js'\nimport { applyThemePreference, resolveThemePreference } from '../theme.js'\n\nexport const UserSettingsSync = ({ theme }: { theme?: DocsConfig['theme'] }) => {\n const themePreference = useDocsUserSettingsStore((state) => state.themePreference)\n const lightTheme = theme?.light ?? 'consumer-light'\n const darkTheme = theme?.dark ?? 'consumer-dark'\n const defaultThemePreference = theme?.defaultPreference ?? 'light'\n const resolvedTheme = { light: lightTheme, dark: darkTheme, defaultPreference: defaultThemePreference }\n const effectiveThemePreference = resolveThemePreference(themePreference, resolvedTheme)\n\n useEffect(() => {\n applyThemePreference(effectiveThemePreference, resolvedTheme)\n }, [darkTheme, defaultThemePreference, effectiveThemePreference, lightTheme])\n\n return null\n}\n","import type { ResolvedDocsHeadConfig } from '../../../../docs/types.js'\n\nexport const FaviconLinks = ({ head }: { head: ResolvedDocsHeadConfig }) => {\n const { appleTouchIcon, faviconIco, faviconSvg } = head\n\n return (\n <>\n {appleTouchIcon && <link rel=\"apple-touch-icon\" href={appleTouchIcon} />}\n {faviconSvg && <link rel=\"icon\" type=\"image/svg+xml\" href={faviconSvg} />}\n {faviconIco && (\n <>\n <link rel=\"shortcut icon\" type=\"image/x-icon\" href={faviconIco} />\n <link rel=\"icon\" type=\"image/x-icon\" href={faviconIco} />\n </>\n )}\n </>\n )\n}\n","import type { ResolvedDocsHeadConfig } from '../../../../docs/types.js'\n\nexport const FontLinks = ({ head }: { head: ResolvedDocsHeadConfig }) => {\n const { fontStylesheetHref, fontPreloadHrefs } = head\n const effectivePreloadHrefs = fontPreloadHrefs ?? []\n\n return (\n <>\n {effectivePreloadHrefs.map((href) => (\n <link key={href} rel=\"preload\" href={href} as=\"font\" type=\"font/woff2\" crossOrigin=\"anonymous\" />\n ))}\n {fontStylesheetHref && <link rel=\"stylesheet\" href={fontStylesheetHref} />}\n </>\n )\n}\n","import type { DocsThemeConfig } from '../../../../docs/types.js'\nimport { USER_SETTINGS_STORAGE_KEY } from '../../store/settings-storage.js'\nimport { DARK_THEME_MEDIA_QUERY } from '../../theme.js'\n\nconst getThemeBootstrapScript = (theme: Required<DocsThemeConfig>) => {\n return `(() => {\n const storageKey = ${JSON.stringify(USER_SETTINGS_STORAGE_KEY)};\n const darkThemeMediaQuery = ${JSON.stringify(DARK_THEME_MEDIA_QUERY)};\n const defaultThemePreference = ${JSON.stringify(theme.defaultPreference)};\n const themes = {\n light: ${JSON.stringify(theme.light)},\n dark: ${JSON.stringify(theme.dark)}\n };\n\n try {\n const persistedValue = window.localStorage.getItem(storageKey);\n const parsedValue = persistedValue ? JSON.parse(persistedValue) : null;\n const storedThemePreference = parsedValue?.state?.themePreference;\n const themePreference =\n storedThemePreference === 'light' || storedThemePreference === 'dark'\n ? storedThemePreference\n : typeof window.matchMedia === 'function'\n ? window.matchMedia(darkThemeMediaQuery).matches\n ? 'dark'\n : 'light'\n : defaultThemePreference;\n\n document.documentElement.setAttribute('data-theme', themes[themePreference]);\n } catch {\n const themePreference =\n typeof window.matchMedia === 'function'\n ? window.matchMedia(darkThemeMediaQuery).matches\n ? 'dark'\n : 'light'\n : defaultThemePreference;\n\n document.documentElement.setAttribute('data-theme', themes[themePreference]);\n }\n})();`\n}\n\nexport const ThemeBootstrap = ({ theme }: { theme: Required<DocsThemeConfig> }) => {\n return (\n <script\n dangerouslySetInnerHTML={{\n __html: getThemeBootstrapScript(theme),\n }}\n />\n )\n}\n","import { useDocsGlobalContext } from '../../docsGlobalContext.js'\nimport { FaviconLinks } from './FaviconLinks.js'\nimport { FontLinks } from './FontLinks.js'\nimport { ThemeBootstrap } from './ThemeBootstrap.js'\n\nexport const MetaHead = () => {\n const docs = useDocsGlobalContext()\n\n return (\n <>\n <ThemeBootstrap theme={docs.theme} />\n <FaviconLinks head={docs.head} />\n <FontLinks head={docs.head} />\n </>\n )\n}\n","import cm from '@classmatejs/react'\n\n// https://github.com/tailwindlabs/tailwindcss-typography\nexport const ProseContainer = cm.section`\n prose-container\n`\n","import type { ComponentType } from 'react'\nimport { useData } from 'vike-react/useData'\nimport { usePageContext } from 'vike-react/usePageContext'\nimport { UniversalMdxProvider } from '../../mdx/components/UniversalMdxProvider.js'\nimport type { DocPageData } from '../../docs/types.js'\nimport { renderInlineMarkdown } from '../../shared/renderInlineMarkdown.js'\nimport { LayoutComponent } from './components/LayoutComponent.js'\nimport { ProseContainer } from './components/ProseContainer.js'\nimport { DocsPagination } from './components/DocsPagination.js'\nimport { DocsFooter } from './components/Footer.js'\nimport { Sidebar } from './components/Sidebar.js'\nimport { TableOfContents } from './components/TableOfContents.js'\nimport { getDocsGlobalContext } from './docsGlobalContext.js'\nimport { getMdxRuntimeValue } from './getMdxRuntimeValue.js'\n\ninterface DocsPageProps {\n Content: ComponentType\n}\n\nexport const DocsPage = ({ Content }: DocsPageProps) => {\n const pageContext = usePageContext()\n const docs = getDocsGlobalContext(pageContext as Parameters<typeof getDocsGlobalContext>[0])\n const { page, headings, previousPage, nextPage } = useData() as DocPageData\n\n return (\n <UniversalMdxProvider\n value={getMdxRuntimeValue({\n docs,\n currentPathname: pageContext.urlPathname,\n })}\n >\n <div className=\"absolute top-0 left-0 w-full h-[60svh] bg-radial-[at_65%_-85%] from-primary-muted-light to-65%\" />\n\n <LayoutComponent>\n <div className=\"lg:flex lg:gap-10 xl:gap-14\">\n <Sidebar sections={docs.sidebarSections} activeSectionId={page.sectionId} currentHref={page.href} />\n\n <main className=\"mt-10 min-w-0 flex-1 basis-auto shrink\">\n <ProseContainer data-doc-content=\"\">\n <h1 className=\"scroll-mt-24\">{renderInlineMarkdown(page.title)}</h1>\n <Content />\n </ProseContainer>\n {docs.footer.pagination ? <DocsPagination previousPage={previousPage} nextPage={nextPage} /> : null}\n <DocsFooter brand={docs.brand} />\n </main>\n <TableOfContents headings={headings} partners={docs.partners} />\n </div>\n </LayoutComponent>\n </UniversalMdxProvider>\n )\n}\n","import { cmMerge } from '@classmatejs/react'\nimport { ChevronLeft, ChevronRight } from 'lucide-react'\nimport type { DocPageData } from '../../../docs/types.js'\nimport { withSiteBaseUrl } from '../../../shared/assets.js'\nimport { renderInlineMarkdown } from '../../../shared/renderInlineMarkdown.js'\n\ninterface PaginationCardProps {\n item: NonNullable<DocPageData['previousPage']>\n direction: 'previous' | 'next'\n isOffset?: boolean\n}\n\nconst PaginationCard = ({ item, direction, isOffset }: PaginationCardProps) => {\n const isPrevious = direction === 'previous'\n\n return (\n <a\n href={withSiteBaseUrl(item.href)}\n className={cmMerge(\n 'group rounded-box border border-base-muted-light bg-base-100 p-5 no-underline hover:border-primary-muted-medium hover:bg-base-200',\n isPrevious ? 'text-left' : 'text-right',\n isOffset && 'sm:col-start-2',\n )}\n aria-label={`${isPrevious ? 'Previous' : 'Next'}: ${item.title}`}\n >\n <div className=\"flex flex-col justify-between gap-2\">\n <p className=\"text-lg font-semibold text-base-content\">{renderInlineMarkdown(item.title)}</p>\n <div\n className={cmMerge(\n 'flex items-center gap-1 text-base-muted group-hover:text-base-content',\n isPrevious ? 'justify-start' : 'justify-end',\n )}\n >\n {isPrevious && <ChevronLeft className=\"h-4 w-4\" />}\n <span>{isPrevious ? 'Previous' : 'Next'}</span>\n {!isPrevious && <ChevronRight className=\"h-4 w-4\" />}\n </div>\n </div>\n </a>\n )\n}\n\ninterface DocsPaginationProps {\n previousPage: DocPageData['previousPage']\n nextPage: DocPageData['nextPage']\n}\n\nexport const DocsPagination = ({ previousPage, nextPage }: DocsPaginationProps) => {\n if (!previousPage && !nextPage) {\n return null\n }\n\n return (\n <nav className=\"mb-10 mt-16\" aria-label=\"Previous Next\">\n <div className=\"grid gap-4 sm:grid-cols-2\">\n {previousPage && <PaginationCard item={previousPage} direction=\"previous\" />}\n {nextPage && <PaginationCard isOffset={!previousPage} item={nextPage} direction=\"next\" />}\n </div>\n </nav>\n )\n}\n","import { Bug, Pencil } from 'lucide-react'\nimport type { ResolvedDocsBrandConfig } from '../../../docs/types.js'\nimport { Brand } from './Brand.js'\n\ninterface DocsFooterProps {\n brand?: ResolvedDocsBrandConfig\n}\n\nexport const DocsFooter = ({ brand }: DocsFooterProps) => {\n return (\n <footer className=\"mb-8 mt-12 text-sm border-t border-base-muted-light pt-10\">\n <div className=\"mb-16 flex items-center gap-2\">\n <a href=\"edit\" className=\"btn btn-sm btn-primary btn-soft\">\n <Pencil className=\"w-3 h-3\" /> Edit this page\n </a>\n <a href=\"edit\" className=\"btn btn-sm btn-primary btn-soft\">\n <Bug className=\"w-3 h-3\" /> Report Issue\n </a>\n </div>\n <div className=\"flex justify-between items-center\">\n {/* Social Icons Here */}\n <div className=\"flex gap-2 items-center\">{brand && <Brand brand={brand} noText />}</div>\n </div>\n </footer>\n )\n}\n","import { cmMerge } from '@classmatejs/react'\nimport type { ReactNode } from 'react'\nimport { useEffect } from 'react'\nimport { create } from 'zustand'\nimport type { ResolvedDocsSection, ResolvedSidebarGroup, ResolvedSidebarNode } from '../../../docs/types.js'\nimport { withSiteBaseUrl } from '../../../shared/assets.js'\nimport { renderInlineMarkdown } from '../../../shared/renderInlineMarkdown.js'\nimport {\n containsActiveHref,\n getGroupHref,\n getVisibleGroupItems,\n getVisibleNavItems,\n hasActiveItem,\n} from './docsNavigation.js'\n\ntype SidebarDisclosureState = {\n openNodes: Record<string, boolean>\n setNodeOpen: (nodeId: string, isOpen: boolean) => void\n}\n\nconst useSidebarDisclosureStore = create<SidebarDisclosureState>()((set) => ({\n openNodes: {},\n setNodeOpen: (nodeId, isOpen) =>\n set((state) => {\n if (state.openNodes[nodeId] === isOpen) {\n return state\n }\n\n return {\n openNodes: {\n ...state.openNodes,\n [nodeId]: isOpen,\n },\n }\n }),\n}))\n\nconst useAutoOpenDetails = (nodeId: string, isOpenByDefault: boolean, hasActiveDescendant: boolean) => {\n const storedOpen = useSidebarDisclosureStore((state) => state.openNodes[nodeId])\n const setNodeOpen = useSidebarDisclosureStore((state) => state.setNodeOpen)\n const isOpen = storedOpen === undefined ? isOpenByDefault || hasActiveDescendant : storedOpen || hasActiveDescendant\n\n useEffect(() => {\n if (hasActiveDescendant) {\n setNodeOpen(nodeId, true)\n return\n }\n\n if (storedOpen === undefined && isOpenByDefault) {\n setNodeOpen(nodeId, true)\n }\n }, [hasActiveDescendant, isOpenByDefault, nodeId, setNodeOpen, storedOpen])\n\n return {\n isOpen,\n setIsOpen: (nextOpen: boolean) => setNodeOpen(nodeId, nextOpen),\n }\n}\n\ninterface SidebarPageLinkProps {\n title: string\n href: string\n currentHref: string\n}\n\nconst SidebarPageLink = ({ title, href, currentHref }: SidebarPageLinkProps) => {\n return (\n <li>\n <a\n href={withSiteBaseUrl(href)}\n className={cmMerge(\n 'text-base-muted hover:text-base-content justify-start hover:bg-base-200',\n href === currentHref && 'text-primary! font-semibold bg-base-200',\n )}\n >\n {renderInlineMarkdown(title, { codeClassName: 'text-sm!' })}\n </a>\n </li>\n )\n}\n\nconst SidebarGroupDivider = ({ title }: { title: string }) => {\n return (\n <li className=\"ml-3 mt-2 mb-2 border-b border-base-muted-light text-xs text-base-muted-medium pointer-events-none font-semibold\">\n <span className=\"-ml-3\">{renderInlineMarkdown(title, { codeClassName: 'text-sm!' })}</span>\n </li>\n )\n}\n\ninterface SidebarGroupTitleProps {\n title?: string\n href?: string\n isActive: boolean\n allowNavigation?: boolean\n}\n\nconst SidebarGroupTitle = ({ title, href, isActive, allowNavigation = false }: SidebarGroupTitleProps) => {\n const content = (\n <span\n className={cmMerge(\n allowNavigation ? 'font-medium' : 'font-semibold',\n isActive && allowNavigation && 'text-primary!',\n )}\n >\n {title ? renderInlineMarkdown(title, { codeClassName: 'text-sm!' }) : null}\n </span>\n )\n\n if (allowNavigation && href) {\n return (\n <a\n href={withSiteBaseUrl(href)}\n className={cmMerge(\n 'flex items-center gap-2 text-base-muted hover:text-base-content no-underline',\n isActive && 'text-primary! font-semibold',\n )}\n >\n {content}\n </a>\n )\n }\n\n return <span className=\"flex items-center gap-2 text-base-content\">{content}</span>\n}\n\nconst renderSidebarItems = (items: ResolvedSidebarNode[], currentHref: string): ReactNode[] => {\n return items.map((item) => {\n if (item.kind === 'page') {\n return <SidebarPageLink key={item.id} title={item.navTitle} href={item.href} currentHref={currentHref} />\n }\n\n return <SidebarNestedGroup key={item.id} group={item} currentHref={currentHref} />\n })\n}\n\ninterface SidebarItemListProps {\n items: ResolvedSidebarNode[]\n currentHref: string\n}\n\nconst SidebarItemList = ({ items, currentHref }: SidebarItemListProps) => {\n const visibleItems = getVisibleNavItems(items)\n\n return <ul className=\"menu w-full\">{renderSidebarItems(visibleItems, currentHref)}</ul>\n}\n\ninterface SidebarNestedGroupProps {\n group: ResolvedSidebarGroup\n currentHref: string\n}\n\nconst SidebarNestedGroup = ({ group, currentHref }: SidebarNestedGroupProps) => {\n const groupHref = getGroupHref(group)\n const visibleItems = getVisibleGroupItems(group)\n const isCollapsible = group.collapsible !== undefined\n const isOpenByDefault = group.collapsible?.isDefaultOpen ?? true\n const nestedHasActiveItem = groupHref === currentHref || hasActiveItem(group.items, currentHref)\n const { isOpen, setIsOpen } = useAutoOpenDetails(`group:${group.id}`, isOpenByDefault, nestedHasActiveItem)\n\n if (!isCollapsible) {\n if (!group.title) {\n return <>{renderSidebarItems(visibleItems, currentHref)}</>\n }\n\n return (\n <>\n <SidebarGroupDivider title={group.title} />\n {renderSidebarItems(visibleItems, currentHref)}\n </>\n )\n }\n\n return (\n <li>\n <details\n open={isOpen}\n onToggle={(event) => {\n setIsOpen(event.currentTarget.open)\n }}\n >\n <summary>\n <SidebarGroupTitle\n title={group.title}\n href={groupHref ?? undefined}\n isActive={nestedHasActiveItem}\n allowNavigation={Boolean(groupHref)}\n />\n </summary>\n {visibleItems.length > 0 ? <SidebarItemList items={visibleItems} currentHref={currentHref} /> : null}\n </details>\n </li>\n )\n}\n\ninterface SidebarSectionGroupProps {\n section: ResolvedDocsSection\n currentHref: string\n activeSectionId: string\n}\n\nconst SidebarSectionGroup = ({ section, currentHref, activeSectionId }: SidebarSectionGroupProps) => {\n const sectionHasActiveItem = section.id === activeSectionId || containsActiveHref(section.items, currentHref)\n const { isOpen, setIsOpen } = useAutoOpenDetails(\n `section:${section.id}`,\n section.id === activeSectionId,\n sectionHasActiveItem,\n )\n\n return (\n <li className=\"pb-4\">\n <details\n open={isOpen}\n onToggle={(event) => {\n setIsOpen(event.currentTarget.open)\n }}\n >\n <summary>\n <SidebarGroupTitle title={section.title} isActive={sectionHasActiveItem} />\n </summary>\n <SidebarItemList items={section.items} currentHref={currentHref} />\n </details>\n </li>\n )\n}\n\ninterface SidebarProps {\n sections: ResolvedDocsSection[]\n activeSectionId: string\n currentHref: string\n horizontal?: boolean\n}\n\nexport const Sidebar = ({ sections, activeSectionId, currentHref, horizontal }: SidebarProps) => {\n return (\n <aside className=\"hidden basis-76 shrink-0 lg:block\">\n <div className=\"-ml-3 sticky top-16\">\n <div className=\"absolute h-full w-px right-0 top-0 bg-linear-to-t to-base-muted-light via-base-muted-light pointer-events-none z-1\" />\n <div className=\"pr-4 h-[calc(100svh-16*var(--spacing))] overflow-y-scroll overflow-x-hidden relative z-10\">\n <ul className={cmMerge('menu w-full px-0 py-5 li:last-child:border-0')}>\n {sections.map((section) => (\n <SidebarSectionGroup\n key={section.id}\n section={section}\n currentHref={currentHref}\n activeSectionId={activeSectionId}\n />\n ))}\n </ul>\n </div>\n </div>\n </aside>\n )\n}\n","import type { ResolvedSidebarGroup, ResolvedSidebarNode } from '../../../docs/types.js'\n\nexport const containsActiveHref = (items: ResolvedSidebarNode[], currentHref: string): boolean => {\n return items.some((item) => {\n if (item.kind === 'page') {\n return item.href === currentHref\n }\n\n return item.href === currentHref || containsActiveHref(item.items, currentHref)\n })\n}\n\nexport const hasActiveItem = (items: ResolvedSidebarNode[], activeHref: string) => containsActiveHref(items, activeHref)\n\nexport const getVisibleNavItems = (items: ResolvedSidebarNode[]) => items.filter((item) => item.showInNav)\n\nexport const getVisibleGroupItems = (group: ResolvedSidebarGroup) => {\n const visibleItems = getVisibleNavItems(group.items)\n\n if (!group.href) {\n return visibleItems\n }\n\n return visibleItems.filter((item): item is ResolvedSidebarNode => {\n if (item.kind !== 'page') {\n return true\n }\n\n return item.href !== group.href\n })\n}\n\nexport const getGroupHref = (group: ResolvedSidebarGroup): string | null => group.href ?? null\n","import cm, { cmMerge } from '@classmatejs/react'\nimport { TableOfContentsIcon } from 'lucide-react'\nimport type { Dispatch, SetStateAction } from 'react'\nimport { useEffect, useState } from 'react'\nimport { useData } from 'vike-react/useData'\nimport type { DocHeading, DocPageData, ResolvedDocsPartnersConfig } from '../../../docs/types.js'\nimport { createHeadingSlugger, normalizeHeadingTitle } from '../../../docs/docHeadings.js'\n\nconst getCurrentHash = () => {\n try {\n return decodeURIComponent(window.location.hash)\n } catch {\n return window.location.hash\n }\n}\n\nconst getHeadingElements = () => {\n const root = document.querySelector('[data-doc-content]')\n if (!(root instanceof HTMLElement)) {\n return []\n }\n\n return Array.from(root.querySelectorAll('h2, h3, h4')).filter(\n (element): element is HTMLHeadingElement => element instanceof HTMLHeadingElement,\n )\n}\n\nconst areHeadingsEqual = (left: DocHeading[], right: DocHeading[]) => {\n if (left.length !== right.length) {\n return false\n }\n\n return left.every((heading, index) => {\n const other = right[index]\n return (\n other !== undefined && heading.depth === other.depth && heading.id === other.id && heading.title === other.title\n )\n })\n}\n\nconst syncHeadingsFromDom = (setDomHeadings: Dispatch<SetStateAction<DocHeading[]>>) => {\n const root = document.querySelector('[data-doc-content]')\n if (!(root instanceof HTMLElement)) {\n return\n }\n\n const slugify = createHeadingSlugger()\n const nextHeadings = Array.from(root.querySelectorAll('h2, h3, h4'))\n .map((element) => {\n const title = normalizeHeadingTitle(element.textContent ?? '')\n if (!title) {\n return null\n }\n\n element.classList.add('scroll-mt-24')\n\n const id = element.id || slugify(title)\n if (!element.id) {\n element.id = id\n }\n\n return {\n depth: Number(element.tagName.slice(1)),\n id,\n title,\n } satisfies DocHeading\n })\n .filter((heading): heading is DocHeading => heading !== null)\n\n setDomHeadings((currentHeadings) => {\n if (areHeadingsEqual(currentHeadings, nextHeadings)) {\n return currentHeadings\n }\n\n return nextHeadings\n })\n}\n\nconst updateActiveHeadingFromScroll = (setActiveHeadingId: (value: string) => void) => {\n const headingElements = getHeadingElements()\n if (headingElements.length === 0) {\n return\n }\n\n const activationOffset = 144\n let nextActiveHeadingId = headingElements[0]?.id ?? ''\n\n for (const heading of headingElements) {\n if (!heading.id) {\n continue\n }\n\n if (heading.getBoundingClientRect().top <= activationOffset) {\n nextActiveHeadingId = heading.id\n continue\n }\n\n break\n }\n\n const lastHeading = headingElements.at(-1)\n if (lastHeading?.id && window.innerHeight + window.scrollY >= document.documentElement.scrollHeight - 8) {\n nextActiveHeadingId = lastHeading.id\n }\n\n setActiveHeadingId(nextActiveHeadingId)\n}\n\ninterface TableOfContentsProps {\n headings: DocHeading[]\n partners: ResolvedDocsPartnersConfig\n}\n\nexport const TableOfContents = ({ headings, partners }: TableOfContentsProps) => {\n const [activeHeadingId, setActiveHeadingId] = useState('')\n const [domHeadings, setDomHeadings] = useState<DocHeading[]>(headings)\n const effectiveHeadings = domHeadings.length > 0 ? domHeadings : headings\n const { page } = useData() as DocPageData\n\n useEffect(() => {\n let scrollFrame = 0\n\n const syncActiveHeading = () => {\n if (scrollFrame) {\n return\n }\n\n scrollFrame = window.requestAnimationFrame(() => {\n scrollFrame = 0\n updateActiveHeadingFromScroll(setActiveHeadingId)\n })\n }\n\n const updateHash = () => {\n const currentHash = getCurrentHash().replace(/^#/, '')\n if (currentHash !== '') {\n setActiveHeadingId(currentHash)\n return\n }\n\n syncActiveHeading()\n }\n\n updateHash()\n queueMicrotask(() => {\n syncHeadingsFromDom(setDomHeadings)\n syncActiveHeading()\n })\n\n window.addEventListener('hashchange', updateHash)\n window.addEventListener('scroll', syncActiveHeading, { passive: true })\n window.addEventListener('resize', syncActiveHeading)\n\n return () => {\n if (scrollFrame) {\n window.cancelAnimationFrame(scrollFrame)\n }\n\n window.removeEventListener('hashchange', updateHash)\n window.removeEventListener('scroll', syncActiveHeading)\n window.removeEventListener('resize', syncActiveHeading)\n }\n }, [])\n\n useEffect(() => {\n if (typeof window === 'undefined') {\n return\n }\n\n setDomHeadings((currentHeadings) => {\n if (areHeadingsEqual(currentHeadings, headings)) {\n return currentHeadings\n }\n\n return headings\n })\n setActiveHeadingId('')\n\n queueMicrotask(() => {\n syncHeadingsFromDom(setDomHeadings)\n updateActiveHeadingFromScroll(setActiveHeadingId)\n })\n }, [headings])\n\n return (\n <aside className={cmMerge(page.tableOfContents ? 'w-64' : 'w-32', 'hidden shrink-0 xl:block')}>\n <div className=\"sticky top-16\">\n <div className=\"relative h-[calc(100svh-16*var(--spacing))] overflow-y-auto overflow-x-hidden pt-10 pb-8\">\n {page.tableOfContents\n ? effectiveHeadings.length > 0 && (\n <>\n <p className=\"mb-4 flex items-center gap-2 text-xs font-semibold uppercase tracking-widest text-base-muted\">\n <TableOfContentsIcon className=\"h-3 w-3\" />\n On this page\n </p>\n <nav aria-label=\"On this page\" className=\"mb-12\">\n <ul>\n {effectiveHeadings.map((heading, index) => (\n <li key={heading.id}>\n <a\n href={`#${heading.id}`}\n aria-current={activeHeadingId === heading.id ? 'location' : undefined}\n onClick={() => setActiveHeadingId(heading.id)}\n className={cmMerge(\n 'cursor-pointer block border-l border-base-muted-light py-1.5 text-sm text-base-muted hover:border-primary-muted hover:text-base-content',\n heading.depth > 2 ? 'pl-6' : 'pl-4',\n activeHeadingId\n ? activeHeadingId === heading.id\n ? 'border-l-2 border-primary font-semibold text-base-content'\n : ''\n : index === 0\n ? 'border-l-2 border-primary font-semibold text-base-content'\n : '',\n )}\n >\n {heading.title}\n </a>\n </li>\n ))}\n </ul>\n </nav>\n </>\n )\n : null}\n <Adbar partners={partners} />\n </div>\n </div>\n </aside>\n )\n}\n\nconst Adbar = ({ partners }: { partners: ResolvedDocsPartnersConfig }) => {\n if (partners.primary.length === 0 && partners.gold.length === 0) {\n return null\n }\n\n return (\n <>\n <ul className=\"grid grid-cols-[repeat(auto-fit,minmax(5.5rem,1fr))] gap-3 opacity-90\">\n {partners.primary.map((partner) => (\n <AdbarItem key={partner.name} className=\"col-span-full\">\n <AdbarLink href={partner.href} title={partner.name}>\n <PartnerLogo partner={partner} />\n </AdbarLink>\n </AdbarItem>\n ))}\n {partners.gold.map((partner) => (\n <AdbarItem key={partner.name}>\n <AdbarLink href={partner.href} title={partner.name}>\n <PartnerLogo partner={partner} />\n </AdbarLink>\n </AdbarItem>\n ))}\n </ul>\n <AdbarItem className=\"col-span-full p-2 text-left mt-3 block!\">\n <strong className=\"text-sm tracking-tighter leading-tight mb-1 block\">Your company name here! 💎 </strong>\n <p className=\"text-xs text-base-muted\">\n Hey, this is a classic text ad here!{' '}\n <a href=\"#adlink\" className=\"text-info\">\n link\n </a>{' '}\n to some thing\n </p>\n </AdbarItem>\n </>\n )\n}\n\nconst PartnerLogo = ({\n partner,\n}: {\n partner: ResolvedDocsPartnersConfig['primary'][number] | ResolvedDocsPartnersConfig['gold'][number]\n}) => {\n return (\n <>\n <Image\n src={partner.logoLight}\n width={200}\n height={100}\n alt={partner.logoAlt}\n className={cmMerge('block', partner.logoDark ? 'dark:hidden' : 'dark:invert')}\n />\n {partner.logoDark ? (\n <Image src={partner.logoDark} width={200} height={100} alt={partner.logoAlt} className=\"hidden dark:block\" />\n ) : null}\n </>\n )\n}\n\nconst AdbarItem = cm.div`\n px-5\n py-5\n bg-base-200\n text-center\n flex\n items-center\n justify-center\n rounded-field\n`\n\nconst AdbarLink = cm.a`\n block\n w-full\n transition-opacity\n hover:opacity-100\n focus-visible:opacity-100\n`\n\nconst Image = cm.img`\n mx-auto\n w-24\n`\n","import type {\n UniversalMdxRuntimeValue,\n UniversalResolvedDocLink,\n UniversalResolvedOverviewItem,\n} from '../../mdx/components/types.js'\nimport { withSiteBaseUrl } from '../../shared/assets.js'\nimport type { DocsGlobalContextData } from '../../docs/types.js'\nimport {\n getActiveSectionByPathname,\n getResolvedPageByPathname,\n getResolvedSectionById,\n resolveDocsHref,\n isSamePagePathname,\n} from '../../docs/resolveDocsConfig.js'\nimport { docsCodeBlockChoiceStore } from './store/settings-store.js'\n\nconst isExternalHref = (href: string) => {\n return /^(?:[a-z]+:)?\\/\\//i.test(href) || href.startsWith('mailto:') || href.startsWith('tel:')\n}\n\nconst splitHref = (href: string) => {\n const [pathname, hash = ''] = href.split('#')\n return {\n pathname,\n hash: hash ? `#${hash}` : '',\n }\n}\n\nconst resolveDocLink = (options: {\n docs: DocsGlobalContextData\n currentPathname: string\n href: string\n}): UniversalResolvedDocLink | null => {\n const { currentPathname, href } = options\n if (href.startsWith('#') || isExternalHref(href)) {\n return null\n }\n\n const { pathname, hash } = splitHref(href)\n const docsPathname = resolveDocsHref(options.docs.basePath, pathname)\n\n if (!docsPathname) {\n return null\n }\n\n const page = getResolvedPageByPathname(options.docs, docsPathname)\n if (!page) {\n return null\n }\n\n const section = getResolvedSectionById(options.docs, page.sectionId)\n\n return {\n href: withSiteBaseUrl(`${page.href}${hash}`),\n title: page.title,\n breadcrumb: section ? [section.navTitle] : [],\n isCurrentPage: isSamePagePathname(page, currentPathname),\n }\n}\n\nconst resolveOverviewItem = (options: {\n docs: DocsGlobalContextData\n id: string\n}): UniversalResolvedOverviewItem | null => {\n const page = options.docs.pages.find((candidate) => candidate.id === options.id)\n\n if (!page) {\n return null\n }\n\n return {\n title: page.title,\n href: withSiteBaseUrl(page.href),\n excerpt: page.description ?? null,\n }\n}\n\nexport const getMdxRuntimeValue = (options: {\n docs: DocsGlobalContextData\n currentPathname: string\n}): UniversalMdxRuntimeValue => {\n const { currentPathname, docs } = options\n const activeSection = getActiveSectionByPathname(docs, currentPathname)\n const currentPage = getResolvedPageByPathname(docs, currentPathname)\n\n return {\n locale: 'en',\n codeBlockChoices: docsCodeBlockChoiceStore,\n localizeHref: (href) => {\n if (href.startsWith('#') || isExternalHref(href)) {\n return href\n }\n\n const { pathname, hash } = splitHref(href)\n const docsPathname = resolveDocsHref(docs.basePath, pathname)\n const page = docsPathname ? getResolvedPageByPathname(docs, docsPathname) : null\n\n if (!page) {\n if (docsPathname && !pathname.startsWith('/')) {\n return withSiteBaseUrl(`${docsPathname}${hash}`)\n }\n\n return withSiteBaseUrl(href)\n }\n\n return withSiteBaseUrl(`${page.href}${hash}`)\n },\n resolveDocLink: ({ href }) =>\n resolveDocLink({\n docs,\n currentPathname,\n href,\n }),\n resolveOverviewItem: (id) =>\n resolveOverviewItem({\n docs,\n id,\n }),\n t: (group, key) => {\n if (group === 'docs' && key === 'onThisPage') {\n return 'On this page'\n }\n\n if (group === 'docs' && key === 'previous') {\n return 'Previous'\n }\n\n if (group === 'docs' && key === 'next') {\n return 'Next'\n }\n\n if (group === 'docs' && key === 'currentSection') {\n return activeSection?.navTitle ?? currentPage?.title ?? 'Docs'\n }\n\n return key\n },\n }\n}\n"],"mappings":"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","names":["useState","usePageContext","cm","cmMerge","useEffect","useRef","useState","usePageContext","cmMerge","jsx","jsxs","cmMerge","jsx","jsxs","cmMerge","useEffect","useState","jsx","jsxs","useState","useEffect","cmMerge","useEffect","useState","jsx","jsxs","usePageContext","useState","useRef","useEffect","cmMerge","cm","useEffect","useEffect","jsx","jsxs","usePageContext","useState","Fragment","jsx","jsxs","Fragment","jsx","jsxs","jsx","Fragment","jsx","jsxs","cm","useData","usePageContext","cmMerge","jsx","jsxs","cmMerge","jsx","jsxs","cmMerge","useEffect","create","Fragment","jsx","jsxs","create","useEffect","cmMerge","cm","cmMerge","useEffect","useState","Fragment","jsx","jsxs","useState","useEffect","cmMerge","cm","jsx","jsxs","usePageContext","useData"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/runtime/node/codegen.ts","../src/runtime/node/loadDocsConfig.ts","../src/runtime/node/scaffold.ts"],"sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\nimport type { DocPageData, DocPageLinkData, DocsConfig, DocsGlobalContextData } from '../../docs/types.js'\nimport { extractDocHeadings } from '../../docs/docHeadings.js'\nimport { getResolvedPageById, resolveDocsConfig } from '../../docs/resolveDocsConfig.js'\n\nconst GENERATED_DIRNAME = '(nivel-generated)'\n\nconst writeFileIfChanged = (filePath: string, source: string) => {\n const current = fs.existsSync(filePath) ? fs.readFileSync(filePath, 'utf8') : null\n if (current === source) {\n return\n }\n\n fs.mkdirSync(path.dirname(filePath), { recursive: true })\n fs.writeFileSync(filePath, source)\n}\n\nconst toPosix = (value: string) => value.split(path.sep).join(path.posix.sep)\n\nconst getRelativeImportPath = (fromDirectory: string, toFile: string) => {\n const relativePath = toPosix(path.relative(fromDirectory, toFile))\n if (relativePath.startsWith('.')) {\n return relativePath\n }\n return `./${relativePath}`\n}\n\nconst serializeData = (data: DocPageData | DocsGlobalContextData) => JSON.stringify(data, null, 2)\n\nconst collectFiles = (directoryPath: string): string[] => {\n if (!fs.existsSync(directoryPath)) {\n return []\n }\n\n const entries = fs.readdirSync(directoryPath, { withFileTypes: true })\n\n return entries.flatMap((entry) => {\n const entryPath = path.join(directoryPath, entry.name)\n return entry.isDirectory() ? collectFiles(entryPath) : [entryPath]\n })\n}\n\nconst removeEmptyDirectories = (directoryPath: string, rootPath: string) => {\n if (!fs.existsSync(directoryPath)) {\n return\n }\n\n for (const entry of fs.readdirSync(directoryPath, { withFileTypes: true })) {\n if (!entry.isDirectory()) {\n continue\n }\n\n removeEmptyDirectories(path.join(directoryPath, entry.name), rootPath)\n }\n\n if (directoryPath === rootPath) {\n return\n }\n\n if (fs.readdirSync(directoryPath).length === 0) {\n fs.rmdirSync(directoryPath)\n }\n}\n\nconst getGeneratedPageSource = (contentImportPath: string) => {\n return [\n \"import { DocsPage } from '@unterberg/nivel/client'\",\n `import Content from ${JSON.stringify(contentImportPath)}`,\n '',\n 'const Page = () => {',\n ' return <DocsPage Content={Content} />',\n '}',\n '',\n 'export default Page',\n '',\n ].join('\\n')\n}\n\nconst getGeneratedDataSource = (data: DocPageData) => {\n return [\n \"import type { DocPageData } from '@unterberg/nivel'\",\n '',\n `const data: DocPageData = ${serializeData(data)}`,\n '',\n 'const pageData = () => {',\n ' return data',\n '}',\n '',\n 'export default pageData',\n '',\n ].join('\\n')\n}\n\nconst getGeneratedGlobalContextSource = (data: DocsGlobalContextData) => {\n return [\n \"import type { DocsGlobalContextData } from '@unterberg/nivel'\",\n '',\n `const docsGlobalContextData: DocsGlobalContextData = ${serializeData(data)}`,\n '',\n 'export { docsGlobalContextData }',\n '',\n ].join('\\n')\n}\n\nconst getRouteString = (href: string) => {\n if (href === '/') {\n return href\n }\n\n return href.replace(/\\/+$/g, '')\n}\n\nconst getGeneratedRouteSource = (href: string) => {\n return [`export default ${JSON.stringify(getRouteString(href))}`, ''].join('\\n')\n}\n\nconst getGeneratedTextExport = (value: string) => {\n return [`export default ${JSON.stringify(value)}`, ''].join('\\n')\n}\n\nconst toDocPageLinkData = (\n page:\n | {\n id: string\n title: string\n href: string\n documentTitle: string\n }\n | undefined,\n): DocPageLinkData | null => {\n if (!page) {\n return null\n }\n\n return {\n id: page.id,\n title: page.title,\n href: page.href,\n documentTitle: page.documentTitle,\n }\n}\n\nexport const getGeneratedPagesRoot = (rootDir: string) => path.join(rootDir, 'pages', GENERATED_DIRNAME)\n\nexport type DocsSourcePaths = {\n contentRootPath: string\n docsConfigPath: string\n docsGraphPath: string\n generatedRootPath: string\n}\n\nconst getDocsConfigPath = (rootDir: string) => path.join(rootDir, 'pages', '+docs.ts')\n\nconst getDocsGraphPath = (rootDir: string) => path.join(rootDir, 'docs', 'docs.graph.ts')\n\nexport const getDocsSourcePaths = (options: { rootDir: string; docsConfig: DocsConfig }): DocsSourcePaths => {\n const resolved = resolveDocsConfig(options.docsConfig)\n\n return {\n contentRootPath: path.join(options.rootDir, resolved.contentDir),\n docsConfigPath: getDocsConfigPath(options.rootDir),\n docsGraphPath: getDocsGraphPath(options.rootDir),\n generatedRootPath: getGeneratedPagesRoot(options.rootDir),\n }\n}\n\nexport const isDocsSourcePath = (filePath: string, docsSourcePaths: DocsSourcePaths) => {\n const normalized = toPosix(filePath)\n const generatedRootPath = toPosix(docsSourcePaths.generatedRootPath)\n const docsConfigPath = toPosix(docsSourcePaths.docsConfigPath)\n const docsGraphPath = toPosix(docsSourcePaths.docsGraphPath)\n const contentRootPath = toPosix(docsSourcePaths.contentRootPath)\n\n if (normalized.startsWith(generatedRootPath)) {\n return false\n }\n\n return (\n normalized === docsConfigPath ||\n normalized === docsGraphPath ||\n normalized === contentRootPath ||\n normalized.startsWith(`${contentRootPath}/`)\n )\n}\n\nexport const syncGeneratedDocsPages = (options: { rootDir: string; docsConfig: DocsConfig }) => {\n const { rootDir, docsConfig } = options\n const resolved = resolveDocsConfig(docsConfig)\n const generatedPagesRoot = getGeneratedPagesRoot(rootDir)\n const docsContentRoot = path.join(rootDir, resolved.contentDir)\n const expectedFiles = new Set<string>()\n const globalContextFilePath = path.join(generatedPagesRoot, '_docsGlobalContext.ts')\n\n fs.mkdirSync(generatedPagesRoot, { recursive: true })\n\n const globalContextData: DocsGlobalContextData = {\n siteTitle: resolved.siteTitle,\n basePath: resolved.basePath,\n theme: resolved.theme,\n footer: resolved.footer,\n brand: resolved.brand,\n head: resolved.head,\n partners: resolved.partners,\n algolia: resolved.algolia,\n pages: resolved.pages,\n navbarItems: resolved.navbarItems,\n sidebarSections: resolved.sections,\n }\n\n writeFileIfChanged(globalContextFilePath, getGeneratedGlobalContextSource(globalContextData))\n expectedFiles.add(globalContextFilePath)\n\n for (const [pageIndex, page] of resolved.pages.entries()) {\n const contentFilePath = path.join(docsContentRoot, page.source)\n\n if (!fs.existsSync(contentFilePath)) {\n throw new Error(`Docs page \"${page.id}\" points to missing source file: ${contentFilePath}`)\n }\n\n const pageSource = fs.readFileSync(contentFilePath, 'utf8')\n const data: DocPageData = {\n page: getResolvedPageById(resolved, page.id),\n headings: extractDocHeadings(pageSource),\n previousPage: toDocPageLinkData(resolved.pages[pageIndex - 1]),\n nextPage: toDocPageLinkData(resolved.pages[pageIndex + 1]),\n }\n\n const routeTargets = [\n { routeHref: page.href, routePath: page.slug },\n ...page.aliases.map((routePath, index) => ({\n routeHref: page.aliasHrefs[index] as string,\n routePath,\n })),\n ]\n\n for (const { routeHref, routePath } of routeTargets) {\n const pageDir = path.join(generatedPagesRoot, ...routePath.split('/'))\n const contentImportPath = getRelativeImportPath(pageDir, contentFilePath)\n\n const pageFilePath = path.join(pageDir, '+Page.tsx')\n const dataFilePath = path.join(pageDir, '+data.ts')\n const routeFilePath = path.join(pageDir, '+route.ts')\n const titleFilePath = path.join(pageDir, '+title.ts')\n\n writeFileIfChanged(pageFilePath, getGeneratedPageSource(contentImportPath))\n writeFileIfChanged(dataFilePath, getGeneratedDataSource(data))\n writeFileIfChanged(routeFilePath, getGeneratedRouteSource(routeHref))\n writeFileIfChanged(titleFilePath, getGeneratedTextExport(page.documentTitle))\n\n expectedFiles.add(pageFilePath)\n expectedFiles.add(dataFilePath)\n expectedFiles.add(routeFilePath)\n expectedFiles.add(titleFilePath)\n\n if (page.description) {\n const descriptionFilePath = path.join(pageDir, '+description.ts')\n writeFileIfChanged(descriptionFilePath, getGeneratedTextExport(page.description))\n expectedFiles.add(descriptionFilePath)\n }\n }\n }\n\n for (const filePath of collectFiles(generatedPagesRoot)) {\n if (expectedFiles.has(filePath)) {\n continue\n }\n\n fs.rmSync(filePath, { force: true })\n }\n\n removeEmptyDirectories(generatedPagesRoot, generatedPagesRoot)\n}\n","import path from 'node:path'\nimport type { DocsConfig } from '../../docs/types.js'\n\nconst getDocsConfigModulePath = (rootDir: string) => {\n return path.join(rootDir, 'pages', '+docs.ts')\n}\n\nconst getDocsConfigFromLoadedModule = (loaded: unknown, modulePath: string) => {\n const docsConfig = (loaded as { default?: DocsConfig }).default\n\n if (!docsConfig) {\n throw new Error(`Expected default export from ${modulePath}`)\n }\n\n return docsConfig\n}\n\nexport const loadDocsConfig = async (options: {\n rootDir: string\n loadModule: (modulePath: string) => Promise<unknown>\n}) => {\n const modulePath = getDocsConfigModulePath(options.rootDir)\n const loaded = await options.loadModule(modulePath)\n return getDocsConfigFromLoadedModule(loaded, modulePath)\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nconst MANAGED_SCRIPT_NAMES = ['generate:docs', 'predev', 'prebuild', 'pretypecheck'] as const\n\nconst REQUIRED_DEPENDENCIES = ['@unterberg/nivel', 'react', 'react-dom', 'vike', 'vike-react'] as const\nconst REQUIRED_DEV_DEPENDENCIES = ['vite', 'typescript', '@types/react', '@types/react-dom'] as const\n\ntype InitConsumerOptions = { force: boolean; rootDir: string }\n\ntype InitConsumerResult = {\n allDependenciesPresent: boolean\n createdFiles: string[]\n missingDependencies: string[]\n overwrittenFiles: string[]\n skippedFiles: string[]\n updatedScripts: string[]\n}\n\ntype PackageJsonShape = {\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n packageManager?: string\n scripts?: Record<string, string>\n}\n\nconst getDocsConfigTemplate = () => {\n return [\n \"import { defineDocsConfig } from '@unterberg/nivel/config'\",\n \"import { docsGraph } from '../docs/docs.graph'\",\n '',\n 'const docsConfig = defineDocsConfig({',\n ' graph: docsGraph,',\n \" siteTitle: 'My Docs',\",\n \" siteDescription: 'Documentation site powered by @unterberg/nivel.',\",\n \" basePath: '/docs',\",\n '})',\n '',\n 'export default docsConfig',\n '',\n ].join('\\n')\n}\n\nconst getDocsGraphTemplate = () => {\n return [\n \"import { defineDocsGraph } from '@unterberg/nivel/config'\",\n '',\n 'export const docsGraph = defineDocsGraph({',\n ' items: [',\n ' {',\n \" kind: 'section',\",\n \" id: 'docs',\",\n \" title: 'Docs',\",\n ' items: [',\n ' {',\n \" kind: 'page',\",\n \" id: 'gettingStarted',\",\n \" title: 'Getting Started',\",\n \" slug: 'getting-started',\",\n \" source: 'content/getting-started/content.mdx',\",\n \" description: 'Getting started with @unterberg/nivel.',\",\n ' },',\n ' ],',\n ' },',\n ' ],',\n '})',\n '',\n ].join('\\n')\n}\n\nconst getConfigTemplate = () => {\n return [\n \"import nivel from '@unterberg/nivel/vike'\",\n \"import type { Config } from 'vike/types'\",\n \"import vikeReact from 'vike-react/config'\",\n \"import docsConfig from './+docs'\",\n '',\n 'export { config }',\n '',\n \"const themePreference = docsConfig.theme?.defaultPreference ?? 'light'\",\n 'const dataTheme =',\n \" themePreference === 'dark'\",\n \" ? (docsConfig.theme?.dark ?? 'consumer-dark')\",\n \" : (docsConfig.theme?.light ?? 'consumer-light')\",\n '',\n 'const config: Config = {',\n ' ...nivel,',\n ' extends: [vikeReact],',\n ' title: docsConfig.siteTitle,',\n ' description: docsConfig.siteDescription ?? `${docsConfig.siteTitle} documentation`,',\n \" htmlAttributes: { 'data-theme': dataTheme },\",\n \" passToClient: ['docs'],\",\n '',\n ' // User-facing Vike levers stay visible in +config.ts.',\n ' prerender: true,',\n ' // ssr: true,',\n \" // prefetchStaticAssets: 'viewport',\",\n '}',\n '',\n ].join('\\n')\n}\n\nconst getHeadTemplate = () => {\n return [\n \"import { MetaHead } from '@unterberg/nivel/client'\",\n '',\n 'export const Head = () => {',\n ' return <MetaHead />',\n '}',\n '',\n ].join('\\n')\n}\n\nconst getLayoutTemplate = () => {\n return [\n \"import { AppLayout } from '@unterberg/nivel/client'\",\n \"import type { ReactNode } from 'react'\",\n '',\n 'const Layout = ({ children }: { children: ReactNode }) => {',\n ' return <AppLayout>{children}</AppLayout>',\n '}',\n '',\n 'export default Layout',\n '',\n ].join('\\n')\n}\n\nconst getGlobalContextTemplate = () => {\n return [\n \"import { docsGlobalContextData } from './(nivel-generated)/_docsGlobalContext'\",\n '',\n 'export const onCreateGlobalContext = (globalContext: { docs?: typeof docsGlobalContextData }) => {',\n ' globalContext.docs = docsGlobalContextData',\n '}',\n '',\n ].join('\\n')\n}\n\nconst getWrapperTemplate = () => {\n return [\n \"import type { ReactNode } from 'react'\",\n '',\n 'const Wrapper = ({ children }: { children: ReactNode }) => {',\n ' return <>{children}</>',\n '}',\n '',\n 'export default Wrapper',\n '',\n ].join('\\n')\n}\n\nconst getGlobalTypesTemplate = () => {\n return [\n \"declare module '*.mdx' {\",\n \" import type { ComponentType } from 'react'\",\n '',\n ' const MdxComponent: ComponentType',\n ' export default MdxComponent',\n '}',\n '',\n \"declare module '*.css'\",\n '',\n 'declare global {',\n ' namespace Vike {',\n ' interface GlobalContext {',\n \" docs: import('@unterberg/nivel').DocsGlobalContextData\",\n ' }',\n ' }',\n '}',\n '',\n ].join('\\n')\n}\n\nconst getManagedFileEntries = () => {\n return [\n ['pages/+docs.ts', getDocsConfigTemplate()],\n ['docs/docs.graph.ts', getDocsGraphTemplate()],\n ['pages/+config.ts', getConfigTemplate()],\n ['pages/+Head.tsx', getHeadTemplate()],\n ['pages/+Layout.tsx', getLayoutTemplate()],\n ['pages/+onCreateGlobalContext.ts', getGlobalContextTemplate()],\n ['pages/+Wrapper.tsx', getWrapperTemplate()],\n ['global.d.ts', getGlobalTypesTemplate()],\n ] as const\n}\n\nconst getGenerateDocsRunner = (packageJson: PackageJsonShape) => {\n const packageManager = packageJson.packageManager?.trim() ?? ''\n\n if (packageManager.startsWith('pnpm@')) {\n return 'pnpm generate:docs'\n }\n\n if (packageManager.startsWith('npm@')) {\n return 'npm run generate:docs'\n }\n\n return 'npm run generate:docs'\n}\n\nconst getManagedScripts = (packageJson: PackageJsonShape) => {\n const generateDocsRunner = getGenerateDocsRunner(packageJson)\n\n return {\n 'generate:docs': 'nivel prepare',\n predev: generateDocsRunner,\n prebuild: generateDocsRunner,\n pretypecheck: generateDocsRunner,\n } satisfies Record<(typeof MANAGED_SCRIPT_NAMES)[number], string>\n}\n\nconst writeFile = (filePath: string, source: string) => {\n fs.mkdirSync(path.dirname(filePath), { recursive: true })\n fs.writeFileSync(filePath, source)\n}\n\nconst writeManagedFile = (\n rootDir: string,\n relativeFilePath: string,\n source: string,\n force: boolean,\n result: InitConsumerResult,\n) => {\n const filePath = path.join(rootDir, relativeFilePath)\n const exists = fs.existsSync(filePath)\n\n if (exists && !force) {\n result.skippedFiles.push(relativeFilePath)\n return\n }\n\n writeFile(filePath, source)\n\n if (exists) {\n result.overwrittenFiles.push(relativeFilePath)\n return\n }\n\n result.createdFiles.push(relativeFilePath)\n}\n\nconst readPackageJson = (rootDir: string) => {\n const packageJsonPath = path.join(rootDir, 'package.json')\n\n if (!fs.existsSync(packageJsonPath)) {\n throw new Error(`Expected package.json in ${rootDir}`)\n }\n\n return {\n packageJson: JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')) as PackageJsonShape,\n packageJsonPath,\n }\n}\n\nconst patchPackageScripts = (packageJson: PackageJsonShape, packageJsonPath: string, result: InitConsumerResult) => {\n const scripts = { ...(packageJson.scripts ?? {}) }\n const managedScripts = getManagedScripts(packageJson)\n\n for (const scriptName of MANAGED_SCRIPT_NAMES) {\n if (scripts[scriptName] === managedScripts[scriptName]) {\n continue\n }\n\n scripts[scriptName] = managedScripts[scriptName]\n result.updatedScripts.push(scriptName)\n }\n\n const nextPackageJson = {\n ...packageJson,\n scripts,\n }\n\n fs.writeFileSync(packageJsonPath, `${JSON.stringify(nextPackageJson, null, 2)}\\n`)\n}\n\nconst getMissingDependencies = (packageJson: PackageJsonShape) => {\n const installed = new Set<string>([\n ...Object.keys(packageJson.dependencies ?? {}),\n ...Object.keys(packageJson.devDependencies ?? {}),\n ])\n\n return [...REQUIRED_DEPENDENCIES, ...REQUIRED_DEV_DEPENDENCIES].filter((packageName) => !installed.has(packageName))\n}\n\nexport const getInitSummary = (result: InitConsumerResult) => {\n const lines = ['Initialized nivel consumer scaffolding.']\n\n if (result.createdFiles.length > 0) {\n lines.push(`Created files: ${result.createdFiles.join(', ')}`)\n }\n\n if (result.overwrittenFiles.length > 0) {\n lines.push(`Overwritten files: ${result.overwrittenFiles.join(', ')}`)\n }\n\n if (result.skippedFiles.length > 0) {\n lines.push(`Skipped existing files: ${result.skippedFiles.join(', ')}`)\n }\n\n if (result.updatedScripts.length > 0) {\n lines.push(`Updated package.json scripts: ${result.updatedScripts.join(', ')}`)\n }\n\n if (result.missingDependencies.length > 0) {\n lines.push(`Missing dependencies: ${result.missingDependencies.join(', ')}`)\n lines.push(\n 'Consumer CSS stays hand-authored. Add your stylesheet import manually, for example in pages/+Wrapper.tsx.',\n )\n } else if (!result.allDependenciesPresent) {\n lines.push('Dependency validation completed with warnings.')\n } else {\n lines.push('All required dependencies are already present.')\n }\n\n return `${lines.join('\\n')}\\n`\n}\n\nexport const initConsumer = (options: InitConsumerOptions): InitConsumerResult => {\n const result: InitConsumerResult = {\n allDependenciesPresent: true,\n createdFiles: [],\n missingDependencies: [],\n overwrittenFiles: [],\n skippedFiles: [],\n updatedScripts: [],\n }\n\n const { packageJson, packageJsonPath } = readPackageJson(options.rootDir)\n\n for (const [relativeFilePath, source] of getManagedFileEntries()) {\n writeManagedFile(options.rootDir, relativeFilePath, source, options.force, result)\n }\n\n patchPackageScripts(packageJson, packageJsonPath, result)\n\n result.missingDependencies = getMissingDependencies(packageJson)\n result.allDependenciesPresent = result.missingDependencies.length === 0\n\n return result\n}\n"],"mappings":"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","names":["path","fs","path"]}
|
|
File without changes
|
|
File without changes
|