
Give every surface the same brand foundation
A shared brand declaration records the name, visual direction and accepted assets. Application screens, public sites and other participating surfaces can select suitable versions from that common identity.
Example — One identity, several places to use it
A product uses a compact mark in its sidebar, a wider lockup in its website header and an appropriate image in email. The formats differ while the underlying identity stays recognizable.
For engineers
Wonder Todos’ specifications define the brand’s name and logo direction as follows. This is a selected fragment of its typed BrandSnapshot; version, visual tone and resolved assets remain in the surrounding declaration:
name: {
brandName: 'Wonder Todos',
tagline: 'Ship the week, not the meeting.',
},
logoDirection: {
// A text-free symbol (the wordmark is typography, set beside the mark).
markType: BrandLogoMarkType.ABSTRACT_MARK,
motifs: ['a rising checkmark', 'a forward-leaning chevron'],
symbolism: ['momentum', 'clarity', 'weekly cadence'],
avoid: ['no gradients', 'no literal robots', 'no clip-art gears', 'no drop shadows', 'no text or letters'],
backgroundTreatment: BrandLogoBackgroundTreatment.TRANSPARENT_ISOLATED,
},
The types and vocabularies come from @wildo-ai/saas-specifications. The same snapshot composes generatedResolvedBrandAssets; runtime configuration receives a projection of the accepted files. Keep this authored direction distinct from design tokens: a color intention in a brief does not itself rewrite the CSS theme.
Resolve the version the surface needs
Consumers query composition, theme and purpose. The runtime resolver prefers the exact combination, then defined default-theme and primary-asset fallbacks. The high-resolution MASTER is not a general fallback. A consumer must handle an absent asset when none has been accepted.
Validate the snapshot and its derivation relationships, accept the chosen asset set, then propagate it to the serving surfaces. A brand declaration alone is not proof that every deployed origin already carries the new files.