[project]
site_name = "Kreuzberg"
site_description = "A modern text extraction library supporting PDFs, images, office documents and more"
site_url = "https://docs.kreuzberg.dev"
site_author = "kreuzberg.dev"
repo_name = "kreuzberg-dev/kreuzberg"
repo_url = "https://github.com/kreuzberg-dev/kreuzberg"
edit_uri = "edit/main/docs/"
copyright = "Copyright &copy; 2023-2026 Kreuzberg.dev"

extra_css = ["css/extra.css"]

nav = [
  { "Home" = "index.md" },

  { "Get Started" = [
    { "Installation" = "getting-started/installation.md" },
    { "Quick Start" = "getting-started/quickstart.md" },
    { "Live Demo" = "demo.html" },
  ] },

  { "Guides" = [
    { "Core" = [
      { "Extraction Basics" = "guides/extraction.md" },
      { "Configuration" = "guides/configuration.md" },
      { "Output Formats" = "guides/output-formats.md" },
      { "OCR" = "guides/ocr.md" },
      { "HTML Output" = "guides/html-output.md" },
    ] },
    { "Advanced" = [
      { "Advanced Features" = "guides/advanced.md" },
      { "Keyword Extraction" = "guides/keywords.md" },
      { "Layout Detection" = "guides/layout-detection.md" },
      { "LLM Integration" = "guides/llm-integration.md" },
      { "Code Intelligence" = "guides/code-intelligence.md" },
    ] },
    { "Deployment" = [
      { "Docker" = "guides/docker.md" },
      { "Kubernetes" = "guides/kubernetes.md" },
      { "API Server" = "guides/api-server.md" },
      { "MCP Integration" = "guides/mcp-integration.md" },
      { "AI Coding Assistants" = "guides/agent-skills.md" },
    ] },
    { "Integrations" = [
      { "Overview" = "integrations/index.md" },
      { "Open WebUI" = "integrations/openwebui.md" },
      { "SurrealDB" = "integrations/surrealdb.md" },
    ] },
    { "CLI" = "cli/usage.md" },
    { "Development" = [
      { "Creating Plugins" = "guides/plugins.md" },
      { "Development Workflow" = "guides/development.md" },
    ] },
  ] },

  { "Concepts" = [
    { "Architecture" = "concepts/architecture.md" },
    { "Extraction Pipeline" = "concepts/extraction-pipeline.md" },
    { "Plugin System" = "concepts/plugin-system.md" },
    { "Features" = "features.md" },
  ] },

  { "Reference" = [
    { "API" = [
      { "Python" = "reference/api-python.md" },
      { "TypeScript" = "reference/api-typescript.md" },
      { "WebAssembly" = "reference/api-wasm.md" },
      { "Rust" = "reference/api-rust.md" },
      { "Go" = "reference/api-go.md" },
      { "Java" = "reference/api-java.md" },
      { "Kotlin" = "reference/api-kotlin.md" },
      { "C#" = "reference/api-csharp.md" },
      { "Swift" = "reference/api-swift.md" },
      { "Ruby" = "reference/api-ruby.md" },
      { "PHP" = "reference/api-php.md" },
      { "Elixir" = "reference/api-elixir.md" },
      { "R" = "reference/api-r.md" },
      { "Dart" = "reference/api-dart.md" },
      { "Zig" = "reference/api-zig.md" },
      { "C" = "reference/api-c.md" },
    ] },
    { "Types" = "reference/types.md" },
    { "Configuration" = "reference/configuration.md" },
    { "Errors" = "reference/errors.md" },
    { "Environment Variables" = "reference/environment-variables.md" },
    { "File Size Limits" = "reference/file-size-limits.md" },
    { "Format Support" = "reference/formats.md" },
    { "Benchmarks" = "https://kreuzberg.dev/benchmarks" },
  ] },

  { "More" = [
    { "Comparisons" = [
      { "Overview" = "comparisons/index.md" },
      { "vs Unstructured" = "comparisons/kreuzberg-vs-unstructured.md" },
      { "vs Docling" = "comparisons/kreuzberg-vs-docling.md" },
      { "vs Apache Tika" = "comparisons/kreuzberg-vs-tika.md" },
      { "vs MarkItDown" = "comparisons/kreuzberg-vs-markitdown.md" },
      { "vs MinerU" = "comparisons/kreuzberg-vs-mineru.md" },
    ] },
    { "Migration" = [
      { "From Unstructured" = "migration/from-unstructured.md" },
      { "v4.0 Font Changes" = "migration/v4.0-fonts.md" },
      { "v4.0 HTML Metadata" = "migration/v4.0-html-metadata.md" },
    ] },
    { "Changelog" = "CHANGELOG.md" },
    { "Contributing" = "contributing.md" },
  ] },

  { "Ecosystem" = "ecosystem.md" },
]

