Icons

All icons come from the Google font "Material Symbols Outlined" and are rendered as a ligature by the Icon component. In YAML you always give the technical icon name (e.g. mail), never an image path. This page lists all 56 icons currently available – the icon itself next to the exact name to enter in YAML.

YAML syntax

There are two notations: the short form as a plain string (icon: mail) and the object form with an optional colour (icon: { name: mail, color: green }). The short form is identical to the object form without a colour.

Available colours (color):

  • black – default, inherits the text colour

  • blue – Cembra blue

  • green – Cembra green, mostly for confirmations

  • light_green – light green

  • purple – purple

  • red – red, for warnings

Note: some components restrict the colour choice. CardBlock only allows black and green for titleIconColor and paragraphIconColor. The component properties boxed (icon with a background box) and fill (filled instead of outlined variant) can only be set programmatically, not from YAML.

Content types that support icons:

  • grid – titleIcon plus blocks[].icon and topics[].icon

  • cardBlock – titleIcon, paragraphIcon (each with …IconColor) and rows[].icon

  • bannerTable – rows[].row.icon

  • instructionCard – icon

  • vCard – iconLeft and iconRight (key figure variant)

  • dynamicForm – icon per form field

Font subset – adding new icons

For performance reasons the full Material font is not loaded; only a subset containing the icons actually in use (public/fonts/material-icons-subset.woff2). An icon that is not part of that subset will not be displayed – even if the name exists at Google.

  1. Use the icon in YAML – or, if it only appears in an Astro component, add it manually to the COMPONENT_ICONS list in src/pages/dev/_generate-icons-font.txt.ts.

  2. Remove the leading "_" from that file name, start the dev server and open /dev/generate-icons-font.txt in the browser – the subset is downloaded again.

  3. Restore the "_". The file must never be committed without the leading "_", otherwise it ends up in the production build.

Important limitation: the generator only scans the YAML pages for fields whose name starts with "icon" – that is icon, iconLeft and iconRight. Nested fields such as titleIcon or paragraphIcon are not picked up. A new icon used only as a titleIcon therefore never reaches the subset and stays invisible; in that case the name must additionally be added to COMPONENT_ICONS. This is why the gallery below deliberately uses rows[].icon – that way this documentation page itself keeps every icon listed here inside the subset.

Arrows & navigation

arrow_forward
arrow_forward
arrow_outward
arrow_outward
arrow_upward
arrow_upward
arrow_drop_down
arrow_drop_down
chevron_left
chevron_left
chevron_right
chevron_right
expand_more
expand_more
more_horiz
more_horiz
menu
menu
close
close

Actions & UI state

check
check
check_circle
check_circle
check_indeterminate_small
check_indeterminate_small
circle
circle
info
info
search
search
send
send
download_2
download_2
picture_as_pdf
picture_as_pdf
open_in_full
open_in_full
close_fullscreen
close_fullscreen

Finance & products

credit_card
credit_card
payment_arrow_down
payment_arrow_down
universal_currency_alt
universal_currency_alt
savings
savings
percent
percent
calculate
calculate
add_shopping_cart
add_shopping_cart
trending_up
trending_up
monitoring
monitoring

Security & trust

lock
lock
security
security
verified_user
verified_user
assured_workload
assured_workload
database
database
anchor
anchor

People & service

account_circle
account_circle
group
group
support_agent
support_agent
mail
mail
call
call
handshake
handshake
diversity_4
diversity_4
sign_language
sign_language

Mobile

mobile
mobile
mobile_2
mobile_2
mobile_friendly
mobile_friendly

Other icons

build
build
lightbulb
lightbulb
emoji_objects
emoji_objects
interests
interests
location_on
location_on
directions_car
directions_car
date_range
date_range
av_timer
av_timer
sentiment_satisfied
sentiment_satisfied

Special case cembra_logo

The icon name cembra_logo is not a Material icon. It is only recognised by the instructionCard component, where it is replaced with the image /favicon-32x32.png. In any other content type it has no effect and may be rendered as plain text.

Instruction Icon

instructionCard with cembra_logo

Notation: icon: { name: cembra_logo }

Theme switcher