claymorphismDefinition top-level constant

FamilyDefinition const claymorphismDefinition

Claymorphism (spec §5.3 #7; motion brief §2.3 "Claymorphism"): opaque squircle keys with a coloured drop shadow, an inner top-left highlight and an inner bottom-right shade. Press: a bottom-anchored squash (X 1.04 / Y 0.92) on 1755/0.85, the shadow 40 % smaller from frame 1, a visible tall-and-thin rebound on 322/0.65; the display pops glyphs in from 0.86; sound pop, haptic soft · 0.8. The palette is built by buildClaymorphismCandidate.

Implementation

const FamilyDefinition claymorphismDefinition = FamilyDefinition(
  family: ThemeFamily.claymorphism,
  brightnessWeights: [1, 3],
  // Metadata only: the builder uses clayCandySchemes / clayTonalSchemes.
  schemes: [Weighted(HarmonyScheme.splitComplementary, 1)],
  shapes: [Weighted(KeyShapeKind.squircle, 1)],
  cornerPermille: IntRange(300, 420),
  styles: [Weighted(KeyStyleKind.clay, 1)],
  keyStyle: KeyStyleSpec(
    kind: KeyStyleKind.clay,
    shadowOffsetCdp: 500,
    shadowBlurCdp: 1200,
    edgeShadePermille: 90,
    stateLayerPermille: 60,
  ),
  displayFonts: [Weighted(FontIds.nunito, 1)],
  keyFonts: [Weighted(FontIds.nunito, 1)],
  displayWeight: IntRange(700, 800),
  keyWeight: IntRange(700, 800),
  operatorWeightBonus: IntRange(100, 200),
  backgrounds: [Weighted(BackgroundKind.claySoft, 1)],
  sound: SoundPackId.pop,
  dark: clayNightRanges,
  light: clayLightRanges,
  motion: MotionSpec(
    verb: PressVerb.squash,
    scheme: MotionScheme.expressive,
    pressIn: SpringTokens.glassPressIn,
    release: SpringToken(322, 650),
    depthCdp: 500,
    scalePermille: 920,
    stateLayerSnap: true,
    entry: EntryStyle.pop,
    entryScalePermille: 860,
    impact: ImpactStyle.soft,
  ),
  motionRanges: MotionRanges(depthCdp: clayShadowCdp, bounceJitterPermille: 50),
  bile: BileRule.v2,
);