Skip to content
Signal

Tokens

Tokens reference

Every token in tokens/tokens.json and tokens/components.tokens.json, generated.

Generated from tokens/tokens.json and tokens/components.tokens.json. The Foundations pages show the same tokens with swatches, samples and usage.

Colours

TokenCSSLightDark
paper--paper#FFFFFF#0F141C
card--card#F3F4F7#171D27
card2--card-2#E9EBF1#1F2733
line--line#E3E6EC#263041
inactive--inactive#C9CDD6#465267
ink--ink#101A2E#EEF1F6
muted--muted#5B6472#98A2B3
accent--accent#0B4EA2#6EA0F0
accentInk--accent-ink#FFFFFF#0F141C
accentTint--accent-tint#EAF1FB#182944
good--good#1B5E20#7FD48A
warn--warn#8A4B00#F2B96B
alert--alert#E0641A#F08A4A
favorite--favorite#B7800F#E8A317
scrim--scrim#101A2E#101A2E
liveBg--live-bg#101A2E#EEF1F6
liveInk--live-ink#FFFFFF#0F141C

Fixed colours

TokenCSSValue
alwaysWhite--always-white#FFFFFF
alwaysInk--always-black#101A2E

CTA lines

LineCSSLightDark
red--red-line#C60C30#C60C30
blue--blue-line#00A1DE#00A1DE
brown--brown-line#62361B#A8653A
green--green-line#009B3A#009B3A
orange--orange-line#F9461C#F9461C
purple--purple-line#522398#8D61D8
pink--pink-line#E27EA6#E27EA6
yellow--yellow-line#E3CC00#F9E300

Type

RoleCSSSizeWeightTracking (em)
display--fs-display32750-.02
title--fs-title207000
body--fs-body164000
sub--fs-sub134000
cap--fs-cap114000

Spacing

TokenCSSValue
gutter--gutter20 pt
cardPadding--card-padding14 pt
arrivalVerticalPadding--arrival-vertical-padding5 pt
arrivalHorizontalPadding--arrival-horizontal-padding14 pt
cardStackGap--card-stack-gap8 pt
arrivalStackGap--arrival-stack-gap6 pt
routeToggleGap--route-toggle-gap6 pt
metadataControlOverlap--metadata-control-overlap12 pt
metadataControlVerticalOverhang--metadata-control-vertical-overhang14 pt
headerMetadataGap--header-metadata-gap4 pt
headerCloseVerticalOverhang--header-close-vertical-overhang8 pt
directionControlVerticalOverhang--direction-control-vertical-overhang6 pt
sectionGap--section-gap24 pt

Space scale

TokenCSSValue
s0--space-00 pt
s2--space-22 pt
s4--space-44 pt
s6--space-66 pt
s8--space-88 pt
s10--space-1010 pt
s12--space-1212 pt
s14--space-1414 pt
s16--space-1616 pt
s20--space-2020 pt
s24--space-2424 pt
s32--space-3232 pt
s40--space-4040 pt

Radius

TokenCSSValue
control--r-control10 pt
card--r-card12 pt
dialog--r-modal20 pt
sheet--r-sheet28 pt
lineBar--radius-line-bar3 pt
chip--radius-chip6 pt
segment--radius-segment8 pt
pill--radius-pill999 pt

Sizes