[project.theme]
name = "material"
custom_dir = "docs/overrides"
logo = "assets/logo.svg"
favicon = "assets/favicon.ico"
language = "en"
features = [
  "content.code.copy",
  "content.code.annotate",
  "content.tabs.link",
  "navigation.instant",
  "navigation.instant.progress",
  "navigation.path",
  "navigation.prune",
  "navigation.indexes",
  "navigation.sections",
  "navigation.tabs",
  "navigation.tabs.sticky",
  "navigation.tracking",
  "navigation.top",
  "search.highlight",
  "search.share",
  "search.suggest",
  "toc.follow",
  "toc.integrate",
  "announce.dismiss",
]

[project.theme.font]
text = "Inter"
code = "JetBrains Mono"

[project.theme.icon]
repo = "github"
search = "search"

# First palette is the default (dark). Second is light; users can toggle via header.
[[project.theme.palette]]
scheme = "slate"
primary = "custom"
accent = "custom"

[project.theme.palette.toggle]
icon = "sun"
name = "Switch to light mode"

[[project.theme.palette]]
scheme = "default"
primary = "custom"
accent = "custom"

[project.theme.palette.toggle]
icon = "moon"
name = "Switch to dark mode"

# --- Markdown Extensions ---

[project.markdown_extensions.admonition]

[project.markdown_extensions.attr_list]

[project.markdown_extensions.def_list]

[project.markdown_extensions.footnotes]

[project.markdown_extensions.md_in_html]

[project.markdown_extensions.tables]

[project.markdown_extensions.toc]
permalink = true
toc_depth = 3

[project.markdown_extensions.pymdownx.details]

[project.markdown_extensions.pymdownx.emoji]
emoji_index = "zensical.extensions.emoji.twemoji"
emoji_generator = "zensical.extensions.emoji.to_svg"
options = { custom_icons = ["docs/overrides/.icons"] }

[project.markdown_extensions.pymdownx.highlight]
anchor_linenums = true
line_spans = "__span"
pygments_lang_class = true
linenums = false
use_pygments = true

[project.markdown_extensions.pymdownx.inlinehilite]

[project.markdown_extensions.pymdownx.keys]

[project.markdown_extensions.pymdownx.mark]

[project.markdown_extensions.pymdownx.smartsymbols]

[project.markdown_extensions.pymdownx.snippets]
base_path = [".", "docs"]
check_paths = true

[project.markdown_extensions.pymdownx.superfences]
custom_fences = [
  { name = "mermaid", class = "mermaid", format = "pymdownx.superfences.fence_code_format" },
]

[project.markdown_extensions.pymdownx.tabbed]
alternate_style = true
combine_header_slug = true

[project.markdown_extensions.pymdownx.tabbed.slugify]
case = "lower"

[project.markdown_extensions.pymdownx.tasklist]
custom_checkbox = true

# --- Plugins ---

[project.plugins.search]

[project.plugins.mkdocstrings]
default_handler = "python"

[project.plugins.mkdocstrings.handlers.python]
paths = ["packages/python"]

[project.plugins.mkdocstrings.handlers.python.options]
show_source = true
show_root_heading = true
heading_level = 2
show_category_heading = true
show_if_no_docstring = false
show_signature_annotations = true
show_submodules = false
docstring_style = "google"
docstring_section_style = "spacy"

# --- Extra ---

[project.extra]

[project.extra.status]
new = "Recently added"
deprecated = "Deprecated"

[project.extra.repo]
stars = true
forks = true

[[project.extra.social]]
icon = "fontawesome/brands/github"
link = "https://github.com/kreuzberg-dev/kreuzberg"
name = "View on GitHub"

[[project.extra.social]]
icon = "fontawesome/brands/python"
link = "https://pypi.org/project/kreuzberg/"
name = "View on PyPI"

[[project.extra.social]]
icon = "fontawesome/brands/docker"
link = "https://github.com/kreuzberg-dev/kreuzberg/pkgs/container/kreuzberg"
name = "View on GitHub Container Registry"

[[project.extra.social]]
icon = "fontawesome/brands/npm"
link = "https://www.npmjs.com/package/kreuzberg"
name = "View on npm"

[[project.extra.social]]
icon = "fontawesome/brands/rust"
link = "https://crates.io/crates/kreuzberg"
name = "View on crates.io"
