> For the complete documentation index, see [llms.txt](https://jiffyjrdevelopment.gitbook.io/jiffyjrdevelopmentdocs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jiffyjrdevelopment.gitbook.io/jiffyjrdevelopmentdocs/jiffy-jr-development-docs/jiffy-ui/configuration.md).

# Configuration

All settings live in `config.lua` at the root of the resource. Changes take effect on resource restart.

## Core

| Setting                    | Default     | Description                                               |
| -------------------------- | ----------- | --------------------------------------------------------- |
| `Config.Debug`             | `false`     | Print verbose debug lines to the server console           |
| `Config.Framework`         | `'auto'`    | `'auto'` \| `'qb'` \| `'esx'` \| `'standalone'`           |
| `Config.Accent`            | `'#e63946'` | Default accent color (any valid CSS hex)                  |
| `Config.BackendCheckDelay` | `1500`      | ms to wait after start before resolving backend resources |

## Backends

Choose which resource renders each UI type. If the chosen backend resource is not started, Jiffy falls back to its built-in UI and prints a warning.

```lua
Config.Backends = {
    Notify   = 'jiffy',   -- 'jiffy' | 'ox_lib' | 'qb' | 'okok' | 'none'
    TextUI   = 'jiffy',   -- 'jiffy' | 'ox_lib' | 'jg-textui' | 'none'
    Progress = 'jiffy',   -- 'jiffy' | 'ox_lib' | 'progressbar' | 'none'
    Menu     = 'jiffy',   -- 'jiffy' | 'ox_lib' | 'qb-menu' | 'none'
    Input    = 'jiffy',   -- 'jiffy' | 'ox_lib' | 'qb-input' | 'none'
}
```

## Defaults

Applied during normalization when a caller does not supply the value.

| Setting                             | Default         | Description                                             |
| ----------------------------------- | --------------- | ------------------------------------------------------- |
| `Config.Defaults.NotifyDuration`    | `5000`          | Notification duration in ms                             |
| `Config.Defaults.NotifyPosition`    | `'top-right'`   | Default notify position                                 |
| `Config.Defaults.NotifyType`        | `'info'`        | Default notification type                               |
| `Config.Defaults.TextUIPosition`    | `'left-center'` | Default TextUI anchor                                   |
| `Config.Defaults.ProgressCanCancel` | `true`          | Whether progress bars show the cancel button by default |

## Notifications

| Setting                  | Default | Description                                                                          |
| ------------------------ | ------- | ------------------------------------------------------------------------------------ |
| `Config.Notify.MaxStack` | `5`     | Max notifications visible per position at once. The oldest is removed when exceeded. |

## Sounds

| Setting                 | Default | Description                                           |
| ----------------------- | ------- | ----------------------------------------------------- |
| `Config.Sounds.Enabled` | `true`  | Play a GTA V frontend sound when a notification fires |

Each type (`success`, `error`, `warning`, `info`, `primary`) has its own `name` and `set` you can swap for any valid GTA V audio entry.

## Item Notify

| Setting                             | Default          | Description                                   |
| ----------------------------------- | ---------------- | --------------------------------------------- |
| `Config.ItemNotify.Enabled`         | `true`           | Enable the item notify popup                  |
| `Config.ItemNotify.Position`        | `'bottom-right'` | Stack position                                |
| `Config.ItemNotify.Duration`        | `3500`           | Display duration in ms                        |
| `Config.ItemNotify.InterceptQBCore` | `true`           | Auto-intercept `QBCore:Player:ItemBox` events |

## Announcement

| Setting                           | Default | Description                                               |
| --------------------------------- | ------- | --------------------------------------------------------- |
| `Config.Announce.DefaultDuration` | `8000`  | How long banners stay if no `duration` is passed per call |

## Radial menu

| Setting               | Default              | Description                                        |
| --------------------- | -------------------- | -------------------------------------------------- |
| `Config.Radial.Key`   | `'F1'`               | Default keybind to open the persistent radial menu |
| `Config.Radial.Label` | `'Open Radial Menu'` | Label shown in GTA V keybind settings              |

Set `Key = ''` to disable the built-in keybind entirely.

## Test commands & permissions

| Setting                     | Default           | Description                                         |
| --------------------------- | ----------------- | --------------------------------------------------- |
| `Config.EnableTestCommands` | `false`           | Register all `/jui_*` test commands                 |
| `Config.TestCommandAce`     | `'jiffy-ui.test'` | ACE required to run test commands and `/jui_config` |

`Config.TestCommandGroups` lists FiveM ACE groups that are auto-granted the test ACE on resource start. `group.god` and `group.superadmin` are included by default alongside common QBCore, QBX, and ESX group names.

## Adapters

Toggle individual compatibility layers on or off. All adapters self-guard — if the real resource is running they step aside automatically.

```lua
Config.Adapters = {
    okok        = true,   -- okokNotify events + exports
    brutal      = true,   -- brutal_notify events + exports
    rtx         = true,   -- rtx_notify events + exports
    qb          = true,   -- QBCore:Notify event (see double-notify note in config.lua)
    progressbar = true,   -- progressbar exports
    mythic      = true,   -- mythic_notify events + exports
    esx         = true,   -- ESX notification events
    qbmenu      = true,   -- qb-menu exports
    qbinput     = true,   -- qb-input exports
    oxlib       = false,  -- ox_lib shim (enable only if ox_lib is NOT installed)
    oxlib_live  = true,   -- ox_lib live redirect (requires patch — see Adapters > ox_lib)
    ['17hud']   = true,   -- 17mov_Hud notifications
}
```

{% hint style="warning" %}
Enabling `qb` while qb-core's native notify UI is active causes double notifications. See the comment in `config.lua` for the fix.
{% endhint %}
