`favCtrl.iconName` returned the solid glyph in both states, so "not a favourite" was a filled heart in a duller colour and the only thing separating the two states was hue. That fails outright for anyone who cannot tell the two colours apart (WCAG 1.4.1), and reads as "everything is a favourite" to everyone else. `iconFor(favorited)` returns the outline or the fill, and the nine `<wa-icon>` call sites split into the two cases they always were. The three that show a *state* -- the mini player, the phone's now-playing view, and the sidebar's marker for the favourites playlist itself -- pass it. The rest are context-menu items, which are actions rather than states and take the outline `iconName` still returns. `track-list` and `album-dropdown` already had this right, from inline SVG paths of their own; this is the same rule for the call sites that go through the icon library. `regular/star` is vendored to go with `regular/heart`, which was already there. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MeQt5hgXg5YGoNZQ9ozG7L
85 lines
1.9 KiB
Plaintext
85 lines
1.9 KiB
Plaintext
# Every icon this app bundles, as <style>/<name>, one per line.
|
|
#
|
|
# It is a list rather than a glob because the alternative is shipping
|
|
# 2 001 SVGs to use 64 of them. It is *committed* rather than derived
|
|
# because twenty call sites compute their icon name from state
|
|
# (`jobIcon(job)`, `TONE_ICONS[tone]`, `this.favCtrl.iconName`), so no
|
|
# static analysis can produce this list and no build step can check it.
|
|
#
|
|
# What checks it is the runtime: `src/icons/index.ts` reports a name it
|
|
# cannot resolve to `window.__yjIconMisses` and renders a fallback, and
|
|
# `frontend/scripts/icon-sweep.mjs` drives the app to collect them. A
|
|
# missing icon is therefore a visible, findable bug rather than a
|
|
# silent request to a CDN.
|
|
#
|
|
# Names must exist in Font Awesome **Free** (CC BY 4.0); see
|
|
# fetch-icons.mjs for why that is not negotiable. Re-vendor with:
|
|
# node frontend/scripts/fetch-icons.mjs
|
|
regular/heart
|
|
regular/star
|
|
solid/arrow-down-wide-short
|
|
solid/arrow-left
|
|
solid/arrow-rotate-right
|
|
solid/arrows-rotate
|
|
solid/arrow-up-short-wide
|
|
solid/backward-step
|
|
solid/bars
|
|
regular/bookmark
|
|
solid/bookmark
|
|
solid/box-open
|
|
solid/check
|
|
solid/chevron-down
|
|
solid/chevron-right
|
|
solid/circle-check
|
|
solid/circle-exclamation
|
|
solid/circle-info
|
|
solid/circle-minus
|
|
solid/circle-question
|
|
solid/clock-rotate-left
|
|
solid/compact-disc
|
|
solid/copy
|
|
solid/database
|
|
solid/download
|
|
solid/file-import
|
|
solid/filter
|
|
solid/floppy-disk
|
|
solid/folder
|
|
solid/forward-step
|
|
solid/gear
|
|
solid/globe
|
|
solid/heart
|
|
solid/home
|
|
solid/hourglass-half
|
|
solid/house
|
|
solid/images
|
|
solid/info
|
|
solid/list
|
|
solid/list-check
|
|
solid/magnifying-glass
|
|
solid/masks-theater
|
|
solid/music
|
|
solid/pause
|
|
solid/pen
|
|
solid/pen-to-square
|
|
solid/play
|
|
solid/plus
|
|
solid/quote-left
|
|
solid/remove
|
|
solid/repeat
|
|
solid/rotate
|
|
solid/running
|
|
solid/shuffle
|
|
solid/star
|
|
solid/stop
|
|
solid/tag
|
|
solid/tags
|
|
solid/trash
|
|
solid/triangle-exclamation
|
|
solid/user
|
|
solid/user-group
|
|
solid/volume-high
|
|
solid/volume-low
|
|
solid/volume-off
|
|
solid/volume-xmark
|
|
solid/xmark
|