import 'package:flutter/material.dart';

class AppThemeData {
  static const Color surface = Color(0xFFFFFFFF);
  static const Color surfaceDark = Color(0xFF010309);

  // === Car-Rent (Light) ===
  static const Color carRent50 = Color(0xFFEBFAF2);
  static const Color carRent100 = Color(0xFFB7EBCE);
  static const Color carRent200 = Color(0xFF83DDAB);
  static const Color carRent300 = Color(0xFF47CF88);
  static const Color carRent400 = Color(0xFF37905E);
  static const Color carRent500 = Color(0xFF1E5235);
  static const Color carRent600 = Color(0xFF05140C);

  // === Car-Rent (Dark) ===
  static const Color carRentDark50 = Color(0xFF05140C);
  static const Color carRentDark100 = Color(0xFF1E5235);
  static const Color carRentDark200 = Color(0xFF37905E);
  static const Color carRentDark300 = Color(0xFF4FCF88);
  static const Color carRentDark400 = Color(0xFF83DDAB);
  static const Color carRentDark500 = Color(0xFFB7EBCE);
  static const Color carRentDark600 = Color(0xFFEBFAF2);

  // === E-Commerce (Light) ===
  static const Color ecommerce50 = Color(0xFFE5EDFF);
  static const Color ecommerce100 = Color(0xFFABC4FF);
  static const Color ecommerce200 = Color(0xFF72BCFF);
  static Color ecommerce300 = const Color(0xFF3974FF);
  static const Color ecommerce400 = Color(0xFF2650B2);
  static const Color ecommerce500 = Color(0xFF132C66);
  static const Color ecommerce600 = Color(0xFF00081A);

  // === E-Commerce (Dark) ===
  static const Color ecommerceDark50 = Color(0xFF00081A);
  static const Color ecommerceDark100 = Color(0xFF132C66);
  static const Color ecommerceDark200 = Color(0xFF2650B2);
  static const Color ecommerceDark300 = Color(0xFF3974FF);
  static const Color ecommerceDark400 = Color(0xFF729CFF);
  static const Color ecommerceDark500 = Color(0xFFABC4FF);
  static const Color ecommerceDark600 = Color(0xFFE5EDFF);

  // === Multi-Vendor ===
  static const Color multiVendor50 = Color(0xFFFFE6E6);
  static const Color multiVendor100 = Color(0xFFFEB9B9);
  static const Color multiVendor200 = Color(0xFFEB8B8B);
  static const Color multiVendor300 = Color(0xFFFE5D5D);
  static const Color multiVendor400 = Color(0xFFB13E3E);
  static const Color multiVendor500 = Color(0xFF651F1F);
  static const Color multiVendor600 = Color(0xFF910000);

  static const Color multiVendorDark50 = Color(0xFF910000);
  static const Color multiVendorDark100 = Color(0xFF651F1F);
  static const Color multiVendorDark200 = Color(0xFFB13E3E);
  static const Color multiVendorDark300 = Color(0xFFFE5D5D);
  static const Color multiVendorDark400 = Color(0xFFFE8B8B);
  static const Color multiVendorDark500 = Color(0xFFFEB9B9);
  static const Color multiVendorDark600 = Color(0xFFFFE6E6);

  // === On-Demand ===
  static const Color onDemand50 = Color(0xFFE6F8FF);
  static const Color onDemand100 = Color(0xFF9DE5FF);
  static const Color onDemand200 = Color(0xFF55D1FE);
  static const Color onDemand300 = Color(0xFF0DBDFD);
  static const Color onDemand400 = Color(0xFF0885B1);
  static const Color onDemand500 = Color(0xFF044C65);
  static const Color onDemand600 = Color(0xFF001319);

  static const Color onDemandDark50 = Color(0xFF001319);
  static const Color onDemandDark100 = Color(0xFF004C65);
  static const Color onDemandDark200 = Color(0xFF0885B1);
  static const Color onDemandDark300 = Color(0xFF55D1FE);
  static const Color onDemandDark400 = Color(0xFF55D1FE);
  static const Color onDemandDark500 = Color(0xFF00A1F1);
  static const Color onDemandDark600 = Color(0xFFE6F8FF);

  // === Taxi-Booking ===
  static const Color taxiBooking50 = Color(0xFFFFF6E5);
  static const Color taxiBooking100 = Color(0xFFFFDFA8);
  static const Color taxiBooking200 = Color(0xFFFFC06A);
  static const Color taxiBooking300 = Color(0xFFFFB32C);
  static const Color taxiBooking400 = Color(0xFFB27C1E);
  static const Color taxiBooking500 = Color(0xFF66460F);
  static const Color taxiBooking600 = Color(0xFF1A1000);

