T9.3 - S6: one icon system - monochrome text glyphs, one meaning each
The set mixed colour emoji with dingbats, and the same glyph read as two things partly BECAUSE emoji render as per-platform artwork. The system chosen: monochrome text-presentation glyphs - the suite is classic-script vanilla HTML with no bundler, so an SVG sprite or icon font is a new asset pipeline, while text glyphs render through the same font stack as the words beside them. The enforceable form of "renders identically on Windows, macOS and a tablet": no emoji-range codepoint and no U+FE0F selector anywhere in UI source, swept by the probe on every run. Converted: green-check/red-cross emoji in the admin and users consoles to checkmark/cross, no-entry to circled-slash (blocked/on hold), the lock to the pencil already meaning "edit with a logged reason" on sign-offs, the star to the diamond, the folder to the reference marker, the side nav's lightning to the gear, and the WATCH glyph (U+231A - emoji-presentation BY DEFAULT per Unicode) to a text-presentation clock face. Dropped where the label already carried the meaning: lightning on Save & view, the camera on Add photo, the page/frame pictograms on file rows (the filename is the label). Stale help copy fixed while its emoji left: it still described the pre-T9.4 "Load sample" and the pre-T7.10 "Usage Logs" locations. The meaning-to-icon mapping is in docs/reference/tokens.md - one meaning per glyph, one glyph per meaning, both directions asserted from the document itself; the probe also sweeps every page for glyphs not in the approved set, so an unmapped icon cannot creep in. Verification (each probe run alone): NEW tests/icon_check.py 5/5. Regressions: frame_check 38/38, files_check 36/36, a11y_check 22/22, cards_check 44/44. Items: S6 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -301,6 +301,7 @@ Wave 9 adds these:
|
||||
```bash
|
||||
python tests/export_check.py # CR-008/CR-017 - export walk + hours guard 20 checks
|
||||
python tests/sample_check.py # S7 - one sample affordance, confirmed+fenced 10 checks
|
||||
python tests/icon_check.py # S6 - one icon system, no emoji, mapped 5 checks
|
||||
```
|
||||
|
||||
**Three probes were re-pointed at `T7.1`.** `sections_check.py` 5b drove the live
|
||||
|
||||
@@ -961,3 +961,51 @@ Column `#` is the line number in `html/theme-light.css`. Read down each column p
|
||||
**120 declarations.** Lines 3–116 are the Carbon g10 set; lines 170–175 are the app-shell
|
||||
group added by the suite. Many share a literal by design — that is Carbon's v10→v11 alias
|
||||
layer, not the `S5` defect. See the note at the end of §3.
|
||||
|
||||
## Icons (S6 / T9.3)
|
||||
|
||||
One system: **monochrome text-presentation glyphs**, chosen because the suite
|
||||
is classic-script vanilla HTML with no bundler — an SVG sprite or icon font is
|
||||
a new asset pipeline, while text glyphs render through the same font stack as
|
||||
the words beside them. The trade accepted: text glyphs vary slightly by font,
|
||||
but never flip into per-platform colour artwork the way emoji do, which is the
|
||||
failure S6 names. **No emoji anywhere in the UI**; `tests/icon_check.py`
|
||||
sweeps every page for emoji-range codepoints and the U+FE0F emoji-presentation
|
||||
selector on every run.
|
||||
|
||||
One meaning per glyph, one glyph per meaning:
|
||||
|
||||
| Meaning | Glyph | Codepoint | Notes |
|
||||
|---|---|---|---|
|
||||
| done / ok / success | ✓ | U+2713 | replaced emoji ✅ |
|
||||
| close / remove / failure | ✕ | U+2715 | replaced emoji ❌ |
|
||||
| needs attention / warning | ⚠ | U+26A0 | text presentation |
|
||||
| blocked / on hold | ⊘ | U+2298 | replaced emoji ⛔ |
|
||||
| edit with a logged reason | ✎ | U+270E | replaced emoji 🔒; same meaning on sign-off overrides |
|
||||
| revert / refresh | ↺ / ↻ | U+21BA / U+21BB | direction distinguishes undo from reload |
|
||||
| settings / admin | ⚙ | U+2699 | replaced ⚡ on the side nav |
|
||||
| export / download | ⤓ | U+2913 | |
|
||||
| import / upload | ⤒ | U+2912 | |
|
||||
| key point (help copy) | ◆ | U+25C6 | replaced emoji ⭐ |
|
||||
| reference link | ▸ | U+25B8 | replaced emoji 📁 |
|
||||
| info tooltip badge | ⓘ | U+24D8 | the `.help-tip` component (S8/T9.5) |
|
||||
| back / navigation | ← ‹ › → | U+2190 U+2039 U+203A U+2192 | |
|
||||
| views (nav) | ◔ ▤ ▦ ▧ | U+25D4 U+25A4 U+25A6 U+25A7 | one per view, never reused |
|
||||
| drag handle | ⣿ | U+283F | sequence reordering |
|
||||
| home | ⌂ | U+2302 | side nav |
|
||||
| search | ⌕ | U+2315 | app bar |
|
||||
| print / save PDF | ⎙ | U+2399 | |
|
||||
| power / sign out | ⏻ | U+23FB | side nav |
|
||||
| sort direction | ▲ ▼ | U+25B2 U+25BC | column headers, paired |
|
||||
| in the QA queue | ◉ | U+25C9 | the CR-014 banner |
|
||||
| clock / language & time | ◷ | U+25F7 | replaced ⌚ U+231A, which is emoji-presentation by default |
|
||||
| menu (off-canvas) | ☰ | U+2630 | app bar |
|
||||
| people / directory | ☺ | U+263A | side nav; text presentation |
|
||||
| field view | ⚒ | U+2692 | side nav; text presentation |
|
||||
| password / key | ⚿ | U+26BF | side nav |
|
||||
|
||||
Dropped rather than mapped: ⚡ on action buttons (the label carries the
|
||||
action), 📷 on “Add photo” (labelled), 📄/🖼 on file rows (the filename is the
|
||||
label; a pictogram repeating “this is a file” said nothing). Every remaining
|
||||
glyph sits beside visible text or carries an accessible name — none is the
|
||||
only carrier of meaning.
|
||||
|
||||
Reference in New Issue
Block a user