# Custom

**Custom Menu**: A single complex screen with a title, description and components.

<figure><img src="https://2370433529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSNMJarOe8h60FHMwh6CE%2Fuploads%2FzL7wc216a5Nir8cz4ywB%2Fcustom.PNG?alt=media&#x26;token=6b775ca1-b998-48ba-8530-fc942d101199" alt=""><figcaption></figcaption></figure>

```
menu:
  test_custom:
    type: CUSTOM
    server: Lobby
    title: "Custom Form Example"
    description: "Please provide the following information"
    components:
      name_input:
        type: input
        text: "Enter your name"
        placeholder: "Your name here"
        default: "DefaultName"
        action: "command say Hello $1" # Action for just this input
      age_slider:
        type: slider
        text: "Select your age"
        min: 1
        max: 100
        step: 1
        default: 18
        action: "command say You are $1 years old" # Action for just this slider
      preferences_dropdown:
        type: dropdown
        text: "Select a preference"
        options:
          - "Option 1"
          - "Option 2"
          - "Option 3"
        default: 0
        action: "command say You selected $1" # Action for just this dropdown
      enable_feature_toggle:
        type: toggle
        text: "Enable feature"
        default: false
        action: "command say Feature enabled: $1" # Action for just this toggle
    global_actions:
      - "command say Player $name_input, age $age_slider, selected $preferences_dropdown, feature enabled: $enable_feature_toggle"

```

#### How it works (high-level):

1. **`type: CUSTOM`** – Declares you have a multi-component form. Each component can be an **input**, **slider**, **dropdown**, or **toggle**.
2. **Components** are added under `components:`. Each component has:
   * A **unique key** (like `name_input`, `age_slider`).
   * A **type** (input, slider, dropdown, toggle).
   * **Properties** (e.g., `text`, `placeholder`, `default`, etc.).
   * An optional **`action`** (like `"command say Hello $1"`) that runs _after_ the user completes the form, using that component’s value - see [Actions](..#actions).
3. **Global actions** listed under `global_actions:` are executed _after_ the form is submitted, and can reference each component by `"$componentKey"`. For example, `"$name_input"` is replaced with the user’s typed name.
4. `Description` is what will be shown before the buttons
5. `Permission` custom permission for this menu to be opened
6. (**Proxy Only**) `server` define the server you want this menu to work on
