MIF_E31230910_MP-HRIS-MOBILE/lib/core/theme.dart

208 lines
5.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
class AppTheme {
static const Color primaryDark = Color(0xFF0F172A);
static const Color primaryOrange = Color(0xFFE65100);
static const Color primaryBlue = Color(0xFF1E3A8A);
static const Color secondaryBlue = Color(0xFF3B82F6);
static const Color bgWhite = Color(0xFFFFFFFF);
static const Color bgLight = Color(0xFFF8FAFC);
static const Color bgCard = Color(0xFFFFFFFF);
static const Color bgInput = Color(0xFFF1F5F9);
static const Color textPrimary = Color(0xFF0F172A);
static const Color textSecondary = Color(0xFF475569);
static const Color textTertiary = Color(0xFF94A3B8);
static const Color statusGreen = Color(0xFF10B981);
static const Color statusYellow = Color(0xFFF59E0B);
static const Color statusRed = Color(0xFFEF4444);
static const Color statusOrange = Color(0xFFFF5722);
static const Color glassWhite10 = Color(0x1AFFFFFF);
static const Color glassWhite20 = Color(0x33FFFFFF);
static const Color glassWhite50 = Color(0x80FFFFFF);
static const Color glassWhite70 = Color(0xB3FFFFFF);
static const Color glassDark10 = Color(0x1A000000);
static const Color glassDark40 = Color(0x66000000);
static const Color badgeCutiBg = Color(0xFFFEE2E2);
static const Color badgeCutiText = Color(0xFFDC2626);
static const Color badgeSakitBg = Color(0xFFFFEDD5);
static const Color badgeSakitText = Color(0xFFEA580C);
static const Color badgeIzinBg = Color(0xFFDBEAFE);
static const Color badgeIzinText = Color(0xFF2563EB);
static const Color badgeLemburBg = Color(0xFFF3E8FF);
static const Color badgeLemburText = Color(0xFF9333EA);
static const double spacingXs = 4.0;
static const double spacingSm = 8.0;
static const double spacingMd = 14.0;
static const double spacingLg = 20.0;
static const double spacingXl = 28.0;
static const double spacingXxl = 40.0;
static const double radiusSm = 12.0;
static const double radiusMd = 16.0;
static const double radiusLg = 20.0;
static const double radiusXl = 24.0;
static const double radiusFull = 9999.0;
static List<BoxShadow> shadowSm = [
BoxShadow(
color: primaryDark.withOpacity(0.04),
blurRadius: 16,
spreadRadius: 0,
offset: const Offset(0, 4),
),
];
static List<BoxShadow> shadowMd = [
BoxShadow(
color: primaryDark.withOpacity(0.06),
blurRadius: 24,
spreadRadius: -2,
offset: const Offset(0, 12),
),
BoxShadow(
color: primaryDark.withOpacity(0.03),
blurRadius: 8,
spreadRadius: -1,
offset: const Offset(0, 4),
),
];
static List<BoxShadow> shadowLg = [
BoxShadow(
color: primaryDark.withOpacity(0.08),
blurRadius: 40,
spreadRadius: -4,
offset: const Offset(0, 20),
),
];
static List<BoxShadow> glowPrimary = [
BoxShadow(
color: primaryDark.withOpacity(0.3),
blurRadius: 20,
spreadRadius: -4,
offset: const Offset(0, 8),
),
];
static List<BoxShadow> glowBlue = [
BoxShadow(
color: primaryBlue.withOpacity(0.4),
blurRadius: 24,
spreadRadius: -4,
offset: const Offset(0, 8),
),
];
static List<BoxShadow> glowGreen = [
BoxShadow(
color: statusGreen.withOpacity(0.4),
blurRadius: 24,
spreadRadius: -4,
offset: const Offset(0, 8),
),
];
static List<BoxShadow> glowRed = [
BoxShadow(
color: statusRed.withOpacity(0.4),
blurRadius: 24,
spreadRadius: -4,
offset: const Offset(0, 8),
),
];
static List<BoxShadow> glowOrange = [
BoxShadow(
color: statusOrange.withOpacity(0.4),
blurRadius: 24,
spreadRadius: -4,
offset: const Offset(0, 8),
),
];
static TextStyle get heading1 => GoogleFonts.inter(
fontSize: 28,
fontWeight: FontWeight.w800,
letterSpacing: -1.0,
color: textPrimary,
);
static TextStyle get heading2 => GoogleFonts.inter(
fontSize: 22,
fontWeight: FontWeight.w700,
letterSpacing: -0.5,
color: textPrimary,
);
static TextStyle get heading3 => GoogleFonts.inter(
fontSize: 16,
fontWeight: FontWeight.w700,
letterSpacing: -0.3,
color: textPrimary,
);
static TextStyle get bodyLarge => GoogleFonts.inter(
fontSize: 15,
fontWeight: FontWeight.w500,
color: textPrimary,
);
static TextStyle get bodyMedium => GoogleFonts.inter(
fontSize: 13,
fontWeight: FontWeight.w500,
color: textPrimary,
);
static TextStyle get bodySmall => GoogleFonts.inter(
fontSize: 11,
fontWeight: FontWeight.w500,
color: textSecondary,
);
static TextStyle get labelLarge => GoogleFonts.inter(
fontSize: 13,
fontWeight: FontWeight.w600,
color: textPrimary,
);
static TextStyle get labelMedium => GoogleFonts.inter(
fontSize: 11,
fontWeight: FontWeight.w500,
color: textPrimary,
);
static ThemeData get lightTheme {
return ThemeData(
primaryColor: primaryDark,
scaffoldBackgroundColor: bgWhite,
colorScheme: const ColorScheme.light(
primary: primaryDark,
secondary: primaryOrange,
surface: bgWhite,
error: statusRed,
),
textTheme: TextTheme(
displayLarge: heading1,
displayMedium: heading2,
displaySmall: heading3,
bodyLarge: bodyLarge,
bodyMedium: bodyMedium,
bodySmall: bodySmall,
labelLarge: labelLarge,
),
useMaterial3: true,
);
}
}