  static const Color taxiBookingDark50 = Color(0xFF1A1000);
  static const Color taxiBookingDark100 = Color(0xFF1A1000);
  static const Color taxiBookingDark200 = Color(0xFFFFC96A);
  static const Color taxiBookingDark300 = Color(0xFFFFB32C);
  static const Color taxiBookingDark400 = Color(0xFFFFC06A);
  static const Color taxiBookingDark500 = Color(0xFFFFDFA8);
  static const Color taxiBookingDark600 = Color(0xFFFFF6E5);

  // === Parcel-Service ===
  static const Color parcelService50 = Color(0xFFEAFBF3);
  static const Color parcelService100 = Color(0xFFAAEFCF);
  static const Color parcelService200 = Color(0xFF6AE2AB);
  static const Color parcelService300 = Color(0xFF2AD587);
  static const Color parcelService400 = Color(0xFF1E955E);
  static const Color parcelService500 = Color(0xFF115536);
  static const Color parcelService600 = Color(0xFF04150E);

  static const Color parcelServiceDark50 = Color(0xFF04150E);
  static const Color parcelServiceDark100 = Color(0xFFAAEFCF);
  static const Color parcelServiceDark200 = Color(0xFF1E955E);
  static const Color parcelServiceDark300 = Color(0xFF2AD587);
  static const Color parcelServiceDark400 = Color(0xFF6AE2AB);
  static const Color parcelServiceDark500 = Color(0xFFAAEFCF);
  static const Color parcelServiceDark600 = Color(0xFFEAFBF3);

  // === Grey ===
  static const Color grey50 = Color(0xFFF9FAFB);
  static const Color grey100 = Color(0xFFF3F4F6);
  static const Color grey200 = Color(0xFFE5E7EB);
  static const Color grey300 = Color(0xFFD1D5DB);
  static const Color grey400 = Color(0xFF9CA3AF);
  static const Color grey500 = Color(0xFF6B7280);
  static const Color grey600 = Color(0xFF4B5563);
  static const Color grey700 = Color(0xFF374151);
  static const Color grey800 = Color(0xFF1F2937);
  static const Color grey900 = Color(0xFF0C111C);

  static const Color greyDark50 = Color(0xFF0C111C);
  static const Color greyDark100 = Color(0xFF1F2937);
  static const Color greyDark200 = Color(0xFF374151);
  static const Color greyDark300 = Color(0xFF4B5563);
  static const Color greyDark400 = Color(0xFF6B7280);
  static const Color greyDark500 = Color(0xFF9CA3AF);
  static const Color greyDark600 = Color(0xFFD1D5DB);
  static const Color greyDark700 = Color(0xFFE5E7EB);
  static const Color greyDark800 = Color(0xFFF3F4F6);
  static const Color greyDark900 = Color(0xFFF9FAFB);

  // === Danger ===
  static const Color danger50 = Color(0xFFFFE5E6);
  static const Color danger100 = Color(0xFFFFACAE);
  static const Color danger200 = Color(0xFFFF7277);
  static const Color danger300 = Color(0xFFFF3840);
  static const Color danger400 = Color(0xFFB2262B);
  static const Color danger500 = Color(0xFF661316);
  static const Color danger600 = Color(0xFF1A0001);

  static const Color dangerDark50 = Color(0xFF1A0001);
  static const Color dangerDark100 = Color(0xFF661316);
  static const Color dangerDark200 = Color(0xFFB2262B);
  static const Color dangerDark300 = Color(0xFFFF3840);
  static const Color dangerDark400 = Color(0xFFFF7277);
  static const Color dangerDark500 = Color(0xFFFFACAE);
  static const Color dangerDark600 = Color(0xFFFFE5E6);

  // === Info ===
  static const Color info50 = Color(0xFFE5F9FF);
  static const Color info100 = Color(0xFFACECFF);
  static const Color info200 = Color(0xFF72DEFF);
  static const Color info300 = Color(0xFF38D0FF);
  static const Color info400 = Color(0xFF2692B2);
  static const Color info500 = Color(0xFF135366);
  static const Color info600 = Color(0xFF00141A);

  static const Color infoDark50 = Color(0xFF00141A);
  static const Color infoDark100 = Color(0xFF135366);
  static const Color infoDark200 = Color(0xFF2692B2);
  static const Color infoDark300 = Color(0xFF38D0FF);
  static const Color infoDark400 = Color(0xFF72DEFF);
  static const Color infoDark500 = Color(0xFFACECFF);
  static const Color infoDark600 = Color(0xFFE5F9FF);

  // === Success ===
  static const Color success50 = Color(0xFFE5FFEB);
  static const Color success100 = Color(0xFFACFFBF);
  static const Color success200 = Color(0xFF72FF93);
  static const Color success300 = Color(0xFF38FF67);
  static const Color success400 = Color(0xFF26B246);
  static const Color success500 = Color(0xFF136626);
  static const Color success600 = Color(0xFF001A06);

