---
title: "Feature: Icon content elements"
manual: "Frontend Theme for Extension Development"
version: "main"
source: "Changelog/2.0/Feature-IconContentElements.rst"
modified: "2026-09-17T04:52:50+00:00"
---

# Feature: Icon content elements

## Description

Content elements of the theme's own that show icons of the Font Awesome Free
solid set the theme ships, in the **Theme** group of the
**Create new content element** wizard:

| Content element | Shows |
| --- | --- |
| **Text and icon** | A heading, rich text and a link beside one icon. |
| **Features** | A group of features, each with an icon, a title, a text and a link. |
| **Figures** | A row of figures, each with what it counts, an optional sentence and an optional icon. |
| **Steps** | The numbered steps of a process, each with a title, a text and an optional icon. |

Every icon field offers the curated list of about a hundred icons the other
icon fields of the theme offer - see [Feature: Editors pick an icon by name](Feature-IconPicker.html#feature-icon-picker). The icon is
decoration: the text beside it says what it shows, so a screen reader skips
it.

### Text and icon

The **Icon** palette holds the icon and three choices of how it is
drawn:

| Field | Values |
| --- | --- |
| **Icon position** | **At the start of the line** (the default), **At the end of the line**, **Above the text** |
| **Icon shape** | **Plain** (the default) - the icon in the accent colour; **On a square** and **On a circle** \- the icon on a tile of the accent colour |
| **Icon size** | **Medium** (the default), **Large**, **Extra large** |

The start and the end are those of the line, so in a right-to-left language
the icon of **At the start of the line** is on the right. The heading
takes the alignment and the style of the header palette, the text is rich
text, and the link has the style and the icon of every theme link. An element
without an icon shows its text alone.

The seeded demo tree shows every value on `/elements/theme/text-icon`.

### Features, figures and steps

The three take their items from the inline list the other list based elements
of the theme use, and each item has an **Icon** field there - offered
only in these three elements, which render it.

**Features** has a **Layout** palette with two fields:

| Field | Values |
| --- | --- |
| **Layout** | **Columns, the icon above** (the default), **Hanging icons**, **Tiles**, **With an introduction beside** \- the heading and the text of the element beside the features instead of above them |
| **Columns, at most** | **Two**, **Three** (the default), **Four** \- fewer where a column would be too narrow, one on a phone |

Four columns need the full width of the content: on a page whose backend
layout sets a sub navigation beside the content, the features show three
columns at most.

A feature has a title, a text, an icon and a link with its label and its icon;
the title is required.

A figure of **Figures** has the **Figure** itself - a number or
a short value such as `4.5:1` \- **What it counts**, both required, a
text and an icon. Screen readers read it as "what it counts, the figure"; the
figure is shown above, larger.

A step of **Steps** has a title, which is required, a text and an
icon. The steps are numbered in their order; a step with an icon shows the icon
instead of its number.

The seeded demo tree shows every layout and column count on
`/elements/theme/features`, and the other two on
`/elements/theme/stats` and `/elements/theme/steps`.

## Impact

Integrators get four new content types to grant to editor groups:
`theme_text_icon`, `theme_features`, `theme_stats` and `theme_steps`.
The database analyzer adds four columns to `tt_content` \-
`tx_theme_icon_position`, `tx_theme_icon_shape`, `tx_theme_icon_size` and
`tx_theme_columns` \- and two to `tx_theme_list_item`: `icon`, the icon of
an item, and `subheader`, a short second line, which the figures use for what
they count. The core field **Layout** is offered on the features.

A site package overriding `Templates/ContentElements/` finds the
templates as `ThemeTextIcon.html`, `ThemeFeatures.html`,
`ThemeStats.html` and `ThemeSteps.html`. They render on the four
components the component library gains - `.theme-media-object`,
`.theme-feature`, `.theme-stat` and `.theme-steps` \- see
[Components](../../Components/Index.html#components).
