site_name: Nessa Language

repo_url: https://github.com/Gabie-of-the-Bo/Nessa-Language/

nav:
  - Home: 'index.md'
  - Tutorial:
    - Getting Started: 
      - Installation: 'pages/tutorial/start/install.md'
      - Creating a Project: 'pages/tutorial/start/create.md'
      - Executing and Profiling: 'pages/tutorial/start/run.md'
      - Installing Libraries: 'pages/tutorial/start/libs.md'
      - Project Files: 'pages/tutorial/start/configuration.md'
    - Step by step:
      - Introduction: 'pages/tutorial/steps/first.md'
      - Type System:
        - Nessa Memory Model: 'pages/tutorial/steps/memory.md'
        - Built-in Basic Types: 'pages/tutorial/steps/builtin.md'
        - References: 'pages/tutorial/steps/references.md'
        - Algebraic Types: 'pages/tutorial/steps/algebraic.md'
        - Other Types: 'pages/tutorial/steps/other.md'
        - Template-based Generics: 'pages/tutorial/steps/templates.md'
        - Structural Types: 'pages/tutorial/steps/structural.md'
        - Binding Rules: 'pages/tutorial/steps/binding.md'
      - The Basics: 'pages/tutorial/steps/basics.md'
      - Functions: 
        - Defining Functions: 'pages/tutorial/steps/def_functions.md'
        - Special Functions: 'pages/tutorial/steps/esp_functions.md'
        - Lambda Expressions: 'pages/tutorial/steps/lambdas.md'
        - Do Blocks: 'pages/tutorial/steps/do_blocks.md'
      - Defining Operators: 'pages/tutorial/steps/operators.md'
      - Defining Classes: 'pages/tutorial/steps/classes.md'
      - Defining Interfaces: 'pages/tutorial/steps/interfaces.md'
      - Extending the Syntax:
        - Nessa Definition Language: 'pages/tutorial/steps/ndl.md'
        - Literals: 'pages/tutorial/steps/literals.md'
        - Function Macros: 'pages/tutorial/steps/fn_macros.md'
        - Expression Macros: 'pages/tutorial/steps/expr_macros.md'
        - Block Macros: 'pages/tutorial/steps/block_macros.md'
        - NDL Macros: 'pages/tutorial/steps/ndl_macros.md'
        - Macro Code Execution: 'pages/tutorial/steps/code_macros.md'
      - Importing Modules: 'pages/tutorial/steps/imports.md'
      - Annotations:
        - Syntax and usage: 'pages/tutorial/steps/annot.md'
        - Testing your modules: 'pages/tutorial/steps/annot_test.md'
        - Documenting your modules: 'pages/tutorial/steps/annot_docs.md'
    - Learn by example:
      - Linked List using ADTs: 'pages/tutorial/examples/linked list.md'
      - Serialization Interface: 'pages/tutorial/examples/serialization.md'
      - Building a Ternary Operator: 'pages/tutorial/examples/ternary.md'
      - List Comprehension Syntax: 'pages/tutorial/examples/comprehension.md'
      - Embedding a Language: 'pages/tutorial/examples/embedding.md'
  - Reference:
    - Funtions:
      - Memory: 'pages/reference/functions/memory.md'
      - Math: 'pages/reference/functions/math.md'
      - Arrays: 'pages/reference/functions/arrays.md'
      - Strings: 'pages/reference/functions/strings.md'
      - I/O: 'pages/reference/functions/io.md'
      - Miscellaneous: 'pages/reference/functions/misc.md'
    - Operators and Operations:
      - Internal: 'pages/reference/operators/internal.md'
      - Math: 'pages/reference/operators/math.md'
      - Logical: 'pages/reference/operators/logical.md'
      - Bitwise: 'pages/reference/operators/bitwise.md'
      - Arrays: 'pages/reference/operators/arrays.md'
    - Interfaces:
      - Iterable: 'pages/reference/interfaces/iterable.md'
      - Printable: 'pages/reference/interfaces/printable.md'
  - Contribute: 'pages/contribute.md'

theme: 
  name: material
  custom_dir: docs/pages/material/overrides
  logo: img/logo_nl_t.png
  favicon: img/logo_nl.png
  font:
    text: Roboto
    code: Roboto Mono
    
  features:
    - navigation.tabs
    - navigation.sections
    - navigation.tracking
    - navigation.top
    - search.suggest
    - search.highlight
    - content.tabs.link
    - header.autohide

  language: en
  
  palette: 
    # Palette toggle for automatic mode
    - media: "(prefers-color-scheme)"
      primary: indigo
      toggle:
        icon: material/brightness-auto
        name: Switch to light mode

    # Palette toggle for light mode
    - scheme: default
      primary: indigo
      media: "(prefers-color-scheme: light)"
      toggle:
        icon: material/brightness-7 
        name: Switch to dark mode

    # Palette toggle for dark mode
    - scheme: slate
      primary: indigo
      media: "(prefers-color-scheme: dark)"
      toggle:
        icon: material/brightness-4
        name: Switch to light mode

extra:
  social:
    - icon: fontawesome/brands/github 
      link: https://github.com/Gabie-of-the-Bo
    - icon: fontawesome/brands/linkedin 
      link: https://www.linkedin.com/in/javier-castillo-delgado-3582b1191/

extra_javascript:
  - 'js/highlight.min.js'
  - 'js/highlightjs-line-numbers.min.js'
  - 'js/fa.min.js'
  - 'js/nessa.js'

extra_css:
  - 'css/main.css'
  - 'css/fa.min.css'
  - 'css/atom-one-dark.css'

plugins:
  - search
  - mermaid2

markdown_extensions:
  - pymdownx.extra
  - pymdownx.superfences:
      custom_fences:
        - name: mermaid
          class: mermaid
          format: !!python/name:mermaid2.fence_mermaid_custom