wrolpi/app/src
Roland 4add647728 ui: a disabled button keeps its own colour
The file browser's footer is eight buttons, six of them disabled until something
is selected, so the toolbar a user meets on arriving at /files was an
undifferentiated grey row: Delete, Rename, Move, Ignore and Tag rendered as five
identical pixels.  Colour is how those are told apart at a glance.

Mantine repaints a disabled button flat grey -- background, text and border all
replaced with `--mantine-color-disabled`.  Semantic kept the colour and dropped
the whole control to `opacity: 0.45`; measured on the QA Pi, a disabled Delete
is still red at 0.45, Rename still yellow, Tag still violet.  That is the better
signal: it says "not available" without also saying "no longer the delete
button".

Mantine leaves the variables alone and overrides only the painted properties, so
the colour the call site asked for is still sitting in `--button-bg` and can
simply be reinstated.  Applies to every disabled Button and ActionIcon, not only
the file browser's -- it is one convention, and having two would be worse than
either.

A pre-existing test earned its keep here: the IconStack corner disc was pinned
to `--mantine-color-disabled` so it would follow a disabled button's grey, and
it reddened the moment the button stopped being grey.  That override is gone;
`--button-bg` is now correct in both states, so the general rule covers them.

Ten new cases.  Fill equality is checked against each button's own enabled twin
in all four themes, and separately across the five colours at once -- comparing
each against its twin would still pass if every pair were grey, which is the
actual bug.  Opacity is asserted from both sides, because keeping the colour
must not cost the affordance.  Removing the rule reddens eleven.

1128 jest / 63 suites, 209 in ui-layout.cy.js, clean npm run build.
2026-08-02 16:58:31 -06:00
..
api controller: VNC toggle, gated on the Desktop running 2026-07-29 18:10:05 -06:00
components ui: a disabled button keeps its own colour 2026-08-02 16:58:31 -06:00
contexts test: one place for fixtures, real providers instead of mocked context modules 2026-07-30 16:44:40 -06:00
hooks ui: the corner triggers, the More button, and the search modal 2026-08-02 14:59:22 -06:00
themes review: measure what can be measured, and say what is not 2026-08-02 14:59:22 -06:00
types ui: the last Semantic UI file, and the stylesheet with it 2026-07-30 13:41:05 -06:00
api.js ui: thirty-five files off Semantic, leaving fifteen 2026-07-30 12:54:24 -06:00
App.css fix: toasts were covering the navigation bar's controls 2026-08-02 16:01:46 -06:00
App.js ui: the last Semantic UI file, and the stylesheet with it 2026-07-30 13:41:05 -06:00
DashboardPage.js ui: only the top modal answers Escape, and the audited widths 2026-08-02 16:01:46 -06:00
DashboardPage.test.js ui: thirty-five files off Semantic, leaving fifteen 2026-07-30 12:54:24 -06:00
Events.js ui: thirty-five files off Semantic, leaving fifteen 2026-07-30 12:54:24 -06:00
import-cycles.test.js fix: break the import cycle that put useCalculators in the TDZ 2026-08-02 12:41:23 -06:00
index.css ui: the last Semantic UI file, and the stylesheet with it 2026-07-30 13:41:05 -06:00
index.js Fixing changes before merge. 2023-02-08 21:18:51 -07:00
logo.svg Renaming examples to avoid grouping of pdf with ebooks. Reworking URLs for media files to avoid escaping url safe characters. 2023-03-29 13:46:39 -06:00
reportWebVitals.js Renaming examples to avoid grouping of pdf with ebooks. Reworking URLs for media files to avoid escaping url safe characters. 2023-03-29 13:46:39 -06:00
semantic-baseline.json ui: the last Semantic UI file, and the stylesheet with it 2026-07-30 13:41:05 -06:00
semantic-baseline.test.js build: uninstall Semantic UI 2026-07-30 14:50:47 -06:00
setupTests.js ui: Common.js and thirteen more files off Semantic 2026-07-30 11:55:39 -06:00
Tags.cy.js Video downloads have many more options. Downloads are migrated. 2024-11-28 09:48:57 -07:00
Tags.js ui: only the top modal answers Escape, and the audited widths 2026-08-02 16:01:46 -06:00
Tags.test.js ui: tags look like tags, and stay readable in every theme 2026-08-01 14:35:35 -06:00
test-fixtures.js test: check declared types, not just field names, and fix the three that were wrong 2026-07-30 17:34:36 -06:00
test-fixtures.test.js test: one place for fixtures, real providers instead of mocked context modules 2026-07-30 16:44:40 -06:00
test-utils.js test: the theme drives the colour scheme, and mockModule takes the module 2026-07-30 16:44:40 -06:00
test-utils.test.js test: the theme drives the colour scheme, and mockModule takes the module 2026-07-30 16:44:40 -06:00