API Reference
Úplný přehled všech exportů z balíčku onedocs.
Vstupní body
| Import | Popis |
|---|---|
onedocs |
Hlavní vstup – rozvržení, komponenty, mdxComponents, defineConfig, pomocné funkce pro zdroje |
onedocs/components |
Komponenty Fumadocs UI a také InstallBlock, CodeBlock, Button a Logo |
onedocs/config |
Pomocné funkce konfigurace |
onedocs/source |
Nástroje pro zdroje obsahu |
onedocs/metadata |
Generování metadat |
onedocs/og |
Generování obrázků OpenGraph |
onedocs/llms |
Generování LLMs.txt |
onedocs/seo |
Mapa webu a robots.txt |
onedocs/css/preset.css |
Přednastavení Tailwind CSS |
Rozvržení
DocsLayout
Hlavní obalové rozvržení stránek dokumentace. Poskytuje navigaci v postranním panelu, vyhledávání a přepínač motivu.
import { DocsLayout } from "onedocs";
export default function Layout({ children }: { children: React.ReactNode }) {
return (
<DocsLayout config={config} pageTree={source.pageTree}>
{children}
</DocsLayout>
);
}
Vlastnosti:
config– váš objektOnedocsConfigpageTree– strom stránek ze zdroje (např. e.g,source.pageTree)children– obsah stránky
DocsPage
Obal pro jednotlivé stránky dokumentace. Obaluje Fumadocs UI DocsPage a umístí obsah do DocsBody.
import { DocsPage, mdxComponents } from "onedocs";
import { notFound } from "next/navigation";
export default async function Page(props: {
params: Promise<{ slug?: string[] }>;
}) {
const params = await props.params;
const page = source.getPage(params.slug);
if (!page) notFound();
const MDX = page.data.body;
return (
<DocsPage toc={page.data.toc}>
<MDX components={mdxComponents} />
</DocsPage>
);
}
Vlastnosti:
toc– obsah z dat stránkychildren– obsah MDX- Jakákoli další vlastnost Fumadocs UI
DocsPage, napříkladfull
DocsBody
Vnitřní obal obsahu dokumentace. Interně jej používá DocsPage.
import { DocsBody } from "onedocs";
<DocsBody>
<MDX components={mdxComponents} />
</DocsBody>
HomePage
Kompletní komponenta úvodní stránky s hlavní sekcí, funkcemi a patičkou.
import { HomePage, CTASection } from "onedocs";
export default function Home() {
return (
<HomePage config={config} packageName="my-package">
<CTASection
title="Ready to get started?"
cta={{ label: "Read the Docs", href: "/docs" }}
/>
</HomePage>
);
}
Vlastnosti:
config– váš objektOnedocsConfigpackageName– název balíčku pro instalační blok (volitelné)children– obsah mezi funkcemi a patičkou (volitelné)
Informace o tom, co konfigurace ovládá, najdete v části úvodní stránka a patička.
HomeLayout
Základní rozvržení úvodní stránky (interně jej používá HomePage).
import { HomeLayout } from "onedocs";
<HomeLayout config={config}>
{/* Custom homepage content */}
</HomeLayout>
createBaseOptions
Z konfigurace vytváří možnosti rozvržení Fumadocs UI (název nebo logo navigační lišty, nav.links a odkaz GitHub). Používají jej DocsLayout a HomeLayout; zavolejte jej sami, pokud přímo vykreslujete rozvržení Fumadocs UI.
import { DocsLayout } from "fumadocs-ui/layouts/docs";
import { createBaseOptions } from "onedocs";
<DocsLayout {...createBaseOptions(config)} tree={source.pageTree}>
{children}
</DocsLayout>
Komponenty
InstallBlock
Karty správců balíčků zobrazující instalační příkazy pro npm, yarn, pnpm a bun (npm i, yarn add, pnpm add, bun add). Jde o asynchronní komponentu serveru.
import { InstallBlock } from "onedocs";
<InstallBlock packageName="onedocs" />
Vlastnosti:
packageName– název balíčku npm, který se má nainstalovattitle– nadpis nad kartami (volitelné)description– text nad kartami (volitelné)children– obsah pod kartami (volitelné)
Button
Zaoblený odkaz stylovaný jako primární tlačítko. Má jeden styl.
import { Button } from "onedocs";
<Button href="/docs">Get Started</Button>
Vlastnosti:
href– cíl odkazuchildren– text tlačítkaclassName– další třídy (volitelné)
Logo
Vykreslí světlý i tmavý obrázek a zobrazí ten, který odpovídá aktuálnímu motivu. DocsLayout a HomePage jej používají pro logo se světlou a tmavou variantou.
import { Logo } from "onedocs";
<Logo light="/logo-light.svg" dark="/logo-dark.svg" alt="My Project" className="h-6" />
Vlastnosti:
light– cesta k obrázku pro světlý režimdark– cesta k obrázku pro tmavý režimalt– alternativní text (výchozí:"Logo")className– třídy pro oba obrázky (volitelné)
CTASection
Sekce s výzvou k akci na úvodní stránce.
import { CTASection } from "onedocs";
<CTASection
title="Ready to get started?"
description="Optional description text"
cta={{ label: "Get Started", href: "/docs" }}
/>
Vlastnosti:
title– nadpis sekcedescription– text pod nadpisem (volitelné)cta– konfigurace tlačítka slabelahrefchildren– obsah pod tlačítkem (volitelné)
FontHead
Přednačte proměnné písmo Inter, deklaruje jeho @font-face a nastaví je jako písmo stránky. Přidejte jej do <head> kořenového rozvržení.
import { FontHead } from "onedocs";
<html>
<head>
<FontHead />
</head>
<body>{children}</body>
</html>
Onedocs písmo nedodává. Ve výchozím nastavení FontHead načítá /fonts/InterVariable.woff2, proto soubor umístěte do public/fonts/ nebo předejte jiné URL pomocí fontPath:
<FontHead fontPath="/assets/Inter.woff2" />
GitHubIcon
Komponenta ikony GitHub (interně používaná v navigaci).
import { GitHubIcon } from "onedocs";
<GitHubIcon className="size-5" />
CodeBlock
Blok kódu se zvýrazněnou syntaxí, kterou na serveru zajišťuje Shiki prostřednictvím Fumadocs. Jde o asynchronní komponentu serveru.
import { CodeBlock } from "onedocs";
<CodeBlock lang="tsx" code="const x = 1;" />
Konfigurace
defineConfig
Pomocná funkce pro typově bezpečnou konfiguraci.
import { defineConfig } from "onedocs/config";
export default defineConfig({
title: "My Docs",
// ... other options
});
OnedocsConfig
Typ TypeScript pro konfiguraci.
import type { OnedocsConfig } from "onedocs/config";
const config: OnedocsConfig = {
title: "My Docs",
};
Všechny možnosti najdete v části Konfigurace.
Pomocné funkce pro zdroje
loader
Znovu exportovaný loader fumadocs-core/source pro vytváření zdrojů obsahu.
import { loader } from "onedocs/source";
export const source = loader({
baseUrl: "/docs",
source: docs.toFumadocsSource(),
});
createSource
Pomocná funkce pro vytváření zdroje obsahu (obal kolem loaderu). Základní URL má výchozí hodnotu /docs.
import { createSource } from "onedocs/source";
import { docs } from "../../.source/server";
export const source = createSource(docs);
// export const source = createSource(docs, { baseUrl: "/guide" });
V 0.1.27 createSource vrací netypovaný zdroj, takže TypeScript hlásí při čtení page.data chyby, například Property 'data' does not exist on type 'unknown' (#4). Do opravy používejte loader, jak je ukázáno výše.
Metadata
createMetadata
Generuje metadata Next.js pro kořenové rozvržení.
import { createMetadata } from "onedocs/metadata";
export const metadata = createMetadata(config, {
baseUrl: "https://example.com",
});
Možnosti:
baseUrl– základní URL vašeho webu (volitelné)additional– další poleMetadatasloučená jako poslední (volitelné)
Vrací: objekt Next.js Metadata obsahující:
- Název (
config.title) a šablonu názvu (%s | Site Name) - Popis
- Ikonu webu z
config.icon, pokud je nastavena - Pokud je nastavena možnost
baseUrl:metadataBase, metadata OpenGraph a kartu Twittersummary_large_image
createDocsPageMetadata
Generuje metadata názvu a popisu stránky dokumentace. Přijímá jeden objekt s title a volitelným description.
import { createDocsPageMetadata } from "onedocs/metadata";
import { notFound } from "next/navigation";
export async function generateMetadata(props: {
params: Promise<{ slug?: string[] }>;
}) {
const params = await props.params;
const page = source.getPage(params.slug);
if (!page) notFound();
return createDocsPageMetadata({
title: page.data.title,
description: page.data.description,
});
}
Informace o obrázku Open Graph pro jednotlivé stránky najdete v části Dynamické obrázky OG.
Obrázky OpenGraph
createRootOGImage
Vytváří obrázek OG pro úvodní stránku: vaše logo uprostřed černého pozadí.
// src/app/opengraph-image.tsx
import {
createRootOGImage,
loadPublicFile,
ogImageSize,
ogImageContentType,
type OGImageLogo,
} from "onedocs/og";
export const size = ogImageSize;
export const contentType = ogImageContentType;
export default async function Image() {
const logo = await loadPublicFile("logo-dark.svg");
return createRootOGImage(logo as OGImageLogo);
}
createDocsOGImage
Vytváří obrázek OG pro stránky dokumentace: logo vlevo nahoře a název bílým písmem na černém pozadí. Argument písma je volitelný; bez něj se název zobrazí systémovým písmem.
// src/app/docs/opengraph-image.tsx
import {
createDocsOGImage,
loadPublicFile,
loadInterFont,
ogImageSize,
ogImageContentType,
type OGImageLogo,
} from "onedocs/og";
export const size = ogImageSize;
export const contentType = ogImageContentType;
export default async function Image() {
const [logo, font] = await Promise.all([
loadPublicFile("logo-dark.svg"),
loadInterFont(),
]);
return createDocsOGImage("Documentation", logo as OGImageLogo, font);
}
Dynamické obrázky OG
Obrázky OG pro jednotlivé stránky poskytujte přes routu. Stránky na tuto routu automaticky neodkazují: přidejte ji sami do metadat každé stránky, například pomocí openGraph: { images: "/docs/og/getting-started" } vedle polí z createDocsPageMetadata.
// src/app/docs/og/[...slug]/route.tsx
import {
createDocsOGImage,
loadPublicFile,
loadInterFont,
type OGImageLogo,
} from "onedocs/og";
import { source } from "@/lib/source";
export async function GET(
_request: Request,
{ params }: { params: Promise<{ slug: string[] }> }
) {
const { slug } = await params;
const page = source.getPage(slug);
const title = page?.data.title ?? "Documentation";
const [logo, font] = await Promise.all([
loadPublicFile("logo-dark.svg"),
loadInterFont(),
]);
return createDocsOGImage(title, logo as OGImageLogo, font);
}
Pomocné funkce
| Funkce | Popis |
|---|---|
loadPublicFile(path) |
Načte soubor z public/ jako data URL a buffer; u souborů SVG také načte atributy width a height |
loadInterFont(path?) |
Načte písmo z public/ pro obrázky OG, ve výchozím nastavení fonts/Inter-Medium.ttf |
ogImageSize |
Standardní rozměry obrázku OG { width: 1200, height: 630 } |
ogImageContentType |
Typ MIME "image/png" |
Požadované soubory:
public/logo-dark.svg– logo pro obrázky OG. Pomocné funkce OG určují jeho velikost podle atributůwidthaheight, takže značka<svg>musí obsahovat obě hodnoty jako prostá čísla.public/fonts/Inter-Medium.ttf– písmo pro nadpisy. Onedocs jej nedodává.
LLMs.txt
Generuje soubory LLMs.txt pro asistenty AI.
generateLLMsText
Generuje stručný obsah LLMs.txt. Přijímá zdroj obalený pomocí createLLMsSource a { title, description? } a vrací promise.
// src/app/llms.txt/route.ts
import { createLLMsSource, generateLLMsText } from "onedocs/llms";
import { source } from "@/lib/source";
export async function GET() {
const content = await generateLLMsText(createLLMsSource(source), {
title: "My Project",
description: "Project description",
});
return new Response(content, {
headers: { "Content-Type": "text/plain; charset=utf-8" },
});
}
Adresy URL stránek se zapisují stejně jako ve zdroji, například /docs/getting-started, bez domény.
generateLLMsFullText
Generuje úplný obsah LLMs.txt včetně celého obsahu stránek. Přijímá pouze obalený zdroj a vrací promise.
// src/app/llms-full.txt/route.ts
import { createLLMsSource, generateLLMsFullText } from "onedocs/llms";
import { source } from "@/lib/source";
export async function GET() {
const content = await generateLLMsFullText(createLLMsSource(source));
return new Response(content, {
headers: { "Content-Type": "text/plain; charset=utf-8" },
});
}
Těla stránek se zahrnou pouze tehdy, když je zapnutá možnost includeProcessedMarkdown v Fumadocs MDX; viz SEO a vyhledávání.
createLLMsSource
Obalí zdroj Fumadocs (výsledek loader() nebo createSource()) do struktury, kterou čtou obě výše uvedené funkce: každá stránka má URL, název, popis a načítací funkce textu.
SEO
generateSitemap
Generuje mapu webu pro vaši dokumentaci. Přijímá jeden objekt: baseUrl, seznam pages (obvykle z meta.json) a volitelné docsPath (výchozí /docs).
// src/app/sitemap.ts
import { generateSitemap } from "onedocs/seo";
import meta from "../../content/docs/meta.json";
export default function sitemap() {
return generateSitemap({
baseUrl: "https://example.com",
pages: meta.pages ?? [],
});
}
Informace o tom, jak se položky mění na adresy URL, najdete v části SEO a vyhledávání.
generateRobots
Generuje obsah robots.txt: povolí vše a přidá řádky Host a Sitemap. Výchozí hodnota sitemapPath je /sitemap.xml.
// src/app/robots.ts
import { generateRobots } from "onedocs/seo";
export default function robots() {
return generateRobots({
baseUrl: "https://example.com",
});
}
Přednastavení CSS
Importujte přednastavení CSS do svého globals.css:
@import "onedocs/css/preset.css";
@source "./**/*.tsx";
@source "../../content/**/*.mdx";
Cesty @source jsou relativní vůči src/app/globals.css.
Přednastavení obsahuje:
- Tailwind CSS v4 (
tailwindcssa@tailwindcss/postcssnainstalujte sami) - Neutrální motiv Fumadocs
- Styly přednastavení Fumadocs
--font-sansnastavené na proměnnou--font-interdefinovanou vFontHead- Funkce OpenType písmu Inter pro základní text a nadpisy
- Styly rozvržení na celou výšku a úpravy rozvržení Onedocs
Komponenty MDX
Export mdxComponents rozprostře výchozí komponenty Fumadocs UI MDX a přidá níže uvedené komponenty:
import { mdxComponents } from "onedocs";
<MDX components={mdxComponents} />
Zahrnuté komponenty:
- Výchozí komponenty Fumadocs UI:
pre(bloky kódu),a,img,h1ažh6(nadpisy s kotvami),table,CodeBlockTab,CodeBlockTabs,CodeBlockTabsList,CodeBlockTabsTrigger,CalloutContainer,CalloutTitle,CalloutDescription Callout– informační, varovná a chybová upozorněníCard,Cards– rozvržení karetTab,Tabs– obsah s kartamiStep,Steps– číslované krokyAccordion,Accordions– sbalitelné sekceFile,Folder,Files– stromové struktury souborůImageZoom– obrázky se zoomemTypeTable– tabulky dokumentace typů
InstallBlock a CodeBlock nejsou zahrnuty; přidejte je sami podle pokynů v části Komponenty.
Příklady použití najdete v části Komponenty.