import 'package:comwell_key_app/themes/app_textstyles.dart';
import 'package:comwell_key_app/themes/comwell_colors.dart';
import 'package:flutter/material.dart';

class AppButtonStyles {
  final ColorScheme _colorScheme;
  final AppTextStyles _textTheme;

  AppButtonStyles(this._colorScheme, this._textTheme);

  late final defaultShape = WidgetStatePropertyAll(
    RoundedRectangleBorder(borderRadius: BorderRadiusGeometry.circular(32)),
  );
  late final smallShape = WidgetStatePropertyAll(
    RoundedRectangleBorder(borderRadius: BorderRadiusGeometry.circular(8)),
  );
  late final squareShape = WidgetStatePropertyAll(
    RoundedRectangleBorder(borderRadius: BorderRadiusGeometry.circular(4)),
  );
  late final linkShape = WidgetStatePropertyAll(
    RoundedRectangleBorder(borderRadius: BorderRadiusGeometry.circular(2)),
  );
  late final defaultMinSize = const WidgetStatePropertyAll(Size(0, 48));
  late final defaultMinSizeLarge = const WidgetStatePropertyAll(Size(240, 48));
  late final smallMinSize = const WidgetStatePropertyAll(Size(32, 32));
  late final squareMinSize = const WidgetStatePropertyAll(Size(36, 36));
  late final squareMinSizeLarge = const WidgetStatePropertyAll(Size(0, 48));
  late final defaultPadding = const WidgetStatePropertyAll(EdgeInsets.symmetric(horizontal: 16));
  late final smallPadding = const WidgetStatePropertyAll(EdgeInsets.symmetric(horizontal: 12));
  final squarePadding = const WidgetStatePropertyAll(EdgeInsets.all(4));

  late final defaultTextStyle = WidgetStatePropertyAll(
    _textTheme.body.copyWith(fontWeight: FontWeight.w500),
  );

  late final primaryMainDefault = ButtonStyle(
    backgroundColor: WidgetStateProperty.fromMap({
      WidgetState.disabled: _colorScheme.disabledText,
      WidgetState.any: Colors.white,
    }),
    foregroundColor: WidgetStateProperty.fromMap({
      WidgetState.disabled: Colors.black,
      WidgetState.any: _colorScheme.primary,
    }),
    textStyle: defaultTextStyle,
    minimumSize: defaultMinSize,
    padding: defaultPadding,
    shape: WidgetStateProperty.fromMap({
      WidgetState.disabled: defaultShape.value,
      WidgetState.any: defaultShape.value,
    }),
  );
}