---
title: "Breaking: Category icons follow the backend colour scheme"
manual: "Academic Projects"
version: "main"
source: "Changelog/3.0/Breaking-CategoryIconsFollowTheColourScheme.rst"
rendered: "2026-09-22T20:39:25+00:00"
---

# Breaking: Category icons follow the backend colour scheme {#breaking-projects-category-icons-follow-the-colour-scheme}

## Description {#description}

The four category type icons of this extension, which
`EXT:category_types` registers as `category_types.projects.*`, were
registered with the core provider
`\TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider`. It renders the
default markup - the markup a `sys_category` type icon reaches - as an
`<img>` tag. An image is opaque to CSS, so the icon kept the ink of its
file whatever the backend colour scheme said.

The four category types now ask for inlining with `inlineIcon: true` in
`Configuration/CategoryTypes.yaml`, so `EXT:category_types` registers
them with
`\FGTCLB\AcademicBase\Imaging\IconProvider\CurrentColorSvgIconProvider`,
which inlines the file in both markups, and the four files are drawn in
`currentColor` with no colour of their own. A category type without that flag
keeps the core provider.

## Impact {#impact}

The four icons reach the **frontend**, through
`<core:icon identifier="category_types.projects.{type}" />` in
`Pages/AcademicProject.html` and `Partials/Project/Item.html`.
Neither call asks for the `inline` markup, so their rendered markup changes: an
`<img>` of a fixed pixel size becomes an inlined `<svg>` with
`width="1em" height="1em"`, which follows the font size and the colour of
the text around it. Every site using the project plugins sees those icons resize
and recolour.

Site CSS or JavaScript that sized, coloured or addressed the `<img>` has
to address the `<svg>` instead.

In the backend, the four category type icons take the text colour around them,
so they stay legible in a dark backend colour scheme. The academic project page
type keeps the core icon `actions-code-merge` and is unchanged.

## Affected Installations {#affected-installations}

Every installation of this extension. Installations that render the project
plugins in the frontend are affected visibly.

## Migration {#migration}

Replace an image selector with an element selector in the site CSS, for example

```css
/* before */
.project-categories .icon img { width: 32px; }

/* after */
.project-categories .icon svg { width: 1.25em; }
```

The icon element keeps the surrounding
`<span class="t3js-icon icon" data-identifier="…">` wrapper, so a
selector written against the wrapper needs no change.
