///|
/// Run with `moon run cmd/main` from the project root.
fn main {
  let guide : @moondockit.DocPage = {
    title: "Quick Start",
    slug: "quick-start",
    source: "---\norder: 1\ntags: [guide, moonbit]\n---\n# Quick Start\n\nMoonDocKit turns MoonBit package notes into a small documentation site.\n\n- build pages\n- escape HTML\n- generate navigation\n",
  }
  let api : @moondockit.DocPage = {
    title: "API Reference",
    slug: "api",
    source: "---\norder: 2\ntags: [reference]\n---\n# API Reference\n\nUse `build_site_manifest` to generate static output files.\n",
  }
  let site : @moondockit.DocSite = {
    title: "MoonDocKit Demo",
    pages: [guide, api],
  }
  let theme : @moondockit.SiteTheme = {
    background: "#f6f8fc",
    surface: "#ffffff",
    text: "#182235",
    accent: "#0f766e",
    border: "#d8e0ec",
    code_background: "#111827",
    code_text: "#f8fafc",
    sidebar_width_px: 248,
    content_width_px: 860,
  }
  let options : @moondockit.SiteOptions = {
    language: "en",
    description: "MoonDocKit demo documentation site",
    site_url: "https://example.com/moondockit",
    footer: "Generated by `MoonDocKit`",
  }
  let summary = @moondockit.summarize_site(site)
  let metrics = @moondockit.measure_site(site)
  let report = @moondockit.validate_site(site)
  let quality = @moondockit.evaluate_quality(site)
  println("MoonDocKit Demo")
  println(
    "pages: \{summary.page_count}, outputs: \{summary.output_count}, search entries: \{summary.search_entry_count}, tags: \{summary.tag_count}",
  )
  println(
    "metrics: headings=\{metrics.heading_count}, code blocks=\{metrics.code_block_count}, words=\{metrics.word_count}, reading=\{metrics.reading_minutes} min",
  )
  println(
    "diagnostics: \{report.diagnostics.length()}, has errors: \{@moondockit.has_validation_errors(report)}",
  )
  println("quality: passed=\{quality.passed}, score=\{quality.score}")
  let manifest = @moondockit.build_site_manifest_with_options(
    site, theme, options,
  )
  let build = @moondockit.inspect_manifest(manifest)
  println(
    "build: files=\{build.file_count}, html=\{build.html_count}, data=\{build.data_count}, bytes=\{build.total_bytes}",
  )
  println("files:")
  for file in manifest {
    println("- \{file.path} (\{file.content.length()} bytes)")
  }
}