  static const Color successDark50 = Color(0xFF001A06);
  static const Color successDark100 = Color(0xFF136626);
  static const Color successDark200 = Color(0xFF26B246);
  static const Color successDark300 = Color(0xFF38FF67);
  static const Color successDark400 = Color(0xFF72FF93);
  static const Color successDark500 = Color(0xFFACFFBF);
  static const Color successDark600 = Color(0xFFE5FFEB);

  // === Warning ===
  static const Color warning50 = Color(0xFFFFF8E5);
  static const Color warning100 = Color(0xFFFFE9AB);
  static const Color warning200 = Color(0xFFFFDA72);
  static const Color warning300 = Color(0xFFFFCB39);
  static const Color warning400 = Color(0xFFB28D26);
  static const Color warning500 = Color(0xFF665013);
  static const Color warning600 = Color(0xFF191200);

  static const Color warningDark50 = Color(0xFF191200);
  static const Color warningDark100 = Color(0xFF666655);
  static const Color warningDark200 = Color(0xFFB28D26);
  static const Color warningDark300 = Color(0xFFFFCB39);
  static const Color warningDark400 = Color(0xFFFFDA72);
  static const Color warningDark500 = Color(0xFFFFE9AB);
  static const Color warningDark600 = Color(0xFFFFF8E5);

  static const Color yellow = Color(0xFFE5AE3E);
  static const Color cardColor = Color(0xFFEEEFF2);
  static const Color darkGrey = Color(0xFF1F2937);
  static const Color mainColor = Color(0xFFFF6839);
  static const lightGrey = Color(0xFF8E8E93);

  static const Color primary50 = Color(0xFFFFEBE5);
  static const Color primary100 = Color(0xFFFFC0AB);
  static const Color primary200 = Color(0xFFFF9472);
  static Color primary300 = const Color(0xFFFF6839);
  static const Color primary400 = Color(0xFFB24826);
  static const Color primary500 = Color(0xFF662713);
  static const Color primary600 = Color(0xFF1A0600);

  static const String fontFamily = 'EssentialSans';

  static const String black = 'EssentialSans';
  static const String bold = 'EssentialSans';
  static const String extraBold = 'EssentialSans';
  static const String extraLight = 'EssentialSans';
  static const String light = 'EssentialSans';
  static const String medium = 'EssentialSans';
  static const String regular = 'EssentialSans';
  static const String semiBold = 'EssentialSans';
  static const String thin = 'EssentialSans';

  static TextStyle regularTextStyle({
    double? fontSize,
    Color? color,
    TextDecoration? decoration,
    Color? decorationColor,
    TextDecorationStyle? decorationStyle,
    double? decorationThickness,
  }) {
    return TextStyle(
      fontSize: fontSize ?? 14,
      color: color ?? grey900,
      fontFamily: fontFamily,
      fontWeight: FontWeight.w400,
      decoration: decoration ?? TextDecoration.none,
      decorationColor: decorationColor ?? color ?? grey900,
      decorationStyle: decorationStyle,
      decorationThickness: decorationThickness,
    );
  }

  static TextStyle mediumTextStyle({
    double? fontSize,
    Color? color,
    TextDecoration? decoration,
    Color? decorationColor,
    TextDecorationStyle? decorationStyle,
    double? decorationThickness,
  }) {
    return TextStyle(
      fontSize: fontSize ?? 14,
      color: color ?? grey900,
      fontFamily: fontFamily,
      fontWeight: FontWeight.w500,
      decoration: decoration ?? TextDecoration.none,
      decorationColor: decorationColor ?? color ?? grey900,
      decorationStyle: decorationStyle,
      decorationThickness: decorationThickness,
    );
  }

  static TextStyle semiBoldTextStyle({
    double? fontSize,
    Color? color,
    TextDecoration? decoration,
    Color? decorationColor,
    TextDecorationStyle? decorationStyle,
    double? decorationThickness,
  }) {
    return TextStyle(
      fontSize: fontSize ?? 14,
      color: color ?? grey900,
      fontFamily: fontFamily,
      fontWeight: FontWeight.w600,
      decoration: decoration ?? TextDecoration.none,
      decorationColor: decorationColor ?? color ?? grey900,
      decorationStyle: decorationStyle,
      decorationThickness: decorationThickness,
    );
  }

  static TextStyle boldTextStyle({
    double? fontSize,
    Color? color,
    TextDecoration? decoration,
    Color? decorationColor,
    TextDecorationStyle? decorationStyle,
    double? decorationThickness,
  }) {
    return TextStyle(
      fontSize: fontSize ?? 22,
      color: color ?? grey900,
      fontFamily: fontFamily,
      fontWeight: FontWeight.w700,
      decoration: decoration ?? TextDecoration.none,
      decorationColor: decorationColor ?? color ?? grey900,
      decorationStyle: decorationStyle,
      decorationThickness: decorationThickness,
    );
  }
}
