import 'package:flutter/material.dart';

class AppFlowyFillColorScheme {
  const AppFlowyFillColorScheme({
    required this.primary,
    required this.primaryHover,
    required this.secondary,
    required this.secondaryHover,
    required this.tertiary,
    required this.tertiaryHover,
    required this.quaternary,
    required this.quaternaryHover,
    required this.content,
    required this.contentHover,
    required this.contentVisible,
    required this.contentVisibleHover,
    required this.themeThick,
    required this.themeThickHover,
    required this.themeSelect,
    required this.textSelect,
    required this.infoLight,
    required this.infoLightHover,
    required this.infoThick,
    required this.infoThickHover,
    required this.successLight,
    required this.successLightHover,
    required this.warningLight,
    required this.warningLightHover,
    required this.errorLight,
    required this.errorLightHover,
    required this.errorThick,
    required this.errorThickHover,
    required this.errorSelect,
    required this.featuredLight,
    required this.featuredLightHover,
    required this.featuredThick,
    required this.featuredThickHover,
  });

  final Color primary;
  final Color primaryHover;
  final Color secondary;
  final Color secondaryHover;
  final Color tertiary;
  final Color tertiaryHover;
  final Color quaternary;
  final Color quaternaryHover;
  final Color content;
  final Color contentHover;
  final Color contentVisible;
  final Color contentVisibleHover;
  final Color themeThick;
  final Color themeThickHover;
  final Color themeSelect;
  final Color textSelect;
  final Color infoLight;
  final Color infoLightHover;
  final Color infoThick;
  final Color infoThickHover;
  final Color successLight;
  final Color successLightHover;
  final Color warningLight;
  final Color warningLightHover;
  final Color errorLight;
  final Color errorLightHover;
  final Color errorThick;
  final Color errorThickHover;
  final Color errorSelect;
  final Color featuredLight;
  final Color featuredLightHover;
  final Color featuredThick;
  final Color featuredThickHover;

  AppFlowyFillColorScheme lerp(
    AppFlowyFillColorScheme other,
    double t,
  ) {
    return AppFlowyFillColorScheme(
      primary: Color.lerp(
        primary,
        other.primary,
        t,
      )!,
      primaryHover: Color.lerp(
        primaryHover,
        other.primaryHover,
        t,
      )!,
      secondary: Color.lerp(
        secondary,
        other.secondary,
        t,
      )!,
      secondaryHover: Color.lerp(
        secondaryHover,
        other.secondaryHover,
        t,
      )!,
      tertiary: Color.lerp(
        tertiary,
        other.tertiary,
        t,
      )!,
      tertiaryHover: Color.lerp(
        tertiaryHover,
        other.tertiaryHover,
        t,
      )!,
      quaternary: Color.lerp(
        quaternary,
        other.quaternary,
        t,
      )!,
      quaternaryHover: Color.lerp(
        quaternaryHover,
        other.quaternaryHover,
        t,
      )!,
      content: Color.lerp(
        content,
        other.content,
        t,
      )!,
      contentHover: Color.lerp(
        contentHover,
        other.contentHover,
        t,
      )!,
      contentVisible: Color.lerp(
        contentVisible,
        other.contentVisible,
        t,
      )!,
      contentVisibleHover: Color.lerp(
        contentVisibleHover,
        other.contentVisibleHover,
        t,
      )!,
      themeThick: Color.lerp(
        themeThick,
        other.themeThick,
        t,
      )!,
      themeThickHover: Color.lerp(
        themeThickHover,
        other.themeThickHover,
        t,
      )!,
      themeSelect: Color.lerp(
        themeSelect,
        other.themeSelect,
        t,
      )!,
      textSelect: Color.lerp(
        textSelect,
        other.textSelect,
        t,
      )!,
      infoLight: Color.lerp(
        infoLight,
        other.infoLight,
        t,
      )!,
      infoLightHover: Color.lerp(
        infoLightHover,
        other.infoLightHover,
        t,
      )!,
      infoThick: Color.lerp(
        infoThick,
        other.infoThick,
        t,
      )!,
      infoThickHover: Color.lerp(
        infoThickHover,
        other.infoThickHover,
        t,
      )!,
      successLight: Color.lerp(
        successLight,
        other.successLight,
        t,
      )!,
      successLightHover: Color.lerp(
        successLightHover,
        other.successLightHover,
        t,
      )!,
      warningLight: Color.lerp(
        warningLight,
        other.warningLight,
        t,
      )!,
      warningLightHover: Color.lerp(
        warningLightHover,
        other.warningLightHover,
        t,
      )!,
      errorLight: Color.lerp(
        errorLight,
        other.errorLight,
        t,
      )!,
      errorLightHover: Color.lerp(
        errorLightHover,
        other.errorLightHover,
        t,
      )!,
      errorThick: Color.lerp(
        errorThick,
        other.errorThick,
        t,
      )!,
      errorThickHover: Color.lerp(
        errorThickHover,
        other.errorThickHover,
        t,
      )!,
      errorSelect: Color.lerp(
        errorSelect,
        other.errorSelect,
        t,
      )!,
      featuredLight: Color.lerp(
        featuredLight,
        other.featuredLight,
        t,
      )!,
      featuredLightHover: Color.lerp(
        featuredLightHover,
        other.featuredLightHover,
        t,
      )!,
      featuredThick: Color.lerp(
        featuredThick,
        other.featuredThick,
        t,
      )!,
      featuredThickHover: Color.lerp(
        featuredThickHover,
        other.featuredThickHover,
        t,
      )!,
    );
  }
}
