
import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/utils/platform_info.dart';
import 'package:flutter/cupertino.dart';

class ComposerStyle {

  static const double radius = 24;

  static EdgeInsetsGeometry getAppBarPadding(BuildContext context, ResponsiveUtils responsiveUtils) {
    if (responsiveUtils.isPortraitMobile(context) || responsiveUtils.isLandscapeMobile(context)) {
      return const EdgeInsetsDirectional.only(end: 8);
    } else {
      return const EdgeInsetsDirectional.only(start: 24, end: 32);
    }
  }

  static EdgeInsetsGeometry getFromAddressPadding(BuildContext context, ResponsiveUtils responsiveUtils) {
    if (responsiveUtils.isPortraitMobile(context) || responsiveUtils.isLandscapeMobile(context)) {
      return const EdgeInsetsDirectional.symmetric(horizontal: 16, vertical: 12);
    } else {
      return const EdgeInsetsDirectional.symmetric(horizontal: 8, vertical: 12);
    }
  }

  static EdgeInsetsGeometry getToAddressPadding(BuildContext context, ResponsiveUtils responsiveUtils) {
    if (PlatformInfo.isWeb) {
      if (responsiveUtils.isMobile(context)) {
        return const EdgeInsetsDirectional.only(start: 16, end: 8);
      } else {
        return const EdgeInsetsDirectional.symmetric(horizontal: 8);
      }
    } else {
      if (responsiveUtils.isPortraitMobile(context) || responsiveUtils.isLandscapeMobile(context)) {
        return const EdgeInsetsDirectional.symmetric(horizontal: 16);
      } else {
        return const EdgeInsetsDirectional.only(start: 8, end: 16);
      }
    }
  }

  static EdgeInsetsGeometry getCcBccAddressPadding(BuildContext context, ResponsiveUtils responsiveUtils) {
    if (PlatformInfo.isWeb) {
      if (responsiveUtils.isMobile(context)) {
        return const EdgeInsetsDirectional.only(start: 16);
      } else {
        return const EdgeInsetsDirectional.symmetric(horizontal: 8);
      }
    } else {
      if (responsiveUtils.isPortraitMobile(context) || responsiveUtils.isLandscapeMobile(context)) {
        return const EdgeInsetsDirectional.only(start: 16);
      } else {
        return const EdgeInsetsDirectional.symmetric(horizontal: 8);
      }
    }
  }

  static EdgeInsetsGeometry getSubjectPadding(BuildContext context, ResponsiveUtils responsiveUtils) {
    if (responsiveUtils.isPortraitMobile(context) || responsiveUtils.isLandscapeMobile(context)) {
      return const EdgeInsetsDirectional.symmetric(horizontal: 16, vertical: 8);
    } else {
      return const EdgeInsetsDirectional.only(start: 8, top: 8, bottom: 8, end: 16);
    }
  }

  static EdgeInsetsGeometry getSubjectWebPadding(BuildContext context, ResponsiveUtils responsiveUtils) {
    if (responsiveUtils.isMobile(context)) {
      return const EdgeInsetsDirectional.symmetric(horizontal: 16);
    } else {
      return const EdgeInsetsDirectional.only(start: 8, end: 16);
    }
  }

  static EdgeInsetsGeometry getPadding(BuildContext context, ResponsiveUtils responsiveUtils) {
    if (responsiveUtils.isPortraitMobile(context) || responsiveUtils.isLandscapeMobile(context)) {
      return const EdgeInsetsDirectional.symmetric(horizontal: 8);
    } else {
      return const EdgeInsetsDirectional.symmetric(horizontal: 32);
    }
  }

  static double getAppBarHeight(BuildContext context, ResponsiveUtils responsiveUtils) {
    if (responsiveUtils.isPortraitMobile(context) || responsiveUtils.isLandscapeMobile(context)) {
      return 57;
    } else {
      return 65;
    }
  }

