Skip to main content

Quick Reference

Intent → token cheatsheet. Pick tokens fast here; read the family docs for the full contract.

This page is the single source for the intent → token mapping — the @ttoss/fsl-theme README links here rather than carrying its own copy. The one deliberate duplicate is the package's llms.txt, which ships the same mapping inside the npm tarball so agents have it offline.

Rule of thumb: components consume semantic tokens only. If the token you need is not listed, check the family doc; if it still does not exist, open a governance request.

Grammar reminder:

  • colors: semantic.colors.{ux}.{role}.{dimension}.{state?}
    • ux: action | input | navigation | feedback | informational
    • role: primary | secondary | accent | muted | positive | caution | negative
    • dimension: background | border | text
    • state (optional): hover | active | focused | disabled | selected | pressed | checked | indeterminate | expanded | current | visited | droptarget | invalid (legality varies per ux — see colors.md)
  • everything else: semantic.{family}.{group}.{step?}

Colors — by intent

I want…Token
Primary button (filled, strongest CTA)semantic.colors.action.primary.{background,border,text}
Secondary button (neutral chrome)semantic.colors.action.secondary.{background,border,text}
Accent button (brand color, high emphasis)semantic.colors.action.accent.{background,border,text}
Destructive buttonsemantic.colors.action.negative.{background,border,text}
Ghost / low-emphasis buttonsemantic.colors.action.muted.{background,border,text}
Text input (default)semantic.colors.input.primary.{background,border,text}
Text input (error)semantic.colors.input.negative.{background,border,text}
Text input (success / validated)semantic.colors.input.positive.{background,border,text}
Text input (warning)semantic.colors.input.caution.{background,border,text}
Nav link (default / current / visited)semantic.colors.navigation.primary.text.{default,current,visited}
Toast / alert — infosemantic.colors.feedback.primary.{background,border,text}
Toast / alert — successsemantic.colors.feedback.positive.{background,border,text}
Toast / alert — warningsemantic.colors.feedback.caution.{background,border,text}
Toast / alert — errorsemantic.colors.feedback.negative.{background,border,text}
Page / content body textsemantic.colors.informational.primary.text
Muted / helper textsemantic.colors.informational.muted.text
Page backgroundsemantic.colors.informational.primary.background
Divider linesemantic.colors.informational.muted.border
Focus ring color (system default — use when no {ux} applies)semantic.focus.ring.color
Focus ring color (per-context — {ux} is Action / Input / Navigation / Feedback)semantic.colors.{ux}.{role}.border.focused

Full grammar + role decision table: Colors.


Spacing — by intent

I want…Token
Padding inside a button/inputsemantic.spacing.inset.control.{sm,md,lg}
Padding inside a card/surfacesemantic.spacing.inset.surface.{sm,md,lg}
Gap between stacked items (form fields)semantic.spacing.gap.stack.{xs,sm,md,lg,xl}
Gap between inline items (icon + label)semantic.spacing.gap.inline.{xs,sm,md,lg,xl}
Page horizontal gutter (responsive)semantic.spacing.gutter.page
Section vertical gutter (responsive)semantic.spacing.gutter.section
Minimum distance between hit targetssemantic.spacing.separation.interactive.min

See Spacing.


Sizing — by intent

I want…Token
Hit target (min interactive floor)semantic.sizing.hit
Inline icon with textsemantic.sizing.icon.{sm,md,lg}
Avatar / identity chipsemantic.sizing.identity.{sm,md,lg,xl}
Paragraph max reading widthsemantic.sizing.measure.reading
Surface (card/dialog) max widthsemantic.sizing.surface.maxWidth

See Sizing.


Typography — by intent

Token prefix: semantic.text.

I want…Token
Hero / marketing titlesemantic.text.display.{lg,md,sm}
Page title / top-level headlinesemantic.text.headline.{lg,md,sm}
Section / card titlesemantic.text.title.{lg,md,sm}
Paragraph / body copysemantic.text.body.{lg,md,sm}
UI label, button label, form labelsemantic.text.label.{lg,md,sm}
Inline / block codesemantic.text.code.{md,sm}

See Typography.


Borders, radii, elevation — by intent

I want…Token
1px divider (width + style)semantic.border.divider.{width,style}
Control outline (button, input)semantic.border.outline.control.{width,style}
Surface outline (card)semantic.border.outline.surface.{width,style}
Selected-state linesemantic.border.outline.selected.{width,style}
Focus ring (width + style)semantic.focus.ring.{width,style}
Focus ring colorsee Borders § Which focus colour
Control corner radius (buttons, inputs)semantic.radii.control
Surface corner radius (cards, dialogs)semantic.radii.surface
Pill / fully roundsemantic.radii.round
Resting surface (no shadow)semantic.elevation.surface.flat
Card shadowsemantic.elevation.surface.raised
Dropdown / popover shadowsemantic.elevation.surface.overlay
Modal / drawer shadowsemantic.elevation.surface.blocking

See Borders, Radii, Elevation.


Motion, opacity, z-index — by intent

I want…Token
Immediate UI feedback (hover, press)semantic.motion.feedback.{duration,easing}
Element entering the screensemantic.motion.transition.enter.{duration,easing}
Element leaving the screensemantic.motion.transition.exit.{duration,easing}
Attention / emphasis animationsemantic.motion.emphasis.{duration,easing}
Decorative / ambient animationsemantic.motion.decorative.{duration,easing}
Scrim over contentsemantic.opacity.scrim
Loading / in-progress dimsemantic.opacity.loading
Disabled dimsemantic.opacity.disabled
Document flow layersemantic.zIndex.layer.base
Sticky header / toolbarsemantic.zIndex.layer.sticky
Dropdown / popover / tooltipsemantic.zIndex.layer.overlay
Modal / drawer (blocks interaction)semantic.zIndex.layer.blocking
Toast / snackbar (transient, non-blocking)semantic.zIndex.layer.transient

See Motion, Opacity, Z-Index.


Data visualization — by intent

I want…Token
Nth categorical series colorsemantic.dataviz.color.series.{1..8}
Sequential (ordered) scale stepsemantic.dataviz.color.scale.sequential.{1..7}
Diverging scale stepsemantic.dataviz.color.scale.diverging.{neg3..pos3}
Reference line (target/baseline)semantic.dataviz.color.reference.{baseline,target}
Highlighted / selected seriessemantic.dataviz.color.state.{highlight,selected}
De-emphasized (context) seriessemantic.dataviz.color.state.muted
Missing / not-applicable datasemantic.dataviz.color.status.{missing,suppressed,notApplicable}
Non-color differentiator — shapesemantic.dataviz.encoding.shape.series.{1..8}
Non-color differentiator — patternsemantic.dataviz.encoding.pattern.series.{1..6}
Analytical stroke rolesemantic.dataviz.encoding.stroke.{reference,forecast,uncertainty}

See Data Visualization.


If you can't find what you need

  • Token missing → read the family doc; if still absent, open a governance request.
  • Want a raw value → you need a new semantic token, not a core reference. Core is never consumed by components.
  • Repeating the same combo in many places → extract a component or pattern, not a new token.
  • Building a chart → start in Data Visualization, not in foundation colors.