Brand — shields, lockups and the app registry

@anshinus/brand

Every app's shield, wordmark and colour comes from one registry. Rendered from the package at request time, so this page cannot drift from what consumers get.

The registry — 16 apps

allAppKeys() at render time. Adding an app is a registry entry plus an SVG; nothing here is hardcoded in this page.

Anshin Health Solutions

Anshin Health Solutions

anshin-ahs

#2B6B32
Anshin Anna

Anshin Anna

anshin-anna

#2B6B32
Anshin Knowledge Wiki

Anshin Knowledge Wiki

anshin-knowledge

#1479B3
Anshin Connect

Anshin Connect

anshin-connect

#2B6B32
Anshin Platform Console

Anshin Platform Console

anshin-console

#515EAF
Anshin Comply

Anshin Comply

anshin-comply

#2B6B32
Anshin SecureDocs

Anshin SecureDocs

anshin-securedocs

#0F766E
Anshin Accelerate

Anshin Accelerate

anshin-accelerate

#EA580C
Anshin Orchestrate

Anshin Orchestrate

anshin-orchestrate

#7C3AED
Anshin Predict

Anshin Predict

anshin-predict

#BE185D
Anshin Admin Portal

Anshin Admin Portal

anshin-admin

#475569
Anshin Support

Anshin Support

anshin-support

#0066CC
Anshin Aegis

Anshin Aegis

anshin-aegis

#1e3a5f
Anshin ETL

Anshin ETL

anshin-etl

#0e7490
Anshin Knowledge Wiki

Anshin Knowledge Wiki

anshin-knowledge-wiki

#1479B3
Anshin CLIF

Anshin CLIF

anshin-clif

#3B82F6

Lockup variants

The composed mark. sidebar-collapsed is the one that matters most — it is what a 64px rail shows, and it was invisible until 5.3.1 because the brand colour token had no Tailwind utility generated for it.

sidebarAnshin AnnaANSHINAnna
sidebar-collapsedAnshin Anna
loginAnshin AnnaANSHINAnna
markAnshin Anna

Shield sizes & wordmark

Shields are SVG and scale cleanly; they take their colour from the registry entry, not from a prop.

Anshin ETL16px
Anshin ETL24px
Anshin ETL32px
Anshin ETL48px
Anshin ETL64px
ANSHIN

Unregistered app — the fallback, shown

resolveApp('anshin-not-a-real-app'). It returns the AHS default and warns once on the console. It does not throw and does not render nothing — a blank shield would be indistinguishable from a styling bug.

Anshin Health Solutions

Anshin Health Solutions

fallback — register your app

Which prop renders the brand — currentAppKey vs brandApp

With the app switcher mounted, currentAppKey takes precedence over brandApp. A correct brandApp does not protect you. With the switcher off, currentAppKey is ignored entirely. Three apps shipped the wrong shield because the SDK's own doc comment said the inverse — fixed in 5.3.12.

brandAppcurrentAppKeySwitcherKey that rendersResult
anshin-comply✓complyunregisteredmountedcomply
overrides brandApp=anshin-comply
unregistered → falls back to Anshin Health Solutions
anshin-comply✓complyunregisteredoffanshin-comply
currentAppKey ignored (switcher off)
Anshin Comply
anshin-comply✓anshin-complymountedanshin-complyAnshin Comply
anshin-knowledge✓knowledgeunregisteredmountedknowledge
overrides brandApp=anshin-knowledge
unregistered → falls back to Anshin Health Solutions
—anshin-clifmountedanshin-clifAnshin CLIF
—anshin-clifoffanshin-ahs
currentAppKey ignored (switcher off)
Anshin Health Solutions
anshin-clif✓—mountedanshin-clifAnshin CLIF

Rows 1 and 4 are the real defects found on 2026-10-02 in anshin-comply and anshin-knowledge-wiki. Both had registered correctly. Row 3 is the one-word fix. The wiki case needs a split rather than a rename: the same field also feeds Connect's ?app= and the session cookie name, so renaming it in place signs out every user.

Brand