TokenCSSValue
floatingControl--fab52 pt
mapStationMarker--size-map-station-marker26 pt
mapBusMarker--size-map-bus-marker20 pt
mapBusMarkerCompact--size-map-bus-marker-compact7 pt
mapStationMarkerCompact--size-map-station-marker-compact10 pt
iconButton--size-icon-button44 pt
minimumTapTarget--size-minimum-tap-target44 pt
controlGlyph--size-control-glyph22 pt
alertGlyph--size-alert-glyph28 pt
metadataGlyph--size-metadata-glyph16 pt
nearbyModeGlyph--size-nearby-mode-glyph12 pt
routeToggle--size-route-toggle28 pt
denseRouteToggle--size-dense-route-toggle28 pt
routeToggleMinimumWidth--size-route-toggle-minimum-width44 pt
directionControl--size-direction-control36 pt
lineBarHeight--size-line-bar-height24 pt
lineBarSegmentWidth--size-line-bar-segment-width10 pt
lineBarSegmentSpacing--size-line-bar-segment-spacing3 pt
listRowMinimumHeight--size-list-row-minimum-height56 pt
listLead--size-list-lead44 pt
arrivalPanelWidth--size-arrival-panel-width128 pt
timelineRowMinimumHeight--size-timeline-row-minimum-height44 pt
searchField--size-search-field44 pt
settingsRow--size-settings-row52 pt
primaryButton--size-primary-button48 pt
tabBar--size-tab-bar64 pt
tabBarClearance--size-tab-bar-clearance88 pt
tabBarEdgeFade--size-tab-bar-edge-fade118 pt
tabGlyph--size-tab-glyph26 pt
sheetLow--core-low-h180 pt
sheetLowNearby--size-sheet-low-nearby120 pt
sheetHalfFraction--size-sheet-half-fraction.5 ratio
sheetFullTopOffset--size-sheet-full-top-offset4 pt
coreSheetInset--core-inset6 pt
coreSheetHeader--corebar-h64 pt
sheetGrabberZone--size-sheet-grabber-zone28 pt
grabberWidth--size-grabber-width40 pt
grabberHeight--size-grabber-height5 pt
focusRingWidth--size-focus-ring-width2.5 pt
focusRingOffset--size-focus-ring-offset2 pt

Font weight

TokenCSSValue
regular--weight-regular400
medium--weight-medium500
semibold--weight-semibold600
bold--weight-bold700
heavy--weight-heavy750

Elevation

TokenCSSx y blur · colour
sheet--shadow-sheet0 -10 30 · ink 16%
floating--shadow-fab0 6 16 · ink 24%
control--shadow-control0 1 4 · ink 18%

Motion

TokenCSSValue
pageDuration--motion-page-duration.17 s
detail--motion-detail-curvecubic-bezier(.2, .85, .3, 1)
detailDuration--motion-detail-duration.39 s
sheetDuration--motion-sheet-duration.42 s
sheetBounce--motion-sheet-bounce.15 ratio
recenterDuration--motion-recenter-duration.45 s
swipeSettleDuration--motion-swipe-settle-duration.25 s
liveSectionDuration--motion-live-section-duration.25 s
upcomingPlaceholderDuration--motion-upcoming-placeholder-duration.2 s
upcomingResizeDuration--motion-upcoming-resize-duration.25 s
upcomingFadeDuration--motion-upcoming-fade-duration.15 s
liveValueDuration--motion-live-value-duration.15 s
controlDuration--motion-control-duration.15 s
spinDuration--motion-spin-duration.6 s

Component tokens

From tokens/components.tokens.json. Each component reads var(--name, var(--ct-name)), so a page can override one instance.

Badge

Custom propertyValueAlias
--ct-badge-backgroundvar(--accent-tint){colors.accentTint}
--ct-badge-colorvar(--accent){colors.accent}
--ct-badge-font-sizevar(--fs-sub){type.sub}
--ct-badge-font-weightvar(--weight-bold){weight.bold}
--ct-badge-gapvar(--space-8){space.s8}
--ct-badge-height30px
--ct-badge-padding-xvar(--space-12){space.s12}
--ct-badge-radiusvar(--radius-pill){radius.pill}

Button

