Update: 2026-08-08 16:55:39

This commit is contained in:
Hamza-Ayed
2026-08-08 16:55:39 +03:00
parent dd44b84e81
commit 8c9f729ecd
27 changed files with 2030 additions and 1798 deletions
@@ -1,44 +1,59 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'colors.dart';
/// كان هذا نظام ألوان **ثانياً منافساً** لـ [AppColor]: نيفي `#0A0E21` وأزرق
/// `#3D5AFE` بدل نيفي العلامة `#1A2340` والـ Periwinkle `#8C9CF8`. النتيجة أن
/// صفحات المحفظة والأرباح والتحديات كانت تبدو من تطبيق آخر.
///
/// أُبقي الصنف باسمه حتى لا تتكسّر عشرات مواضع الاستدعاء، لكنه صار **واجهة
/// رقيقة فوق ألوان العلامة**. الجديد يُكتب بـ `SiroUi` / `Theme.of(context)`.
class FinanceDesignSystem {
// --- Colors ---
static Color get primaryDark => Get.isDarkMode ? const Color(0xFFE0E0E0) : const Color(0xFF0A0E21);
static Color get accentBlue => const Color(0xFF3D5AFE);
static Color get successGreen => const Color(0xFF00C853);
static Color get dangerRed => const Color(0xFFD50000);
static Color get backgroundColor => Get.isDarkMode ? const Color(0xFF0A0E21) : const Color(0xFFF6F8FA);
static Color get cardColor => Get.isDarkMode ? const Color(0xFF1E1E2E) : const Color(0xFFFFFFFF);
static Color get textSecondary => Get.isDarkMode ? Colors.white70 : const Color(0xFF757575);
static Color get textMuted => Get.isDarkMode ? Colors.white38 : const Color(0xFFBDBDBD);
static Color get borderColor => Get.isDarkMode ? Colors.white10 : Colors.grey.withOpacity(0.1);
static Color get primaryDark =>
Get.isDarkMode ? const Color(0xFFF1F5F9) : AppColor.primaryColor;
static Color get accentBlue =>
Get.isDarkMode ? AppColor.secondaryColorStatic : AppColor.primaryColor;
static Color get successGreen => AppColor.greenColor;
static Color get dangerRed => AppColor.redColor;
static Color get backgroundColor =>
Get.isDarkMode ? const Color(0xFF0F1424) : const Color(0xFFF6F8FA);
static Color get cardColor =>
Get.isDarkMode ? const Color(0xFF171D33) : const Color(0xFFFFFFFF);
static Color get textSecondary =>
Get.isDarkMode ? const Color(0xFF94A3B8) : const Color(0xFF64748B);
static Color get textMuted =>
Get.isDarkMode ? const Color(0xFF64748B) : const Color(0xFF94A3B8);
static Color get borderColor =>
Get.isDarkMode ? const Color(0xFF262E4A) : const Color(0xFFE6EAF0);
// --- Shadows ---
static BoxShadow get softShadow => BoxShadow(
color: Colors.black.withOpacity(Get.isDarkMode ? 0.3 : 0.05),
blurRadius: 10,
offset: const Offset(0, 4),
);
color: Colors.black.withValues(alpha: Get.isDarkMode ? 0.35 : 0.05),
blurRadius: 18,
offset: const Offset(0, 6),
);
// --- Gradients ---
/// تدرّج العلامة: نيفي ← Periwinkle. يُستعمل في بطاقات الرصيد والرؤوس.
static LinearGradient get balanceGradient => LinearGradient(
colors: Get.isDarkMode
? [const Color(0xFF1E1E2E), const Color(0xFF2A2A3E)]
: [const Color(0xFF0A0E21), const Color(0xFF1A237E)],
begin: Alignment.topLeft,
end: Alignment.bottomRight,
);
colors: Get.isDarkMode
? [const Color(0xFF1E2745), const Color(0xFF2E3A63)]
: [AppColor.primaryColor, const Color(0xFF3A4674)],
begin: Alignment.topLeft,
end: Alignment.bottomRight,
);
static const LinearGradient dangerGradient = LinearGradient(
colors: [Color(0xFFD50000), Color(0xFFFF5252)],
colors: [AppColor.redColor, Color(0xFFF87171)],
begin: Alignment.topLeft,
end: Alignment.bottomRight,
);
// --- Radius ---
static const double mainRadius = 16.0;
static const double cardRadius = 20.0;
static const double buttonRadius = 12.0;
static const double cardRadius = 18.0;
static const double buttonRadius = 14.0;
// --- Spacing ---
static const double horizontalPadding = 16.0;
@@ -46,19 +61,19 @@ class FinanceDesignSystem {
// --- Text Styles ---
static TextStyle get balanceStyle => const TextStyle(
fontSize: 32,
fontWeight: FontWeight.bold,
color: Colors.white,
);
fontSize: 32,
fontWeight: FontWeight.bold,
color: Colors.white,
);
static TextStyle get headingStyle => TextStyle(
fontSize: 18,
fontWeight: FontWeight.bold,
color: primaryDark,
);
fontSize: 17,
fontWeight: FontWeight.bold,
color: primaryDark,
);
static TextStyle get subHeadingStyle => TextStyle(
fontSize: 14,
color: textSecondary,
);
fontSize: 13,
color: textSecondary,
);
}