# Assets

> The Assets root of the Logic column: the overview panel with its five categories and counts, the create and import verbs, the shape every library shares, the three categories a Logic address can name, and where each kind is used.

**Assets** is the last root under the Logic column's "Defined here" caption: the station's own library of presentation material, in five categories that are the root's five children: **Images**, **Icons**, **Colors**, **Symbols** and **Connection types**. It is one library for the whole station, shared by every dashboard, report and symbol, so a name means the same thing on every screen. Reading it needs **View logic**; every change needs **Configure logic**.

## In this group {#in-this-group}

| Page | What it covers |
| --- | --- |
| [Images](assets-images) | Imported PNG and JPG pictures, the product's own images, and the organization logo. |
| [Icons](assets-icons) | The Fluent UI System Icons catalog and your own SVG icons. |
| [Colors](assets-colors) | The named system palette and your own swatches. |
| [Symbols](assets-symbols) | The eleven system symbol libraries, your own symbols, import, export and the inspector. |
| [Connection types](assets-connection-types) | The eight route meanings a dashboard connection carries, with their global color and thickness. |
| [Portable SVG symbols](ganter-symbols) | The authoring reference for the symbol format an import accepts. |

## The Assets root and its overview {#the-assets-root-and-its-overview}

The root row carries the sum of the five categories, and each child row its own count. Selecting the root opens the overview panel, headed "Assets" with the line "Browse the station's images, icons, named colors, process symbols and connection types.", and five cards; pressing a card selects the category's row in the tree and opens its panel.

| Card | The line on the card | What the count is |
| --- | --- | --- |
| Images | Imported pictures and the organization report logo. | Your imported images plus the four images the product seeds. |
| Icons | Fluent glyphs and operator-owned SVG icons. | Every distinct addressable icon, catalog and yours. |
| Colors | Named system colors and operator-defined swatches. | The ten system colors plus yours, minus any system color one of yours overrides. |
| Symbols | Modern symbols for dashboards, labs, connected products, buildings, IT, energy and industry. | The system libraries plus your renderable symbols. |
| Connection types | Global color and thickness for liquid, gas, power, signals and other routes. | Always 8. |

The overview has no verb of its own. The command bar over a category row carries its create and import verbs, drawn only for a role with Configure logic and greyed with the reason while the station is locked, read-only, or busy with another library command:

| Category | Verbs on the bar |
| --- | --- |
| Images | Import image… |
| Icons | New user icon |
| Colors | New color |
| Symbols | New user symbol, Import symbol…, Copy chat instruction (drawn for every role: it only reads) |
| Connection types | None; the panel's own fields edit the eight types |

While a category's editor is open (creating or editing an entry) the bar is not drawn; **Back** returns to the catalog.

## The shape every library shares {#the-shape-every-library-shares}

Each category panel opens with the shared header (the category's mark, name and description) and a pill with its count ("2770 icons"). A line "Updating library…" appears while a command runs, and a caution note explains a read-only surface when the role cannot configure ("Your role can view Logic but cannot configure it (variables, actions, triggers, alarms and assets)."). Below, the panel splits into a catalog column and an inspector, with a divider you can drag (each library keeps its own width in this browser profile); the inspector says "Select an image to inspect its preview and metadata." (each library in its own words) until a card is selected. A library is in one of four modes: **Browse** (nothing selected), **Detail** (a card selected, its inspector open), **Create** or **Edit** (the editor takes the catalog's place).

Above the cards sit the filters: **Origin** (All, System, Mine), **Per page** (24, 48 or 96 cards; 48 to begin with, and each library keeps the size you chose while the page is open), and for Icons and Symbols a **Search** box. A results line says how many entries match ("312 icons") and which are on screen ("49 to 96 of 312"); **Previous**, **Next** and "Page 2 of 7" page through them, and only one page of cards is ever drawn, so the largest catalog costs the same as a handful. Narrowing a filter returns to the first page and drops a selection the filter no longer shows; an empty result offers **Clear filter** or **Clear filters**. A card shows the entry's picture, name and origin (System or Mine); a System entry is read-only, a Mine entry offers **Edit** and **Delete** in its inspector to a configuring role.

Every outcome (created, saved, imported, deleted, refused) is reported in the shell's action feed, never inside the panel.

## What a Logic address can name {#what-a-logic-address-can-name}

Three categories are addressable, under the `Assets` root of the [address space](logic-address-space):

| Address | Value it returns |
| --- | --- |
| `Assets.Images.<name>` | The image's asset id, as text: what an Image-output variable returns |
| `Assets.Icons.<name>` | A Fluent glyph, or the sanitized SVG markup of a user icon |
| `Assets.Colors.<name>` | A hex color such as `#C42B1C` (`Assets.Colors.Red`) |

`<name>` is the sanitized segment of the display name (`Brand light` answers to `Assets.Colors.Brand_light`). A user icon or color whose segment matches a system entry overrides it at the address. Symbols and connection types have no Logic address: a dashboard Symbol component references a symbol as `system:<key>` or `user:<id>`, and a connection stores its type's key.

The three addressable categories are what the presentation [output types](logic-variables#output-types) read: an expression variable declared as Image, Icon or Color returns one of these addresses (`Variables.Level.Value > 50 ? Assets.Colors.Red : Assets.Colors.Green`), the variable editor previews the result live, and the bound [Image](component-image), [Icon](component-icon) or [Symbol](component-symbol) component draws whatever it currently resolves to. That is why the value-to-picture decision lives in a variable and not in the component.

## Where each kind is used {#where-each-kind-is-used}

| Kind | Used by |
| --- | --- |
| Images | The Image dashboard component; the logo of a [report layout](process-reports), which is the organization logo or the image the layout names |
| Icons | The Icon dashboard component and Icon-output variables |
| Colors | Color-output variables, the color inputs of symbols, and every dashboard property that takes a color address |
| Symbols | The Symbol dashboard component and its connections |
| Connection types | Every connection drawn between symbol terminals in the [dashboard editor](view-editor) |

## Limits and refusals {#limits-and-refusals}

The library refuses a blank name, a name whose sanitized segment another entry of the same kind already uses (a product image included), a system entry's rename or delete ("'X' comes with the product, so it cannot be renamed or deleted."), and every change while the station is locked by a run, read-only, or busy with another library command. Deleting an entry never asks what uses it: references degrade to a placeholder or become unresolved, which [Validation](validation) lists. Config backups carry the whole library, the image files included ([Backups](settings-backups)).
