makeStyle method

  1. @override
Style makeStyle(
  1. covariant SpecConfiguration<IconButtonSpecUtility<Attribute>> spec
)
override

Implementation

@override
Style makeStyle(SpecConfiguration<IconButtonSpecUtility> spec) {
  final $ = spec.utilities;

  final baseStyle = super.makeStyle(spec);
  final baseOverrides = Style(
    baseStyle(),
    $.container.padding.all.$space2(),
    $.icon.size(16),
    $.spinner.size(14),
  );

  final onDisabledForeground = $on.disabled(
    $.container.color.$neutral(7),
    $.icon.color.$neutral(8),
    $.spinner.color.$neutral(7),
  );

  final spinnerDisabled = $.spinner.color.$neutralAlpha(7);

  final solidVariant = Style(
    $.container.color.$accent(),
    $.spinner.color.white(),
    $.icon.color.white(),
    spec.on.hover($.container.color.$accent(10)),
    spec.on.disabled($.container.color.$neutralAlpha(3), spinnerDisabled),
  );

  final softVariant = Style(
    $.container.color.$accentAlpha(3),
    $.spinner.color.$accentAlpha(11),
    $.icon.color.$accentAlpha(11),
    spec.on.hover($.container.color.$accentAlpha(4)),
    spec.on.disabled($.container.color.$neutralAlpha(3)),
  );

  final outlineVariant = Style(
    $.container.chain
      ..color.transparent()
      ..border.width(1)
      ..border.strokeAlign(0)
      ..border.color.$accentAlpha(8),
    $.spinner.color.$accentAlpha(11),
    $.icon.color.$accentAlpha(11),
    spec.on.hover($.container.color.$accentAlpha(2)),
    spec.on.disabled(
      $.container.chain
        ..border.color.$neutralAlpha(8)
        ..color.transparent(),
    ),
  );

  final surfaceVariant = Style(
    outlineVariant(),
    $.container.color.$accentAlpha(3),
    spec.on.hover(
      $.container.color.$accentAlpha(4),
      $.container.border.color.$accentAlpha(8),
    ),
    spec.on.disabled($.container.color.$neutral(1)),
  );

  final ghostVariant = Style(
    $.container.border.style.none(),
    $.container.color.transparent(),
    $.spinner.color.$accentAlpha(11),
    $.icon.color.$accentAlpha(11),
    spec.on.hover($.container.color.$accentAlpha(3)),
    spec.on.disabled($.container.color.transparent()),
  );

  return Style.create(
    [
      baseOverrides(),
      onDisabledForeground,
      solidVariant(),
      soft(softVariant()),
      outline(outlineVariant()),
      surface(surfaceVariant()),
      ghost(ghostVariant()),
    ],
  );
}