Custom propertyValueAlias
--ct-button-backgroundvar(--accent-tint){colors.accentTint}
--ct-button-background-primaryvar(--accent){colors.accent}
--ct-button-colorvar(--accent){colors.accent}
--ct-button-color-disabledvar(--inactive){colors.inactive}
--ct-button-color-primaryvar(--accent-ink){colors.accentInk}
--ct-button-font-sizevar(--fs-body){type.body}
--ct-button-font-size-smvar(--fs-sub){type.sub}
--ct-button-font-weightvar(--weight-semibold){weight.semibold}
--ct-button-gapvar(--space-8){space.s8}
--ct-button-heightvar(--size-minimum-tap-target){size.minimumTapTarget}
--ct-button-height-sm36px
--ct-button-icon-size18px
--ct-button-padding-x18px
--ct-button-padding-x-smvar(--space-12){space.s12}
--ct-button-radiusvar(--r-card){radius.card}

Card

Custom propertyValueAlias
--ct-card-backgroundvar(--card){colors.card}
--ct-card-empty-colorvar(--muted){colors.muted}
--ct-card-empty-font-sizevar(--fs-sub){type.sub}
--ct-card-empty-padding-xvar(--space-16){space.s16}
--ct-card-empty-padding-yvar(--space-20){space.s20}
--ct-card-gapvar(--space-8){space.s8}
--ct-card-paddingvar(--space-card-padding){spacing.cardPadding}
--ct-card-radiusvar(--r-card){radius.card}

Chip

Custom propertyValueAlias
--ct-chip-backgroundvar(--card-2){colors.card2}
--ct-chip-colorvar(--ink){colors.ink}
--ct-chip-font-size12px
--ct-chip-font-weightvar(--weight-semibold){weight.semibold}
--ct-chip-height22px
--ct-chip-outline-widthvar(--size-focus-ring-width){size.focusRingWidth}
--ct-chip-padding-xvar(--space-8){space.s8}
--ct-chip-radiusvar(--radius-chip){radius.chip}

Icon button

Custom propertyValueAlias
--ct-icon-button-backgroundvar(--accent-tint){colors.accentTint}
--ct-icon-button-background-pressedvar(--accent){colors.accent}
--ct-icon-button-colorvar(--accent){colors.accent}
--ct-icon-button-color-disabledvar(--inactive){colors.inactive}
--ct-icon-button-color-pressedvar(--accent-ink){colors.accentInk}
--ct-icon-button-glyph-sizevar(--size-control-glyph){size.controlGlyph}
--ct-icon-button-radiusvar(--radius-pill){radius.pill}
--ct-icon-button-sizevar(--size-icon-button){size.iconButton}

Input

Custom propertyValueAlias
--ct-input-backgroundvar(--card){colors.card}
--ct-input-colorvar(--ink){colors.ink}
--ct-input-color-placeholdervar(--muted){colors.muted}
--ct-input-font-sizevar(--fs-body){type.body}
--ct-input-gapvar(--space-10){space.s10}
--ct-input-heightvar(--size-search-field){size.searchField}
--ct-input-icon-size18px
--ct-input-label-colorvar(--muted){colors.muted}
--ct-input-label-font-sizevar(--fs-sub){type.sub}
--ct-input-label-font-weightvar(--weight-semibold){weight.semibold}
--ct-input-label-gapvar(--space-6){space.s6}
--ct-input-padding-xvar(--space-12){space.s12}
--ct-input-radiusvar(--r-card){radius.card}

Route toggle

Custom propertyValueAlias
--ct-route-toggle-bus-font-sizevar(--fs-body){type.body}
--ct-route-toggle-bus-font-weightvar(--weight-bold){weight.bold}
--ct-route-toggle-bus-min-width56px
--ct-route-toggle-bus-padding-xvar(--space-14){space.s14}
--ct-route-toggle-bus-radiusvar(--r-control){radius.control}
--ct-route-toggle-durationvar(--motion-control-duration){motion.controlDuration}
--ct-route-toggle-ring-colorvar(--ink){colors.ink}
--ct-route-toggle-ring-gap3px
--ct-route-toggle-ring-gap-colorvar(--paper){colors.paper}
--ct-route-toggle-ring-widthvar(--size-focus-ring-width){size.focusRingWidth}
--ct-route-toggle-size40px
--ct-route-toggle-size-dense34px

