wrolpi/app/src/components/collections
Roland 929534e455
ui: thirty-five files off Semantic, leaving fifteen
Phase 2, part 4.  Baseline 50 -> 15.

Migrated: all eight calculators, the rest of inventory and collections, the
Map/Zim/Docs cluster, Videos, Files, Search, Archive, DashboardPage,
DatesSelector, HelpModal, Events, Tags, Flasher's neighbours, admin Settings
and Status, Download, and App.

Also the three shared modules everything imports: api.js and customHooks.js
swap the Semantic toast library for the library's shim (same call shape), and
useForm.js renders the library's Message.  useForm accepts both the old
`{content, header, positive|negative}` shape and the new `{kind, title}`,
because the pages building those objects migrate separately.

Two library gaps closed, both found by call sites needing them:

  ActionInput is a forwardRef now.  Its ref reaches the input rather than the
  wrapper, because callers use it to focus or select the field -- a ref to the
  surrounding div would do neither, which is why one call site had resorted to
  hand-copying the component's markup.

  Header takes a `color` token name.  Three separate call sites had reached for
  an inline style to colour a heading that carries meaning ("3 items to add"
  against "2 to remove"), which is how a hex ends up in markup.

Two files needed repair after being interrupted mid-edit: MapViewer had a
Segment left in its error branch, and VideoPlayer had lost the useContext
import its own code still used.  Neither jest nor tsc noticed; only
`npm run build` did, which is the whole reason that check exists.

Fifteen files remain: Archive, BulkTagModal, Channels, Docs, FileBrowser,
FilePreview, Flasher, Nav, Playlists, Theme.tsx, Upload, VideoPlayer, Zim,
ControllerPage, admin/Downloads.  Theme.tsx is deliberately last -- the
unmigrated files still import its Semantic-backed wrappers, so it can only go
once they have.
2026-08-05 18:34:58 -06:00
..
BatchReorganizeModal.js ui: thirty-five files off Semantic, leaving fifteen 2026-08-05 18:34:58 -06:00
BatchReorganizeModal.test.js ui: thirty-five files off Semantic, leaving fifteen 2026-08-05 18:34:58 -06:00
CollectionEditForm.js ui: Common.js and thirteen more files off Semantic 2026-08-05 18:34:50 -06:00
CollectionEditForm.test.js ui: Common.js and thirteen more files off Semantic 2026-08-05 18:34:50 -06:00
CollectionReorganizeModal.js ui: thirty-five files off Semantic, leaving fifteen 2026-08-05 18:34:58 -06:00
CollectionReorganizeModal.test.js ui: thirty-five files off Semantic, leaving fifteen 2026-08-05 18:34:58 -06:00
CollectionTable.js ui: thirty-five files off Semantic, leaving fifteen 2026-08-05 18:34:58 -06:00
CollectionTable.test.js ui: thirty-five files off Semantic, leaving fifteen 2026-08-05 18:34:58 -06:00
CollectionTagModal.js ui: Common.js and thirteen more files off Semantic 2026-08-05 18:34:50 -06:00
CollectionTagModal.test.js ui: Common.js and thirteen more files off Semantic 2026-08-05 18:34:50 -06:00
ConflictResolutionModal.js ui: thirty-five files off Semantic, leaving fifteen 2026-08-05 18:34:58 -06:00
ConflictResolutionModal.test.js ui: Common.js and thirteen more files off Semantic 2026-08-05 18:34:50 -06:00