Skip to content

Redraw thirteen category icons - #210

Draft
sdunster wants to merge 3 commits into
mainfrom
claude/rescue-category-icons-d5rp0r
Draft

Redraw thirteen category icons#210
sdunster wants to merge 3 commits into
mainfrom
claude/rescue-category-icons-d5rp0r

Conversation

@sdunster

@sdunster sdunster commented Sep 5, 2026

Copy link
Copy Markdown
Member

Legibility and correctness pass over the category icon set. Three commits: chain_saw and rcr, then ten more picked at random, then industrial_domestic_rescue.

chain_saw

Before: rotated -36°, pushing it into the top-right corner and leaving the opposite corner empty. The guide bar was a closed zigzag polygon with teeth on both edges, so it read as a fir tree rather than a saw, and the orange accent sat on the rear handle — an incidental detail — rather than on the cutting edge.

After: upright and centred — engine housing, top handle, and a long thin guide bar, with the orange accent on a sawtooth chain along the bar's top edge.

rcr

Before: the car sat in the lower-left with the top-right empty, the cabin outline crossed itself, the orange scribble inside the body read as noise, and the impact marks floated free of the vehicle.

After: centred, with a clean side profile, a crumpled bonnet as the damage cue, and the orange impact rays anchored to the point of impact.

industrial_domestic_rescue

Before: three elements competing in one box — a large gear, a small gear, and a stick figure whose raised arm ran into the large gear — all crowded into the left and bottom with the top-right empty, and none of it legible at button size. The large gear was also the same shape, at the same construction, as maintenance_equipment.

After: a hydraulic spreader — power unit, grip, and two jaws with orange tips. The tool this category is defined by, a shape nothing else in the set uses, and legible at 20px. A pair of buildings was the other candidate, rejected because the set already carries five building icons.

This icon's gear teeth were 14 individual filled polygons with the hub punched out by a hardcoded white circle, which does not follow the theme the way icon-stroke and icon-accent do. It no longer has either. Six other icons still use the same white knockout — assessor, duty_officer, flood_l1, flood_l2, flood_l3, maintenance_equipment — and are untouched here.

Ten more, picked at random

Four of the original ten — assist_police, usar, other, other_dots — were sound and were left alone; four replacements were drawn at random to keep the count.

Wrong metaphor

  • attend_hq — a document with a flagpole beside it. Its categories are "Attend RHQ" and "Attend SHQ", so it is now a headquarters building flying a flag.
  • attend_other_unit_not_ooaa / _ooaa — the "building" was a bare grid that read as a window or a spreadsheet, and the arrow overlapped its edge. Both are now a unit building with a door and windows, with the arrow clear of it. The pair keeps its existing left/right convention.
  • field_core_skills — the same briefcase as job_ready with an orange square added, so the two were near indistinguishable. Now a hard hat.

Strokes colliding with the shape they sit on

  • maintenance_building_land — the orange tool ran diagonally through the house wall and door. House and tool now sit side by side.
  • earthquake — the orange zigzag crossed the house at mid-wall, so it read as hills behind a house. The house now stands on a ground line with the crack running down its wall.
  • land_search — the orange terrain line overshot the lens rim. Now contained within the lens, and the meaningless dot at the centre is gone.

Weak or ambiguous

  • flood_ops_non_rescue — the sandbags were plain capsules and read as a pile of pebbles. Now a stacked barrier of tied bags above the water.
  • search — the orange dot at the lens centre carried no meaning. The lens now holds a figure, which is what the category searches for, and no longer competes with land_search and search_evidence.
  • public_relations — a single generic bubble, close to the one in critical_incident_support. Now a pair of bubbles, for engagement rather than a lone message. Also drops a translate() offset in favour of real coordinates.
  • attend_other — a map pin all but identical to operations at button size. operations is the better use of a pin and is unchanged, so this one becomes a calendar, which suits "Attend Other" better anyway.

Conventions

Every icon keeps the house style: 48×48 viewBox, 2.4 navy stroke, icon-stroke / icon-accent-stroke classes intact so theme, hover and active colouring still work, orange on a single secondary detail, and the canvas filled the way the rest of the set fills it.

Only .svg files changed — no code and no icon names, so no call sites are affected.

Notes for review

  • other and other_dots are two different icons for the same label, "Other" (used once and six times respectively). Left as-is — that is category data, not an icon defect — but worth a look.
  • search is now a figure in a lens; if the category means area search rather than searching for a person, say so and I'll change it.
  • The white-knockout hack noted above remains in six icons; happy to clean those up in a follow-up.

Testing

  • npm run test:unit — 21 files, 146 tests, all passing.
  • Every icon rendered at 140px, 48px, 32px and 20px, before against after, and against its neighbours in the set to check legibility at button size and to catch metaphor collisions.

