# yaml-language-server: $schema=https://squidfunk.github.io/mkdocs-material/schema.json

site_name: Valinor
site_url: https://valinor.cuyz.io/
repo_url: https://github.com/CuyZ/Valinor
repo_name: CuyZ/Valinor
edit_uri: edit/master/docs/pages/
docs_dir: pages

extra:
  meta:
    title: Valinor • PHP object mapper with strong type support
    description: PHP library that helps to map any input into a strongly-typed value object structure.
    image: img/valinor-banner.png
  social:
    - icon: fontawesome/brands/github
      link: https://github.com/CuyZ
    - icon: fontawesome/solid/globe
      link: https://cuyz.io
  version:
    provider: mike
extra_css:
  - stylesheets/extra.css

plugins:
  - search
  - mike:
      canonical_version: latest/

theme:
  name: material
  custom_dir: overrides
  favicon: img/valinor-icon.svg
  logo: img/valinor-icon.svg
  features:
    - navigation.sections
    - navigation.top
    - navigation.indexes
    - navigation.instant
    - content.code.annotate
  palette:
    - media: "(prefers-color-scheme: light)"
      scheme: default
      primary: teal
      accent: teal
      toggle:
        icon: material/brightness-7
        name: Switch to dark mode
    - media: "(prefers-color-scheme: dark)"
      scheme: slate
      primary: teal
      accent: teal
      toggle:
        icon: material/brightness-4
        name: Switch to light mode

markdown_extensions:
  - meta
  - toc:
      permalink: true
  - pymdownx.highlight:
      anchor_linenums: true
      extend_pygments_lang:
        - name: php
          lang: php
          options:
            startinline: true
  - pymdownx.inlinehilite
  - pymdownx.snippets:
      auto_append:
        - docs/includes/links.md
  - pymdownx.superfences
  - pymdownx.details
  - pymdownx.tabbed:
      alternate_style: true
  - admonition

nav:
  - Introduction: index.md
  - Getting Started: getting-started.md
  - Usage:
      - Object construction: usage/object-construction.md
      - Validation & error handling: usage/validation-and-error-handling.md
      - Type strictness & flexibility: usage/type-strictness-and-flexibility.md
      - Type reference: usage/type-reference.md
  - How-to:
      - Use custom object constructors: how-to/use-custom-object-constructors.md
      - Deal with dates: how-to/deal-with-dates.md
      - Convert input during mapping: how-to/convert-input.md
      - Common converters examples: how-to/common-converters-examples.md
      - Import formatted source: how-to/import-formatted-source.md
      - Infer interfaces: how-to/infer-interfaces.md
      - Map arguments of a callable: how-to/map-arguments-of-a-callable.md
      - Customize error messages: how-to/customize-error-messages.md
  - Serialization:
      - Normalizing data: serialization/normalizer.md
      - Extending the normalizer: serialization/extending-normalizer.md
      - Common transformers examples: serialization/common-transformers-examples.md
      - Normalizing to JSON: serialization/normalizing-json.md
  - Other:
      - Performance & caching: other/performance-and-caching.md
      - App & framework integration: other/app-and-framework-integration.md
      - Static analysis — PHPStan/Psalm: other/static-analysis.md
  - Project:
      - Upgrading: project/upgrading.md
      - Alternatives: project/alternatives.md
      - Changelog: project/changelog.md
      - Credits: project/credits.md
  - Internals:
      - Benchmarks : internals/benchmarks.md
not_in_nav: project/changelog/version-*.md
