A tag carries a colour, chosen by the admin or derived from its name so the same name always lands on the same colour. Everywhere a tag is shown, that colour is shown with it — except the one place it would help most.
ActiveFilterChips — the removable chips beside the Filters button
no
Every chip in that row renders as a default grey <Tag>, because the chip record it builds carries only { key, label, onRemove }. A customer who has just picked vintage from a control that showed it in red sees a grey chip appear next to the button — the same tag, twice, in two different colours.
What this should do
Tag chips carry tag.color. The others — category, price, favorites, status — have no colour associated with them and keep the default.
That asymmetry is a feature rather than an inconsistency: once only tags are coloured, colour in that row means "this is a tag", which is exactly the distinction a row mixing four kinds of filter needs. The label still says what it is, so nothing depends on colour alone.
Detail worth getting right
The chips are closable with a custom closeIcon, and the icon inherits the tag's text colour, so a coloured chip gets a matching × rather than a grey one on a coloured ground.
A tag that is not in the loaded options — the row renders before /api/filters resolves, and falls back to Tag {id} — has no colour to use and keeps the default. The fallback already exists so the chip never renders as an empty box.
A tag carries a colour, chosen by the admin or derived from its name so the same name always lands on the same colour. Everywhere a tag is shown, that colour is shown with it — except the one place it would help most.
| Where | Coloured |
| --- | --- |
| `ItemCard` — tags on a product card | yes, `color={tag.color}` |
| `FilterDrawer` — selected tags in the control | yes, via `tagRender` (#169) |
| `Tags.tsx` — the admin taxonomy screen | yes |
| **`ActiveFilterChips` — the removable chips beside the Filters button** | **no** |
Every chip in that row renders as a default grey `<Tag>`, because the chip record it builds carries only `{ key, label, onRemove }`. A customer who has just picked `vintage` from a control that showed it in red sees a grey chip appear next to the button — the same tag, twice, in two different colours.
## What this should do
Tag chips carry `tag.color`. The others — category, price, favorites, status — have no colour associated with them and keep the default.
That asymmetry is a feature rather than an inconsistency: once only tags are coloured, colour in that row *means* "this is a tag", which is exactly the distinction a row mixing four kinds of filter needs. The label still says what it is, so nothing depends on colour alone.
## Detail worth getting right
The chips are closable with a custom `closeIcon`, and the icon inherits the tag's text colour, so a coloured chip gets a matching `×` rather than a grey one on a coloured ground.
A tag that is not in the loaded options — the row renders before `/api/filters` resolves, and falls back to `Tag {id}` — has no colour to use and keeps the default. The fallback already exists so the chip never renders as an empty box.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
A tag carries a colour, chosen by the admin or derived from its name so the same name always lands on the same colour. Everywhere a tag is shown, that colour is shown with it — except the one place it would help most.
ItemCard— tags on a product cardcolor={tag.color}FilterDrawer— selected tags in the controltagRender(#169)Tags.tsx— the admin taxonomy screenActiveFilterChips— the removable chips beside the Filters buttonEvery chip in that row renders as a default grey
<Tag>, because the chip record it builds carries only{ key, label, onRemove }. A customer who has just pickedvintagefrom a control that showed it in red sees a grey chip appear next to the button — the same tag, twice, in two different colours.What this should do
Tag chips carry
tag.color. The others — category, price, favorites, status — have no colour associated with them and keep the default.That asymmetry is a feature rather than an inconsistency: once only tags are coloured, colour in that row means "this is a tag", which is exactly the distinction a row mixing four kinds of filter needs. The label still says what it is, so nothing depends on colour alone.
Detail worth getting right
The chips are closable with a custom
closeIcon, and the icon inherits the tag's text colour, so a coloured chip gets a matching×rather than a grey one on a coloured ground.A tag that is not in the loaded options — the row renders before
/api/filtersresolves, and falls back toTag {id}— has no colour to use and keeps the default. The fallback already exists so the chip never renders as an empty box.