import 'package:design/design.dart';
import 'package:guru_ui/pages/store/bundle_card.dart';
import 'package:guru_ui/pages/store/purchase_banner.dart';

part 'store_design_spec.g.dart';

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

  @SpecHeight(72, consistent: true)
  double get appBarIconButtonSize;

  @SpecHeight(48, consistent: true)
  double get appBarIconSize;

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

  @SpecAbsoluteFontSize(56, consistent: true)
  double get appBarTitleFontSize;

  @SpecEdgeInsets.symmetric(horizontal: SpecHorizontal(28), vertical: SpecVertical(8))
  EdgeInsets get appbarPadding;

  @SpecEdgeInsets.symmetric(horizontal: SpecHorizontal(12))
  EdgeInsets get assetsBarPadding;
  
  @SpecEdgeInsets.only(start: SpecHorizontal(40), end: SpecHorizontal(40))
  EdgeInsets get contentPadding;

  @SpecEdgeInsets.only(top: SpecVertical(48, consistent: true), bottom: SpecVertical(40, consistent: true))
  EdgeInsets get srcollViewPadding;

  @SpecHeight(56, consistent: true)
  double get groupItemSpacing;

  @SpecVertical(8)
  double get tipsSpacing;

  @SpecHeight(40, consistent: true)
  double get tipsSize;

  @SpecHeight(40, consistent: true)
  double get dividerHeight;

  @SpecEdgeInsets.only(top: SpecVertical(8, consistent: true), bottom: SpecVertical(40, consistent: true))
  EdgeInsets get dividerPadding;

  @SpecEdgeInsets.symmetric(horizontal: SpecHorizontal(8))
  EdgeInsets get dividerItemPadding;

  @SpecHeight(32, consistent: true)
  double get dividerTipSize;

  @SpecAbsoluteFontSize(32, consistent: true)
  double get dividerTipFontSize;

  @SpecHeight(4, consistent: true)
  double get dividerLineHeight;

  @SpecVertical(40, consistent: true)
  double get cardGridMainAxisSpacing;

  @SpecVertical(20)
  double get cardGridCrossAxisSpacing;

  @SpecHeight(136, consistent: true)
  double get tipsMinHeight;

  @SpecWidth(486)
  double get tipsWidth;

  @SpecAbsoluteFontSize(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;

  @SpecHeight(32)
  double get tipsRadius;

  @NestedSpec(750, 200, consistentHeight: true)
  PurchaseBannerDesignSpec get purchaseBannerDesignSpec;

  @NestedSpec(750, 388, consistentHeight: true)
  BundleCardDesignSpec get bundleCardDesignSpec;

  @SpecHeight(36, consistent: true)
  double get bundleCardBottomSpacing;

  double get cardAspectRatio => 0.65625;
//
  static StoreDesignSpec get() => _StoreDesignSpec.get();
}


