> For the complete documentation index, see [llms.txt](https://lt-studios.gitbook.io/lt-studios/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lt-studios.gitbook.io/lt-studios/assets/editor/user-guide/how-to-edit-create-menus/manual-configuration/creating-a-new-menu.md).

# Creating a new Menu

If you prefer to set up menus manually instead of using the [Config Editor](/lt-studios/assets/editor/user-guide/how-to-edit-create-menus/interactive-config-editor.md), you can define your own menu objects directly inside the `Menus` table. This gives you full control over how your menus behave and display.

#### Structure Overview

Each menu is placed under a category (`jobs`, `gangs`, or `other`), and then defined by its group name (like `police`, `lostmc`, etc.). Under that, the menu key (e.g., `main`) contains the configuration.

#### Basic Fields

Here’s what each field inside a menu does:

* `label` – The title shown at the top of the menu.
* `color` – The color of the menu header (in HEX format).
* `data` – The list of attributes to show for each player (referenced by key string).
* `getters` – Functions used to retrieve the values shown in each column.
* `input` – *(optional)*: What and how datasets are editable by the user/boss in the 10System menu.
* `events` – *(optional)*: Click events triggered for each column.
* `anchors` – Determines column alignment (`"left"` or `"right"`).
* `styles` – *(optional)*: Defines styling rules for each dataset in the menu.
* `order` – *(optional)*: Defines how we should organize players in the menu. (by `name`, `callsign`...)
* `filter` – *(optional)*: Function used to show the menu only to players who match a condition.

#### Note

* Indexes in `data`, `getters`, `events`, `anchors`, and `styles` must match.

#### Example

Here's a template for a regular menu, You'd need to decide where to place it according to the menu type:

```lua
['your_menu_name'] = {
  your_menu_id = {
    label = "Your Menu Label",
    color = "#3B82F6",
    data = {
      [1] = 'image',
      [2] = 'name',
      [3] = 'grade',
      [4] = 'callsign',
      [5] = 'radio'
    },
    getters = {
      [1] = Attributes.image,
      [2] = Attributes.name,
      [3] = Attributes.grade,
      [4] = Attributes.callsign,
      [5] = Attributes.radio
    },
    events = {
      [1] = Events.image,
      [2] = Events.name,
      [3] = Events.grade,
      [4] = Events.callsign,
      [5] = Events.radio
    },
    anchors = {
      [1] = "left",
      [2] = "left",
      [3] = "right",
      [4] = "right",
      [5] = "right"
    },
    filter = function(player)
      -- return player.job.name == 'your_job_name'
      return true -- default: allow all players
    end
  }
},
```
