// Copyright (C) 2023 WYATT GROUP // Please see the AUTHORS file for details. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:wyatt_ui_components/wyatt_ui_components.dart'; import 'package:wyatt_ui_kit/wyatt_ui_kit.dart'; class CardTheme extends CardThemeExtension { const CardTheme({ super.backgroundColors, super.body, super.borderColors, super.secondaryBackgroundColor, super.shadowColor, super.subtitle, super.title, }); factory CardTheme.light() => CardTheme( backgroundColors: const MultiColor.single(Color(0xFFF6F6F6)), secondaryBackgroundColor: Colors.white, borderColors: const MultiColor([ Color(0xFFDDE0E3), Color(0xFFCACCD4), ]), title: GoogleFonts.montserrat( fontSize: 24, fontWeight: FontWeight.w500, color: const Color(0xFF24262A), ), subtitle: GoogleFonts.montserrat( fontSize: 15, fontWeight: FontWeight.w300, color: const Color(0xFF24262A), ), body: GoogleFonts.montserrat( fontSize: 12, fontWeight: FontWeight.w300, height: 1.7, color: const Color(0xFF24262A), ), ); factory CardTheme.dark() => CardTheme( backgroundColors: MultiColor.single(const Color(0xFFFFFFFF).withOpacity(0.04)), secondaryBackgroundColor: const Color(0xFFFFFFFF).withOpacity(0.04), borderColors: const MultiColor([ Color(0xFF60656A), Color(0xFF383C40), ]), title: GoogleFonts.montserrat( fontSize: 24, fontWeight: FontWeight.w500, color: const Color(0xFFFFFFFF), ), subtitle: GoogleFonts.montserrat( fontSize: 15, fontWeight: FontWeight.w300, color: const Color(0xFFFFFFFF), ), body: GoogleFonts.montserrat( fontSize: 12, fontWeight: FontWeight.w300, height: 1.7, color: const Color(0xFFFFFFFF), ), ); @override ThemeExtension copyWith({ MultiColor? backgroundColors, Color? secondaryBackgroundColor, MultiColor? borderColors, BoxShadow? shadowColor, TextStyle? body, TextStyle? title, TextStyle? subtitle, }) => CardTheme( backgroundColors: backgroundColors ?? this.backgroundColors, secondaryBackgroundColor: secondaryBackgroundColor ?? this.secondaryBackgroundColor, borderColors: borderColors ?? this.borderColors, shadowColor: shadowColor ?? this.shadowColor, body: body ?? this.body, title: title ?? this.title, subtitle: subtitle ?? this.subtitle, ); @override ThemeExtension lerp( covariant ThemeExtension? other, double t, ) { if (other is! CardTheme) { return this; } return CardTheme( backgroundColors: other.backgroundColors, secondaryBackgroundColor: Color.lerp( secondaryBackgroundColor, other.secondaryBackgroundColor, t, ), borderColors: other.borderColors, shadowColor: BoxShadow.lerp(shadowColor, other.shadowColor, t), body: TextStyle.lerp(body, other.body, t), title: TextStyle.lerp(title, other.title, t), subtitle: TextStyle.lerp(subtitle, other.subtitle, t), ); } }