diff --git a/assets/images/in.svg b/assets/images/in.svg new file mode 100644 index 0000000..a18353f --- /dev/null +++ b/assets/images/in.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/money3.svg b/assets/images/money3.svg new file mode 100644 index 0000000..41bbfd0 --- /dev/null +++ b/assets/images/money3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/out.svg b/assets/images/out.svg new file mode 100644 index 0000000..bae963a --- /dev/null +++ b/assets/images/out.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/watch.svg b/assets/images/watch.svg new file mode 100644 index 0000000..417dfce --- /dev/null +++ b/assets/images/watch.svg @@ -0,0 +1,3 @@ + + + diff --git a/lib/screens/finance_screen.dart b/lib/screens/finance_screen.dart index 3f046e1..74765da 100644 --- a/lib/screens/finance_screen.dart +++ b/lib/screens/finance_screen.dart @@ -1,19 +1,19 @@ import 'package:flutter/material.dart'; +import '../widgets/work_day_card.dart'; class FinanceScreen extends StatelessWidget { const FinanceScreen({super.key}); @override Widget build(BuildContext context) { - return const Center( - child: Text( - 'المالية', - style: TextStyle( - color: Colors.white, - fontSize: 24, - fontWeight: FontWeight.bold, - ), - ), + return ListView( + padding: const EdgeInsets.only(top: 20, bottom: 120), + children: const [ + WorkDayCard(), + WorkDayCard(), + WorkDayCard(), + WorkDayCard(), + ], ); } -} \ No newline at end of file +} diff --git a/lib/screens/main_screen.dart b/lib/screens/main_screen.dart index 66fb0ed..53b2a46 100644 --- a/lib/screens/main_screen.dart +++ b/lib/screens/main_screen.dart @@ -1,6 +1,6 @@ import 'package:coda_project/screens/user_settings_screen.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; +// import 'package:flutter_svg/flutter_svg.dart'; import '../screens/notifications_screen.dart'; import '../widgets/app_background.dart'; import '../widgets/floatingnavbar.dart'; diff --git a/lib/screens/request_advance_scrren.dart b/lib/screens/request_advance_scrren.dart index 8354675..45fd4e5 100644 --- a/lib/screens/request_advance_scrren.dart +++ b/lib/screens/request_advance_scrren.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; +// import 'package:flutter_svg/flutter_svg.dart'; import '../widgets/app_background.dart'; import '../widgets/settings_bar.dart'; import '../widgets/onboarding_button.dart'; diff --git a/lib/widgets/gradient_line.dart b/lib/widgets/gradient_line.dart new file mode 100644 index 0000000..ad0fdb2 --- /dev/null +++ b/lib/widgets/gradient_line.dart @@ -0,0 +1,27 @@ +import 'package:flutter/material.dart'; + +class GradientLine extends StatelessWidget { + final Color start; + final Color end; + + const GradientLine({ + super.key, + required this.start, + required this.end, + }); + + @override + Widget build(BuildContext context) { + return Expanded( + child: Container( + height: 3, + margin: const EdgeInsets.symmetric(horizontal: 4), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [start, end], + ), + ), + ), + ); + } +} diff --git a/lib/widgets/status_circle.dart b/lib/widgets/status_circle.dart new file mode 100644 index 0000000..61ccef9 --- /dev/null +++ b/lib/widgets/status_circle.dart @@ -0,0 +1,28 @@ +import 'package:flutter/material.dart'; + +class StatusCircle extends StatelessWidget { + final Color color; + final Widget icon; + final double size; + + const StatusCircle({ + super.key, + required this.color, + required this.icon, + this.size = 42, // ✅ smaller = card height reduced + }); + + @override + Widget build(BuildContext context) { + return Container( + width: size, + height: size, + decoration: BoxDecoration( + shape: BoxShape.circle, + border: Border.all(color: color, width: 3), + color: Colors.white, + ), + child: Center(child: icon), + ); + } +} diff --git a/lib/widgets/work_day_card.dart b/lib/widgets/work_day_card.dart new file mode 100644 index 0000000..b06502d --- /dev/null +++ b/lib/widgets/work_day_card.dart @@ -0,0 +1,140 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; +import '../widgets/gradient_line.dart'; +import '../widgets/status_circle.dart'; + +class WorkDayCard extends StatelessWidget { + const WorkDayCard({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + margin: const EdgeInsets.symmetric(horizontal: 18, vertical: 10), + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 14), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(22), + boxShadow: const [ + BoxShadow( + color: Colors.black26, + blurRadius: 12, + offset: Offset(0, 6), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + /// ✅ TITLE + const Text( + "يوم عمل", + textAlign: TextAlign.right, + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + + const SizedBox(height: 16), + + /// ✅ ICONS + TEXT UNDER EACH ICON + Row( + children: [ + /// ✅ MONEY + _StatusItem( + color: const Color(0xFFD16400), + icon: SvgPicture.asset('assets/images/money3.svg', width: 20), + label: "سعر كلي\n18,250 د.ع", + ), + + const Expanded( + child: GradientLine( + start: Color(0xFFD16400), + end: Color(0xFF1266A8), + ), + ), + + /// ✅ TIME + _StatusItem( + color: const Color(0xFF1266A8), + icon: SvgPicture.asset('assets/images/watch.svg', width: 20), + label: "عدد ساعات\n5.50", + ), + + const Expanded( + child: GradientLine( + start: Color(0xFF1266A8), + end: Color(0xFFB00000), + ), + ), + + /// ✅ LOGOUT + _StatusItem( + color: const Color(0xFFB00000), + icon: SvgPicture.asset('assets/images/out.svg', width: 20), + label: "خروج\n1:14pm", + ), + + const Expanded( + child: GradientLine( + start: Color(0xFFB00000), + end: Color(0xFF0A8F6B), + ), + ), + + /// ✅ LOGIN + _StatusItem( + color: const Color(0xFF0A8F6B), + icon: SvgPicture.asset('assets/images/in.svg', width: 20), + label: "دخول\n1:14pm", + ), + ], + ), + + const SizedBox(height: 12), + + /// ✅ DIVIDER + const Divider(color: Colors.black38), + + /// ✅ BOTTOM INFO + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: const [ + Text("2025.12.1", style: TextStyle(fontSize: 12)), + Text("ملاحظات ان وجدت", style: TextStyle(fontSize: 12)), + ], + ), + ], + ), + ); + } +} + +/// ✅ REUSABLE STATUS ITEM (CIRCLE + TEXT UNDER IT) +class _StatusItem extends StatelessWidget { + final Color color; + final Widget icon; + final String label; + + const _StatusItem({ + required this.color, + required this.icon, + required this.label, + }); + + @override + Widget build(BuildContext context) { + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + StatusCircle(color: color, icon: icon), + const SizedBox(height: 6), + Text( + label, + textAlign: TextAlign.center, + style: const TextStyle(fontSize: 12), + ), + ], + ); + } +}