Interface: ThemeBrief
Defined in: Types.ts:207
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:235
Non-negotiable accessibility floor (FSL-DESIGN-003).
brandEnergy?
optionalbrandEnergy?:"expressive"|"balanced"|"quiet"
Defined in: Types.ts:233
How much brand presence the theme carries.
colorModeStrategy?
optionalcolorModeStrategy?:"light-only"|"dark-supported"|"dark-first"|"adaptive"
Defined in: Types.ts:237
Color-mode support strategy.
densityProfile
densityProfile:
"compact"|"balanced"|"comfortable"|"spacious"
Defined in: Types.ts:223
Operational compactness (FSL-DESIGN-002).
interactionRisk?
optionalinteractionRisk?:"medium"|"low"|"high"
Defined in: Types.ts:229
Risk profile of adjacent interactions.
name
name:
string
Defined in: Types.ts:209
Theme identity name (e.g. 'base', 'bruttal').
platformBias?
optionalplatformBias?:"web"|"mobile"|"desktop"|"cross-platform"
Defined in: Types.ts:240
Primary platform the theme is tuned for.
pointerProfile?
optionalpointerProfile?:"fine"|"coarse"|"hybrid"
Defined in: Types.ts:227
Primary pointer type the hit-target model targets.
primaryPosture
primaryPosture:
"calm"|"productive"|"technical"|"expressive"|"editorial"|"premium"
Defined in: Types.ts:213
Dominant behavioral personality (FSL-DESIGN-001).
purpose?
optionalpurpose?:string
Defined in: Types.ts:211
One line on what experience this theme should produce.
readingMode?
optionalreadingMode?:"reading"|"operating"|"scanning"|"mixed"
Defined in: Types.ts:225
Reading vs operating vs scanning bias of the interface.
secondaryPosture?
optionalsecondaryPosture?:"calm"|"productive"|"technical"|"expressive"|"editorial"|"premium"
Defined in: Types.ts:221
Optional secondary posture; one posture must dominate.
surfaceModel?
optionalsurfaceModel?:"flat"|"lightly-layered"|"layered"|"immersive"
Defined in: Types.ts:231
Surface layering strategy.