site_name: GeoLibre
site_description: A lightweight, cloud-native GIS platform for visualizing, exploring, and analyzing geospatial data across desktop and web environments, with a responsive layout for mobile screens.
site_url: https://geolibre.app
repo_name: opengeos/GeoLibre
repo_url: https://github.com/opengeos/GeoLibre
edit_uri: edit/main/docs/
# Output directory, set explicitly so the build target stays pinned to `site/`
# (matching the Pages upload paths) rather than relying on the tool's
# default, which a Zensical 0.0.x patch could shift.
site_dir: site

theme:
  name: material
  logo: assets/geolibre-icon.png
  favicon: assets/geolibre-icon.png
  palette:
    - media: "(prefers-color-scheme: light)"
      scheme: default
      primary: teal
      accent: indigo
      toggle:
        icon: material/weather-night
        name: Switch to dark mode
    - media: "(prefers-color-scheme: dark)"
      scheme: slate
      primary: teal
      accent: indigo
      toggle:
        icon: material/weather-sunny
        name: Switch to light mode
  features:
    - navigation.instant
    - navigation.sections
    - navigation.top
    - search.highlight
    - search.share
    - search.suggest
    - toc.follow

nav:
  - Home: index.md
  - Getting Started: getting-started.md
  - Features: features.md
  - Comparison: comparison.md
  - Demos: demos.md
  - Downloads: downloads.md
  - Sponsor: sponsor.md
  # Keep this deployment-relative: production serves at /, while PR previews
  # are nested under /pages-preview/GeoLibre/pr-<number>/.
  - Launch GeoLibre Web: https://web.geolibre.app
  - User Guide:
      - Interface Overview: user-guide/interface.md
      - Rendering Engines: user-guide/rendering-engines.md
      - Projects: user-guide/projects.md
      - Adding Data: user-guide/adding-data.md
      - Supported Data Formats: data-formats.md
      - Chrome Extension: user-guide/chrome-extension.md
      - Managing Layers: user-guide/layers.md
      - Styling Layers: user-guide/styling.md
      - Attribute Table: user-guide/attribute-table.md
      - Map Controls & Tools: user-guide/map-controls.md
      - Processing Tools: user-guide/processing.md
      - AI Segmentation: user-guide/segmentation.md
      - SQL Workspace: user-guide/sql-workspace.md
      - Python Console: user-guide/python-console.md
      - AI Assistant: user-guide/ai-assistant.md
      - Data Integrations: user-guide/data-integrations.md
      - Plugins & Marketplace: user-guide/plugins.md
      - Web Services: user-guide/web-services.md
      - Settings & Preferences: user-guide/settings.md
      - Story Maps: user-guide/storymaps.md
      - Embedding & Sharing: user-guide/embedding.md
      - Troubleshooting: user-guide/troubleshooting.md
  - Tutorials:
      - Overview: tutorials/index.md
      - Video Tutorials: tutorials/videos.md
      - Your First Map: tutorials/first-map.md
      - Cloud-Native Data: tutorials/cloud-native-data.md
      - Vector Analysis: tutorials/vector-analysis.md
      - Terrain Analysis: tutorials/terrain-analysis.md
      - Spatial SQL: tutorials/spatial-sql.md
      - Sharing & Embedding: tutorials/sharing-embedding.md
      - Format Reference: tutorials/supported-formats-en.md
      - Format Reference (中文): tutorials/supported-formats-zh.md
      - Source Code Deep Dive: tutorials/source-code-deep-dive-en.md
      - Source Code Deep Dive (中文): tutorials/source-code-deep-dive-zh.md
  - Reference:
      - Architecture: architecture.md
      - MapLibre Renderer: maplibre-renderer.md
      - Mapbox Renderer: mapbox-renderer.md
      - Cesium Renderer: cesium-renderer.md
      - ArcGIS Renderer: arcgis-renderer.md
      - Self-Hosting: self-hosting.md
      - Server API: server-api.md
      - Android: android.md
      - iOS: ios.md
      - Mac App Store: mac-app-store.md
      - Project Format: project-format.md
      - Plugin API: plugin-api.md
      - Collaboration: collaboration.md
      - UI Profiles: ui-profiles.md
      - Deployment Capabilities: deployment-capabilities.md
      - Internationalization: i18n.md
      - Python Package: python.md
      - R Package: r.md
      - MCP Server: mcp.md
      - Agent Skill: agent-skill.md
      - Notebook Panel: notebook.md
      - Roadmap: roadmap.md
      - Contributing: contributing.md
      - Maintenance Notes: maintenance.md
      - How to Cite: citation.md
      - Acknowledgements: acknowledgements.md
      - Privacy Policy: privacy.md
      - Terms of Service: terms.md

plugins:
  - search

markdown_extensions:
  - admonition
  - attr_list
  - md_in_html
  - toc:
      permalink: true
  - pymdownx.details
  - pymdownx.highlight
  - pymdownx.superfences:
      custom_fences:
        - name: mermaid
          class: mermaid
          format: !!python/name:pymdownx.superfences.fence_code_format
  - pymdownx.tabbed:
      alternate_style: true

extra_css:
  - stylesheets/extra.css

extra:
  # Google Analytics for geolibre.app, configured entirely from the environment
  # so the tracker only loads where a measurement ID is set: the production
  # Pages deploy. A local `zensical build`, a fork, and a PR preview leave these
  # unset and ship no tracker, which is also why the ID is not hard-coded here.
  #
  # `provider` is a second variable because the theme keys the whole integration
  # off it: with a provider and a blank property it would still load gtag.js,
  # pointed at nothing. .github/workflows/pages.yml derives it from
  # GEOLIBRE_GA_MEASUREMENT_ID, so an operator only ever sets that one value.
  analytics:
    provider: !ENV [GEOLIBRE_ANALYTICS_PROVIDER, ""]
    property: !ENV [GEOLIBRE_GA_MEASUREMENT_ID, ""]
  social:
    - icon: fontawesome/brands/github
      link: https://github.com/opengeos/GeoLibre
      name: GeoLibre on GitHub
    - icon: fontawesome/solid/heart
      link: https://github.com/sponsors/giswqs
      name: Sponsor GeoLibre on GitHub
    - icon: fontawesome/solid/mug-hot
      link: https://buymeacoffee.com/giswqs
      name: Buy the maintainer a coffee