Segmented control

Custom propertyValueAlias
--ct-segmented-backgroundvar(--card-2){colors.card2}
--ct-segmented-background-selectedvar(--paper){colors.paper}
--ct-segmented-colorvar(--muted){colors.muted}
--ct-segmented-color-selectedvar(--ink){colors.ink}
--ct-segmented-font-sizevar(--fs-sub){type.sub}
--ct-segmented-font-weightvar(--weight-medium){weight.medium}
--ct-segmented-font-weight-selectedvar(--weight-semibold){weight.semibold}
--ct-segmented-gapvar(--space-2){space.s2}
--ct-segmented-height36px
--ct-segmented-paddingvar(--space-2){space.s2}
--ct-segmented-radiusvar(--r-control){radius.control}
--ct-segmented-segment-padding-xvar(--space-12){space.s12}
--ct-segmented-segment-radiusvar(--radius-segment){radius.segment}
--ct-segmented-shadow-selectedvar(--shadow-control){shadows.control}

Spinner

Custom propertyValueAlias
--ct-spinner-colorvar(--accent){colors.accent}
--ct-spinner-durationvar(--motion-spin-duration){motion.spinDuration}
--ct-spinner-size20px
--ct-spinner-stroke-widthvar(--size-focus-ring-width){size.focusRingWidth}
--ct-spinner-trackvar(--line){colors.line}

Status

Custom propertyValueAlias
--ct-status-font-weightvar(--weight-bold){weight.bold}
--ct-status-pill-font-sizevar(--fs-cap){type.cap}
--ct-status-pill-height22px
--ct-status-pill-padding-xvar(--space-8){space.s8}
--ct-status-pill-radiusvar(--radius-pill){radius.pill}
--ct-status-pill-tint.14

Table

Custom propertyValueAlias
--ct-table-cell-padding-xvar(--space-12){space.s12}
--ct-table-cell-padding-yvar(--space-10){space.s10}
--ct-table-font-size14px
--ct-table-head-backgroundvar(--card){colors.card}
--ct-table-head-colorvar(--muted){colors.muted}
--ct-table-head-font-sizevar(--fs-cap){type.cap}
--ct-table-head-tracking.04em
--ct-table-rulevar(--line){colors.line}

Toast

Custom propertyValueAlias
--ct-toast-backgroundvar(--live-bg){colors.liveBg}
--ct-toast-colorvar(--live-ink){colors.liveInk}
--ct-toast-durationvar(--motion-live-section-duration){motion.liveSectionDuration}
--ct-toast-font-sizevar(--fs-sub){type.sub}
--ct-toast-font-weightvar(--weight-semibold){weight.semibold}
--ct-toast-offsetvar(--space-24){space.s24}
--ct-toast-padding-xvar(--space-16){space.s16}
--ct-toast-padding-yvar(--space-10){space.s10}
--ct-toast-radiusvar(--radius-pill){radius.pill}

Tooltip

Custom propertyValueAlias
--ct-tooltip-backgroundvar(--live-bg){colors.liveBg}
--ct-tooltip-colorvar(--live-ink){colors.liveInk}
--ct-tooltip-durationvar(--motion-control-duration){motion.controlDuration}
--ct-tooltip-font-sizevar(--fs-cap){type.cap}
--ct-tooltip-font-weightvar(--weight-semibold){weight.semibold}
--ct-tooltip-max-width240px
--ct-tooltip-offsetvar(--space-6){space.s6}
--ct-tooltip-padding-xvar(--space-8){space.s8}
--ct-tooltip-padding-yvar(--space-4){space.s4}
--ct-tooltip-radiusvar(--radius-chip){radius.chip}