# Icon presets

Icons displayed next to links **Bot / Channel / Support** in the subscription card (mode `liteMode`). The provider selects the icon by key from the preset set — each platform (Android, iOS, Desktop) maps this key to its own native icon.

Why this way instead of an image URL:

* **Consistent appearance across all platforms** — icons from the system set (Material Icons, SF Symbols) adapt to the theme.
* **Zero network requests in the client** — the key is just a string in `settings`.
* **Offline support** — the app works even without a connection to the server.

## Where it is set

The provider selects the icon in [the web panel](https://web.incy-panel.com/) for each domain in the **Lite Mode**block. The values are saved in `SubscriptionSettings`:

| Field            | Type      | Description               |
| ---------------- | --------- | ------------------------- |
| `botIconKey`     | `string?` | Icon key for `botUrl`     |
| `channelIconKey` | `string?` | Icon key for `channelUrl` |
| `supportIconKey` | `string?` | Icon key for `supportUrl` |

Returned to the client via [Premium API](broken://pages/55413640d0975240d1f826f63d0ddeb322f3df1a) in the object `settings`.

## Client behavior

* **Key is set and known** → the client renders the corresponding native icon.
* **Key is empty (`null` / `""`)** → fallback to the default slot icon:
  * `botUrl` → `send` (paper airplane)
  * `channelUrl` → `megaphone` (megaphone)
  * `supportUrl` → `help` (question mark)
* **Key is set, but unknown to the client** (old app version + new key) → fallback to the same default.

## Full list of presets

There are 20 keys in total. The key name is **stable** — once published, a key is not renamed.

### Bot / messages

| Key       | Preview | Purpose                               |
| --------- | :-----: | ------------------------------------- |
| `send`    |    ✈️   | Paper airplane (default for `botUrl`) |
| `bot`     |    🤖   | Robot                                 |
| `chat`    |    💬   | Speech bubble                         |
| `message` |    ✉️   | Envelope (open message)               |
| `mail`    |    📧   | Mail                                  |

### News / broadcasting

| Key         | Preview | Purpose                              |
| ----------- | :-----: | ------------------------------------ |
| `megaphone` |    📢   | Megaphone (default for `channelUrl`) |
| `bell`      |    🔔   | Bell                                 |
| `newspaper` |    📰   | Newspaper                            |
| `rss`       |    📡   | RSS                                  |
| `broadcast` |    📻   | Antenna / radio                      |

### Support / help

| Key        | Preview | Purpose                             |
| ---------- | :-----: | ----------------------------------- |
| `help`     |    ❓    | Question (default for `supportUrl`) |
| `support`  |    🎧   | Support agent                       |
| `lifebuoy` |    🛟   | Lifebuoy                            |
| `info`     |    ℹ️   | Information                         |
| `book`     |    📖   | Book / FAQ                          |

### Accent

| Key      | Preview | Purpose |
| -------- | :-----: | ------- |
| `crown`  |    👑   | Crown   |
| `star`   |    ⭐    | Star    |
| `gem`    |    💎   | Diamond |
| `rocket` |    🚀   | Rocket  |
| `heart`  |    ❤️   | Heart   |

## Mapping to native icons

For reference — which native icons are rendered on each platform. Add / change the mapping simultaneously in all three clients + the web panel.

| Key         | Material Icons (Android / Desktop) | SF Symbols (iOS)                    |
| ----------- | ---------------------------------- | ----------------------------------- |
| `send`      | `Send`                             | `paperplane.fill`                   |
| `bot`       | `SmartToy`                         | `apps.iphone`                       |
| `chat`      | `Chat`                             | `bubble.left.fill`                  |
| `message`   | `Message`                          | `message.fill`                      |
| `mail`      | `Email`                            | `envelope.fill`                     |
| `megaphone` | `Campaign`                         | `megaphone.fill`                    |
| `bell`      | `Notifications`                    | `bell.fill`                         |
| `newspaper` | `Newspaper`                        | `newspaper.fill`                    |
| `rss`       | `RssFeed`                          | `dot.radiowaves.left.and.right`     |
| `broadcast` | `Podcasts`                         | `antenna.radiowaves.left.and.right` |
| `help`      | `HelpOutline`                      | `questionmark.circle`               |
| `support`   | `SupportAgent`                     | `person.fill.questionmark`          |
| `lifebuoy`  | `MedicalServices`                  | `lifepreserver`                     |
| `info`      | `Info`                             | `info.circle`                       |
| `book`      | `MenuBook`                         | `book.fill`                         |
| `crown`     | `EmojiEvents`                      | `crown.fill`                        |
| `star`      | `Star`                             | `star.fill`                         |
| `gem`       | `Diamond`                          | `diamond.fill`                      |
| `rocket`    | `RocketLaunch`                     | `paperplane.fill`                   |
| `heart`     | `Favorite`                         | `heart.fill`                        |

## Example

```json
{
  "settings": {
    "liteMode": true,
    "botUrl": "https://t.me/my_bot",
    "botIconKey": "bot",
    "channelUrl": "https://t.me/my_channel",
    "channelIconKey": "megaphone",
    "supportUrl": "https://t.me/my_support",
    "supportIconKey": "lifebuoy"
  }
}
```

In the subscription card, the user will see three buttons: robot (bot), megaphone (channel), lifebuoy (support).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://incy.gitbook.io/docs/docs-en/premium-api/icon-presets.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
