fix(client): give the portal row an icon, and assert every gated nav has one
The §7.7 smoke, running the pair together: registering the player row without an `icon` blanked the whole portal with React error #130, because core's PlayerPortalLayout rendered `<n.icon />` unguarded. Core is guarded now (website), and this is the other half — the row had an icon before it moved and should have kept one. A second glyph rather than reusing IconShard: these two rows sit in different navs and each matched its neighbours before the extraction. The admin sidebar's UO rows were gems; the portal's Characters row was a person beside Appeals' shield and Account's gear. Matching the nav a row lands in is the whole reason `icon` is in the contract. `registration.test.js` now asserts it for admin AND player rows, which is the cheap place to catch the next one. The public header is text buttons and is deliberately excluded. Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -18,7 +18,7 @@
|
||||
// size and it is the one thing this seam cannot have.
|
||||
|
||||
import { registry, coreApiVersion } from './core.js'
|
||||
import { IconShard } from './icons.jsx'
|
||||
import { IconShard, IconUser } from './icons.jsx'
|
||||
import { useShardFlags } from './lib/useShardFeatures.js'
|
||||
|
||||
// Public pages — the twelve that used to live at /site/*.
|
||||
@@ -159,7 +159,7 @@ registry.registerNav(ID, {
|
||||
area: 'player',
|
||||
// Order 0: Characters is the portal's first row today, and with the module
|
||||
// installed it is also what core's `/player` index resolves to.
|
||||
items: [{ label: 'Characters', to: '/player/uo/characters', order: 0 }],
|
||||
items: [{ label: 'Characters', to: '/player/uo/characters', icon: IconUser, order: 0 }],
|
||||
})
|
||||
|
||||
// ── Feature provider ───────────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user