import 'package:design/design.dart';

part 'store_design_spec.g.dart';

@DesignSpec(width: 750, height: 1624)
abstract class StoreDesignSpec implements BasicDesignSpec {
  @CombinedSpec(
      SpecStatusBarHeight(50, wrappedInSafeArea: true), SpecVertical(8))
  double get appBarTopSpacing;

  @SpecOrigin(24)
  double get appBarIconSize;

  @SpecSize(SpecWidth(750), SpecHeight(114))
  Size get appBarSize;

  @SpecHorizontal(48)
  double get appBarStartSpacing;

  @SpecHeight(64)
  double get appBarBottomMargin;

  @SpecFontSize(56)
  double get appBarTitleFontSize;

  @SpecVertical(52)
  double get tabBarVerticalSpacing;

  @SpecHeight(28)
  double get premiumCardMarginTop;

  @SpecEdgeInsets.symmetric(horizontal: SpecWidth(40))
  EdgeInsetsDirectional get giftPackMargin;

  @SpecSize(SpecHeight(64), SpecHeight(80))
  Size get giftPageTriangle;

  @SpecEdgeInsets.symmetric(horizontal: SpecWidth(12), vertical: SpecHeight(12))
  EdgeInsetsDirectional get giftPageTrianglePadding;

  @SpecHeight(126)
  double get giftPageTriangleTop;

  @SpecHorizontal(80)
  double get removeAdsImageEndSpacing;

  @SpecHorizontal(28)
  double get removeAdsImageVerticalSpacing;

  @SpecEdgeInsets.symmetric(horizontal: SpecWidth(40))
  EdgeInsets get bodyHorizontalPadding;

  @SpecVertical(16)
  double get tipsSpacing;

  @SpecHeight(40)
  double get tipsSize;

  @SpecHeight(40)
  double get dividerHeight;

  @SpecEdgeInsets.symmetric(horizontal: SpecWidth(48))
  EdgeInsets get dividerHorizontalPadding;

  @SpecEdgeInsets.symmetric(horizontal: SpecWidth(16))
  EdgeInsets get dividerNamePadding;

  @SpecHorizontal(8)
  double get dividerTipSpacing;

  @SpecWidth(26)
  double get dividerTipSize;

  @SpecFontSize(32)
  double get dividerTipFontSize;

  @SpecHeight(64)
  double get dividerTopSpacing;

  @SpecHeight(40)
  double get dividerBottomSpacing;

  @SpecHeight(4)
  double get dividerLineHeight;

  @SpecVertical(30)
  double get cardGridMainAxisSpacing;

  @SpecVertical(20)
  double get cardGridCrossAxisSpacing;

  @SpecVertical(90)
  double get labelSize;

  @SpecOffset(SpecWidth(24), SpecHeight(-10))
  Offset get labelOffset;

  @SpecHeight(190)
  double get tipsMinHeight;

  @SpecWidth(486)
  double get tipsWidth;

  @SpecFontSize(26)
  double get tipsFontSize;

  @SpecVertical(12)
  double get tipsGap;

  @SpecEdgeInsets.only(
      top: SpecHeight(22),
      bottom: SpecHeight(26),
      start: SpecWidth(32),
      end: SpecWidth(32))
  EdgeInsets get tipsContentPadding;

  @SpecFontSize(26)
  double get productDetailsFontSize;

  @SpecFontSize(26)
  double get productPriceFontSize;

  @SpecOffset(SpecOrigin(0), SpecVertical(1))
  Offset get productPriceTextShadowOffset;

  @SpecOffset(SpecOrigin(0), SpecVertical(1))
  Offset get purchaseButtonShadowOffset;

  @SpecHeight(24)
  double get tipsRadius;

  final purchaseCardAspectRatio = 0.65625;

  static StoreDesignSpec get() => _StoreDesignSpec.get();
}
