import 'package:flutter/material.dart'; import 'color_system.dart'; /// Svrnty Gradient System /// Predefined gradients for status bars, progress indicators, and backgrounds class AppGradients { // Prevent instantiation AppGradients._(); // ============================================ // DELIVERY STATUS GRADIENTS // ============================================ /// Pending status gradient (Slate Gray) static const LinearGradient gradientStatusPending = LinearGradient( begin: Alignment.centerLeft, end: Alignment.centerRight, colors: [ SvrntyColors.statusPending, Color(0xFF506576), // Slightly different shade for gradient effect ], ); /// In Transit status gradient (Teal Blue) static const LinearGradient gradientStatusInTransit = LinearGradient( begin: Alignment.centerLeft, end: Alignment.centerRight, colors: [ SvrntyColors.statusInTransit, Color(0xFF647A91), // Lighter teal for gradient ], ); /// Completed status gradient (Green/Success) static const LinearGradient gradientStatusCompleted = LinearGradient( begin: Alignment.centerLeft, end: Alignment.centerRight, colors: [ SvrntyColors.statusCompleted, Color(0xFF4ADE80), // Lighter green for gradient ], ); /// Cancelled status gradient (Light Gray) static const LinearGradient gradientStatusCancelled = LinearGradient( begin: Alignment.centerLeft, end: Alignment.centerRight, colors: [ SvrntyColors.statusCancelled, Color(0xFFC5CBD2), // Darker gray for gradient ], ); /// Failed status gradient (Red/Error) static const LinearGradient gradientStatusFailed = LinearGradient( begin: Alignment.centerLeft, end: Alignment.centerRight, colors: [ SvrntyColors.statusFailed, Color(0xFFFF7D7D), // Lighter red for gradient ], ); // ============================================ // PROGRESS INDICATOR GRADIENTS // ============================================ /// Progress bar gradient (Blue to transparent) static LinearGradient gradientProgress({ required Color color, bool horizontal = true, }) { return LinearGradient( begin: horizontal ? Alignment.centerLeft : Alignment.topCenter, end: horizontal ? Alignment.centerRight : Alignment.bottomCenter, colors: [ color, color.withOpacity(0.8), ], ); } /// Success progress gradient static const LinearGradient gradientProgressSuccess = LinearGradient( begin: Alignment.centerLeft, end: Alignment.centerRight, colors: [ SvrntyColors.success, Color(0xFF4ADE80), // Lighter green ], ); /// Warning progress gradient static const LinearGradient gradientProgressWarning = LinearGradient( begin: Alignment.centerLeft, end: Alignment.centerRight, colors: [ SvrntyColors.warning, Color(0xFFFBBF24), // Lighter amber ], ); /// Error progress gradient static const LinearGradient gradientProgressError = LinearGradient( begin: Alignment.centerLeft, end: Alignment.centerRight, colors: [ SvrntyColors.error, Color(0xFFFF7D7D), // Lighter red ], ); /// Info progress gradient static const LinearGradient gradientProgressInfo = LinearGradient( begin: Alignment.centerLeft, end: Alignment.centerRight, colors: [ SvrntyColors.info, Color(0xFF5B9BFF), // Lighter blue ], ); // ============================================ // BRAND GRADIENTS // ============================================ /// Primary brand gradient (Crimson Red) static const LinearGradient gradientPrimary = LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [ SvrntyColors.crimsonRed, Color(0xFFC44D58), // Slightly darker shade ], ); /// Secondary brand gradient (Slate Blue) static const LinearGradient gradientSecondary = LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [ SvrntyColors.darkSlate, SvrntyColors.slateGray, ], ); /// Accent gradient (Crimson to Slate) static const LinearGradient gradientAccent = LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [ SvrntyColors.crimsonRed, SvrntyColors.darkSlate, ], ); // ============================================ // BACKGROUND GRADIENTS // ============================================ /// Light background gradient static const LinearGradient gradientBackgroundLight = LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [ Color(0xFFFAFAFC), Color(0xFFF5F7FA), ], ); /// Dark background gradient static const LinearGradient gradientBackgroundDark = LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [ Color(0xFF1A1C1E), Color(0xFF2A2D34), ], ); /// Elevated surface gradient (light) static const LinearGradient gradientElevatedLight = LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, colors: [ Color(0xFFFFFFFF), Color(0xFFF5F7FA), ], ); /// Elevated surface gradient (dark) static const LinearGradient gradientElevatedDark = LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, colors: [ Color(0xFF2A2D34), Color(0xFF1F2123), ], ); // ============================================ // OVERLAY GRADIENTS // ============================================ /// Dark overlay gradient (for images) static const LinearGradient gradientOverlayDark = LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, colors: [ Color(0x00000000), // Transparent at top Color(0x4D000000), // Dark at bottom ], ); /// Light overlay gradient static const LinearGradient gradientOverlayLight = LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, colors: [ Color(0x00FFFFFF), // Transparent at top Color(0x4DFFFFFF), // Light at bottom ], ); /// Vignette gradient (darkened edges) static const RadialGradient gradientVignette = RadialGradient( center: Alignment.center, radius: 1.2, colors: [ Color(0x00000000), Color(0x80000000), ], ); // ============================================ // SHIMMER GRADIENTS (for loading states) // ============================================ /// Shimmer gradient light theme static const LinearGradient gradientShimmerLight = LinearGradient( begin: Alignment.centerLeft, end: Alignment.centerRight, colors: [ Color(0xFFFFFFFF), Color(0x80F0F0F0), Color(0xFFFFFFFF), ], stops: [0.1, 0.5, 0.9], ); /// Shimmer gradient dark theme static const LinearGradient gradientShimmerDark = LinearGradient( begin: Alignment.centerLeft, end: Alignment.centerRight, colors: [ Color(0xFF2A2D34), Color(0xFF383940), Color(0xFF2A2D34), ], stops: [0.1, 0.5, 0.9], ); // ============================================ // UTILITY METHODS // ============================================ /// Get status gradient based on delivery status static LinearGradient getStatusGradient(String status) { switch (status.toLowerCase()) { case 'pending': return gradientStatusPending; case 'in_transit': case 'in_progress': case 'inprogress': return gradientStatusInTransit; case 'completed': case 'done': return gradientStatusCompleted; case 'cancelled': case 'skipped': return gradientStatusCancelled; case 'failed': return gradientStatusFailed; default: return gradientStatusPending; } } /// Get progress gradient based on status static LinearGradient getProgressGradient(String status) { switch (status.toLowerCase()) { case 'success': return gradientProgressSuccess; case 'warning': return gradientProgressWarning; case 'error': return gradientProgressError; case 'info': return gradientProgressInfo; default: return gradientProgressSuccess; } } /// Create a custom gradient with opacity static LinearGradient withOpacity( LinearGradient gradient, double opacity, ) { return LinearGradient( begin: gradient.begin, end: gradient.end, colors: gradient.colors .map((color) => color.withOpacity(opacity)) .toList(), stops: gradient.stops, ); } /// Create a directional gradient static LinearGradient directional({ required List colors, required Alignment begin, required Alignment end, List? stops, }) { return LinearGradient( begin: begin, end: end, colors: colors, stops: stops, ); } }