  static double getSpace(BuildContext context, ResponsiveUtils responsiveUtils) {
    if (responsiveUtils.isPortraitMobile(context) || responsiveUtils.isLandscapeMobile(context)) {
      return 8;
    } else {
      return 12;
    }
  }

  static EdgeInsetsGeometry getAttachmentPadding(BuildContext context, ResponsiveUtils responsiveUtils) {
    if (responsiveUtils.isPortraitMobile(context) || responsiveUtils.isLandscapeMobile(context)) {
      return const EdgeInsetsDirectional.symmetric(horizontal: 16);
    } else {
      return const EdgeInsetsDirectional.only(start: 88, end: 48);
    }
  }

  static EdgeInsetsGeometry getRichTextButtonPadding(BuildContext context, ResponsiveUtils responsiveUtils) {
    if (responsiveUtils.isMobile(context)) {
      return const EdgeInsetsDirectional.symmetric(horizontal: 16, vertical: 8);
    } else {
      return const EdgeInsetsDirectional.only(start: 88, end: 48, top: 8, bottom: 8);
    }
  }

  static EdgeInsetsGeometry getEditorPadding(BuildContext context, ResponsiveUtils responsiveUtils) {
    if (PlatformInfo.isWeb) {
      if (responsiveUtils.isMobile(context)) {
        return const EdgeInsetsDirectional.symmetric(horizontal: 6);
      } else {
        return const EdgeInsetsDirectional.only(start: 78, end: 38);
      }
    } else {
      if (responsiveUtils.isPortraitMobile(context) || responsiveUtils.isLandscapeMobile(context)) {
        return const EdgeInsetsDirectional.symmetric(horizontal: 16);
      } else {
        return const EdgeInsetsDirectional.only(start: 88, end: 48);
      }
    }
  }

  static EdgeInsetsGeometry getMarginForTablet(BuildContext context, ResponsiveUtils responsiveUtils) {
    if (responsiveUtils.isPortraitTablet(context)) {
      return const EdgeInsetsDirectional.all(24);
    } else {
      return const EdgeInsetsDirectional.symmetric(vertical: 24);
    }
  }

  static double getWidthForTablet(BuildContext context, ResponsiveUtils responsiveUtils) {
    final currentWidth = responsiveUtils.getSizeScreenWidth(context);
    if (responsiveUtils.isPortraitTablet(context)) {
      return currentWidth;
    } else {
      return currentWidth * 0.7;
    }
  }

  static EdgeInsetsGeometry getMarginForTabletWeb(BuildContext context, ResponsiveUtils responsiveUtils) {
    if (responsiveUtils.isTablet(context)) {
      return const EdgeInsetsDirectional.all(24);
    } else {
      return const EdgeInsetsDirectional.symmetric(vertical: 24);
    }
  }

  static double getWidthForTabletWeb(BuildContext context, ResponsiveUtils responsiveUtils) {
    final currentWidth = responsiveUtils.getSizeScreenWidth(context);
    if (responsiveUtils.isTablet(context)) {
      return currentWidth;
    } else {
      return currentWidth * 0.7;
    }
  }

  static int getMaxItemRowListAttachment(BuildContext context, BoxConstraints constraints) {
    if (constraints.maxWidth < ResponsiveUtils.minTabletWidth) {
      return 2;
    } else if (constraints.maxWidth < ResponsiveUtils.minTabletLargeWidth) {
      return 4;
    } else {
      return 5;
    }
  }

  static double getMaxWidthItemListAttachment(BuildContext context, BoxConstraints constraints) {
    return constraints.maxWidth / getMaxItemRowListAttachment(context, constraints);
  }


  static double getMaxHeightEmailAddressWidget(BuildContext context, BoxConstraints constraints, ResponsiveUtils responsiveUtils) {
    if (responsiveUtils.isDesktop(context)) {
      return constraints.maxHeight > 0 ? constraints.maxHeight * 0.3 : 150.0;
    } else {
      return constraints.maxHeight > 0 ? constraints.maxHeight * 0.4 : 150.0;
    }
  }
}