Interface: ThemeBrief
Defined in: Types.ts:185
Machine-readable theme brief — the design intent a theme declares before
token values are chosen (theme-authoring.md §"Theme brief"). It is the home
for the FSL-DESIGN-001..003 gate (posture, density, accessibility target)
so those rules can be validated rather than living only as prose.
Orthogonal to tokens. The brief lives on ThemeBundle alongside base,
never inside the token tree — DTCG and CSS emitters read bundle.base, so a
brief never affects interchange or CSS output. Optional by design: existing
createTheme callers stay valid.
Allowed values mirror theme-authoring.md §"Allowed values".
Properties
accessibilityTarget
accessibilityTarget:
"AA"|"AA+"|"AAA-like"
Defined in: Types.ts:213
Non-negotiable accessibility floor (FSL-DESIGN-003).
brandEnergy?
optionalbrandEnergy?:"expressive"|"balanced"|"quiet"
Defined in: Types.ts:211
How much brand presence the theme carries.
colorModeStrategy?
optionalcolorModeStrategy?:"light-only"|"dark-supported"|"dark-first"|"adaptive"
Defined in: Types.ts:215
Color-mode support strategy.
densityProfile
densityProfile:
"compact"|"balanced"|"comfortable"|"spacious"
Defined in: Types.ts:201
Operational compactness (FSL-DESIGN-002).
interactionRisk?
optionalinteractionRisk?:"medium"|"low"|"high"
Defined in: Types.ts:207
Risk profile of adjacent interactions.
name
name:
string
Defined in: Types.ts:187
Theme identity name (e.g. 'base', 'bruttal').
platformBias?
optionalplatformBias?:"web"|"mobile"|"desktop"|"cross-platform"
Defined in: Types.ts:221
Primary platform the theme is tuned for.
pointerProfile?
optionalpointerProfile?:"fine"|"coarse"|"hybrid"
Defined in: Types.ts:205
Primary pointer type the hit-target model targets.
primaryPosture
primaryPosture:
"calm"|"productive"|"technical"|"expressive"|"editorial"|"premium"
Defined in: Types.ts:191
Dominant behavioral personality (FSL-DESIGN-001).
purpose?
optionalpurpose?:string
Defined in: Types.ts:189
One line on what experience this theme should produce.
readingMode?
optionalreadingMode?:"reading"|"operating"|"scanning"|"mixed"
Defined in: Types.ts:203
Reading vs operating vs scanning bias of the interface.
secondaryPosture?
optionalsecondaryPosture?:"calm"|"productive"|"technical"|"expressive"|"editorial"|"premium"
Defined in: Types.ts:199
Optional secondary posture; one posture must dominate.
surfaceModel?
optionalsurfaceModel?:"flat"|"lightly-layered"|"layered"|"immersive"
Defined in: Types.ts:209
Surface layering strategy.