Everything the calculator widgets read for their look: resolved colours,
key shape, type and the press-motion subset. M3 produces it from a
ThemeSpec; M2 has PlainTheme.
One family's chrome recipe. Fonts come from the theme: headings, titles
and labels use its key font; body text uses bodyFont (null = the key
font too).
The key-face sizes the keypad lays out now, published by each key on
layout. Theme prefetch prepares renderers for them (key-shape morphs),
so no commit or transition frame builds one (design doc "60 fps
budget: no Morph construction in commit frames").
Extra channels a KeyFaceMotion may also provide (the calculator's
KeyPressMotion does). Renderers must still work without them (test
fakes, previews): check with motion is KeyFaceMotionDetail.
A key face that can morph toward another face of the same renderer
during a theme transition (motion brief §6.4: one tree, FlatMorph
shapes). Renderers that implement it get their shapes interpolated at
the transition's shape progress; others switch at the midpoint.
Paints the plain-theme key face: a rounded-rect fill (and optional
outline) with the hover and pressed state layers, plus the long-press
radial fill (motion brief §2.2.4, §4.1, §4.4).