preset static method

PrismTokens preset({
  1. PrismDensity density = PrismDensity.comfortable,
  2. PrismShape shape = PrismShape.rounded,
  3. PrismMotion motion = PrismMotion.standard,
})

Returns a token set for the given density, shape and motion.

Implementation

static PrismTokens preset({
  PrismDensity density = PrismDensity.comfortable,
  PrismShape shape = PrismShape.rounded,
  PrismMotion motion = PrismMotion.standard,
}) {
  final space = switch (density) {
    PrismDensity.compact => const [3.0, 6.0, 12.0, 18.0, 24.0, 36.0],
    PrismDensity.comfortable => const [4.0, 8.0, 16.0, 24.0, 32.0, 48.0],
    PrismDensity.spacious => const [6.0, 12.0, 24.0, 36.0, 48.0, 72.0],
  };

  final radius = switch (shape) {
    PrismShape.sharp => const [0.0, 2.0, 3.0, 4.0],
    PrismShape.rounded => const [8.0, 12.0, 16.0, 24.0],
    PrismShape.pill => const [12.0, 20.0, 28.0, 999.0],
  };

  final duration = switch (motion) {
    PrismMotion.brisk => const [80, 150, 260],
    PrismMotion.standard => const [120, 240, 420],
    PrismMotion.relaxed => const [180, 340, 560],
  };

  final curve = switch (motion) {
    PrismMotion.brisk => Curves.easeOut,
    PrismMotion.standard => Curves.easeInOutCubic,
    PrismMotion.relaxed => Curves.easeInOut,
  };

  return PrismTokens(
    spaceXs: space[0],
    spaceSm: space[1],
    spaceMd: space[2],
    spaceLg: space[3],
    spaceXl: space[4],
    spaceXxl: space[5],
    radiusSm: radius[0],
    radiusMd: radius[1],
    radiusLg: radius[2],
    radiusXl: radius[3],
    durationFast: Duration(milliseconds: duration[0]),
    durationMedium: Duration(milliseconds: duration[1]),
    durationSlow: Duration(milliseconds: duration[2]),
    curveStandard: curve,
    controlHeight: switch (density) {
      PrismDensity.compact => 36,
      PrismDensity.comfortable => 44,
      PrismDensity.spacious => 52,
    },
  );
}