### Node Types

This section defines how to deal with different kinds of nodes (files, directories, symlinks etc.) based on their properties.

One node can fall into multiple categories. For example, a node can have the extension `md`, and also be a file. In that case, the properties from the more specific category i.e. extension will be used.

This can be configured using the `xplr.config.node_types` Lua API.

#### xplr.config.node_types.directory.style

The style for the directory nodes

Type: Style

#### xplr.config.node_types.directory.meta.icon

Metadata for the directory nodes. You can set as many metadata as you want.

Type: nullable string

Example:

    xplr.config.node_types.directory.meta.foo = "foo"
    xplr.config.node_types.directory.meta.bar = "bar"

#### xplr.config.node_types.file.style

The style for the file nodes.

Type: Style

#### xplr.config.node_types.file.meta.icon

Metadata for the file nodes. You can set as many metadata as you want.

Type: nullable string

Example:

    xplr.config.node_types.file.meta.foo = "foo"
    xplr.config.node_types.file.meta.bar = "bar"

#### xplr.config.node_types.symlink.style

The style for the symlink nodes.

Type: Style

#### xplr.config.node_types.symlink.meta.icon

Metadata for the symlink nodes. You can set as many metadata as you want.

Type: nullable string

Example:

    xplr.config.node_types.symlink.meta.foo = "foo"
    xplr.config.node_types.symlink.meta.bar = "bar"

#### xplr.config.node_types.mime_essence

Metadata and style based on mime types. It is possible to use the wildcard `*` to match all mime sub types. It will be overwritten by the more specific sub types that are defined.

Type: mapping of the following key-value pairs:

- key: string
- value:
  - key: string
  - value: Node Type

Example:

    xplr.config.node_types.mime_essence = {
      application = {
        -- application/*
        ["*"] = { meta = { icon = "a" } },

        -- application/pdf
        pdf = { meta = { icon = "" }, style = { fg = "Blue" } },

        -- application/zip
        zip = { meta = { icon = ""} },
      },
    }

#### xplr.config.node_types.extension

Metadata and style based on extension.

Type: mapping of the following key-value pairs:

- key: string
- value: Node Type

Example:

    xplr.config.node_types.extension.md = { meta = { icon = "" }, style = { fg = "Blue" } }
    xplr.config.node_types.extension.rs = { meta = { icon = "🦀" } }

#### xplr.config.node_types.special

Metadata and style based on special file names.

Type: mapping of the following key-value pairs:

- key: string
- value: Node Type

Example:

    xplr.config.node_types.special["Cargo.toml"] = { meta = { icon = "" } }
    xplr.config.node_types.special["Downloads"] = { meta = { icon = "" }, style = { fg = "Blue" } }