🤖 Generated with Claude Code

https://claude.ai/code/session_01JqpAgLZfQLCECpnkdi1wAc

Both icons were hard to read, especially at the small sizes the kiosk
category buttons use.

chain_saw: the whole tool was rotated -36 degrees, which pushed it into
the top-right corner and left the opposite corner empty. The guide bar
was a closed zigzag polygon with teeth on both edges, so it read as a
fir tree rather than a saw, and the orange accent was on the rear
handle - an incidental detail - rather than on the cutting edge.
Redrawn upright and centred: engine housing, top handle, and a long thin
guide bar, with the orange accent moved to a sawtooth chain along the
bar's top edge.

rcr: the car sat in the lower-left of the canvas with the top-right
empty, the cabin outline crossed itself, the orange scribble inside the
body read as noise, and the impact marks floated free of the vehicle.
Redrawn centred, with a clean side profile, a crumpled bonnet as the
damage cue, and the orange impact rays anchored to the point of impact.

Both now fill the canvas the way the rest of the set does and keep the
house conventions: 48x48 viewBox, 2.4 navy stroke, orange accent on a
single secondary detail.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JqpAgLZfQLCECpnkdi1wAc
Picked at random from the set, then worked through what each one's
defects actually were. Four of the original ten - assist_police, usar,
other, other_dots - turned out to be sound and were left alone; four
replacements were drawn at random to keep the count.

Wrong metaphor:
- attend_hq: a document with a flagpole beside it. The categories using
  it are "Attend RHQ" and "Attend SHQ", so it is now a headquarters
  building flying a flag.
- attend_other_unit_not_ooaa / _ooaa: the "building" was a bare grid
  that read as a window or a spreadsheet, and the arrow overlapped its
  edge. Both are now a unit building with a door and windows, with the
  arrow clear of it. The pair keeps its existing left/right convention.
- field_core_skills: was the same briefcase as job_ready with an orange
  square added, so the two were near indistinguishable. Now a hard hat.

Strokes colliding with the shape they sit on:
- maintenance_building_land: the orange tool ran diagonally through the
  house wall and door. House and tool now sit side by side.
- earthquake: the orange zigzag crossed the house at mid-wall, so it
  read as hills behind a house. The house now stands on a ground line
  with the crack running down its wall.
- land_search: the orange terrain line overshot the lens rim. It is now
  contained within the lens, and the meaningless dot at the centre is
  gone.

Weak or ambiguous:
- flood_ops_non_rescue: the sandbags were plain capsules and read as a
  pile of pebbles. Now a stacked barrier of tied bags above the water.
- search: the orange dot at the lens centre carried no meaning. The lens
  now holds a figure, which is what the category searches for, and no
  longer competes with land_search and search_evidence.
- public_relations: a single generic bubble, close to the bubble in
  critical_incident_support. Now a pair of bubbles, for engagement
  rather than a lone message. Also drops a translate() offset in favour
  of real coordinates.
- attend_other: a map pin all but identical to operations at button
  size. operations is the better use of a pin and is unchanged, so this
  one becomes a calendar, which suits "Attend Other" better anyway.

Every icon keeps the house conventions: 48x48 viewBox, 2.4 navy stroke,
icon-stroke / icon-accent-stroke classes, orange on a single secondary
detail, and the canvas filled the way the rest of the set fills it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JqpAgLZfQLCECpnkdi1wAc
@sdunster sdunster changed the title Redraw the chain saw and road crash rescue category icons Redraw twelve category icons Sep 5, 2026
Three elements competed inside one 48x48 box: a large gear, a small
gear, and a stick figure whose raised arm ran into the large gear. All
of it was crowded into the left and bottom, leaving the top-right empty,
and none of it survived at button size.

The large gear was also the same shape, at the same construction, as
maintenance_equipment - the two were hard to tell apart in a list. A
gear belongs to that category, so it is gone from this one.

Now a hydraulic spreader: power unit, grip, and two jaws with orange
tips. It is the tool this category is defined by, it is a shape nothing
else in the set uses, and it reads at 20px. A pair of buildings was the
other candidate and was rejected because the set already carries five
building icons.

Side effect worth noting: the gear teeth were 14 individual filled
polygons and the hub was punched out with a hardcoded white circle,
which does not follow the theme the way icon-stroke and icon-accent do.
This icon no longer has either. Six other icons still use the same white
knockout - assessor, duty_officer, flood_l1, flood_l2, flood_l3 and
maintenance_equipment - and are untouched here.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JqpAgLZfQLCECpnkdi1wAc
@sdunster sdunster changed the title Redraw twelve category icons Redraw thirteen category icons Sep 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants