diff --git a/lib/Screens/dashboard/status_dashboard.dart b/lib/Screens/dashboard/status_dashboard.dart index 23227f1..9ec8522 100644 --- a/lib/Screens/dashboard/status_dashboard.dart +++ b/lib/Screens/dashboard/status_dashboard.dart @@ -195,65 +195,78 @@ class StatusDashboardState extends State { appBar: CustomAppBar(isDesktop: isDesktop), drawer: CustomDrawer(isDesktop: false), body: Padding( - padding: isDesktop - ? EdgeInsets.symmetric( - horizontal: MediaQuery.of(context).size.width * - 0.1, // 30% of screen width as horizontal padding - vertical: 10, // 5% of screen height as vertical padding - ) - : EdgeInsets.all(0), - child:Container( - // padding: const EdgeInsets.all(10.0), - decoration: BoxDecoration( - color: isDesktop ? Colors.white : const Color(0xFFFCFCFC), - borderRadius: BorderRadius.circular(12), // 👈 Set your desired radius - ), - // color: isDesktop ? Colors.white : Color(0xFFFCFCFC), - child: Row( - children: [ - Expanded( - child: Padding( - padding: const EdgeInsets.all(30.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Wrap( - spacing: 10, - runSpacing: 10, - children: typeBasedCount.map((item) { - double cardWidth = isDesktop - ? (MediaQuery.of(context).size.width * 0.75 - 10) / 2 // 80% width padding adjusted - : MediaQuery.of(context).size.width - 24; // full width with padding + padding: isDesktop + ? EdgeInsets.symmetric( + horizontal: MediaQuery.of(context).size.width * 0.1, // 30% of screen width as horizontal padding + vertical: 10, // 5% of screen height as vertical padding + ) + : EdgeInsets.all(0), + child : LayoutBuilder( + builder: (context, constraints) { + return SingleChildScrollView( + child: ConstrainedBox( + constraints: BoxConstraints( + minHeight: constraints.maxHeight, + ), + child: IntrinsicHeight( // Only needed if child layout depends on height + child: Container( + decoration: BoxDecoration( + color: isDesktop ? Colors.white : const Color(0xFFFCFCFC), + borderRadius: BorderRadius.circular(12), + ), + child: Row( + children: [ + Expanded( + child: Padding( + padding: const EdgeInsets.all(30.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Wrap( + spacing: 10, + runSpacing: 10, + children: typeBasedCount.map((item) { + double cardWidth = isDesktop + ? (MediaQuery.of(context).size.width * 0.75 - 10) / 2 // 80% width padding adjusted + : MediaQuery.of(context).size.width - 24; // full width with padding - return SizedBox( - width: cardWidth, - child: buildInfoCard(item['value'], item['count'], cardWidth), - ); - }).toList(), + return SizedBox( + width: cardWidth, + child: buildInfoCard(item['value'], item['count'], cardWidth), + ); + }).toList(), + ), + const SizedBox(height: 20), + Wrap( + spacing: 10, + runSpacing: 10, + children: statusBasedCount.map((item) { + double cardWidth = isDesktop + ? (MediaQuery.of(context).size.width * 0.90 - 50) / 6 // desktop layout: 6 cards per row + : MediaQuery.of(context).size.width - 24; // mobile: full width + + return SizedBox( + width: cardWidth, + child: buildInfoCard(item['value'], item['count'], cardWidth), + ); + }).toList(), + ), + + ], + ), + ), + ), + ], + ), ), - const SizedBox(height: 20), - Wrap( - spacing: 10, - runSpacing: 10, - children: statusBasedCount.map((item) { - double cardWidth = isDesktop - ? (MediaQuery.of(context).size.width * 0.90 - 50) / 6 // desktop layout: 6 cards per row - : MediaQuery.of(context).size.width - 24; // mobile: full width - - return SizedBox( - width: cardWidth, - child: buildInfoCard(item['value'], item['count'], cardWidth), - ); - }).toList(), - ), - - ], + ), ), - ), - ), - ], - ), - ) + ); + }, + ) + + + ), ); }); diff --git a/lib/Screens/plans/create_plans.dart b/lib/Screens/plans/create_plans.dart index 7c7ee2b..3323f17 100644 --- a/lib/Screens/plans/create_plans.dart +++ b/lib/Screens/plans/create_plans.dart @@ -2594,10 +2594,10 @@ class CreateNewPlansState extends State { children: [ Text( "Trip Name", // Your label - style: TextStyle( - fontSize: 12, - fontWeight: FontWeight.w600, - color: Color(0xFF575A74)), + style: GoogleFonts.poppins( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFF575A74)) ), SizedBox(height: 5), CustomTextFieldWrapper( @@ -2774,8 +2774,10 @@ class CreateNewPlansState extends State { enabled: !widget.isViewMode, decoration: InputDecoration( labelText: "Trip Name *", - - labelStyle: GoogleFonts.poppins(fontSize: 14, color: Colors.black54), + labelStyle: GoogleFonts.poppins( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFF575A74)), floatingLabelBehavior: FloatingLabelBehavior.never, border: InputBorder.none, contentPadding: EdgeInsets.symmetric(vertical: 16), diff --git a/lib/Screens/userManagement/create_user/office_details.dart b/lib/Screens/userManagement/create_user/office_details.dart index 4b176d7..4a6c71f 100644 --- a/lib/Screens/userManagement/create_user/office_details.dart +++ b/lib/Screens/userManagement/create_user/office_details.dart @@ -395,8 +395,10 @@ class _OfficeDetailsState extends State { children: [ Text( "Employee Code", - style: GoogleFonts.poppins( - fontSize: 12, fontWeight: FontWeight.w400, color: Colors.black), + style: GoogleFonts.poppins( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFF575A74)) ), SizedBox(height: 5), CustomTextFieldUserWrapper( @@ -439,8 +441,10 @@ class _OfficeDetailsState extends State { children: [ Text( "Department", - style: GoogleFonts.poppins( - fontSize: 12, fontWeight: FontWeight.w400, color: Colors.black), + style: GoogleFonts.poppins( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFF575A74)) ), SizedBox(height: 5), CustomTextFieldUserWrapper( @@ -489,8 +493,10 @@ class _OfficeDetailsState extends State { children: [ Text( "Group", - style: GoogleFonts.poppins( - fontSize: 12, fontWeight: FontWeight.w400, color: Colors.black), + style: GoogleFonts.poppins( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFF575A74)) ), SizedBox(height: 5), // CustomTextFieldUserWrapper( @@ -627,10 +633,11 @@ class _OfficeDetailsState extends State { children: [ Text( "First Approver", - style: GoogleFonts.poppins( - fontSize: 12, - fontWeight: FontWeight.w400, - color: Colors.black), + style: GoogleFonts.poppins( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFF575A74)) + ), SizedBox(height: 5), CustomTextFieldUserWrapper( @@ -739,10 +746,11 @@ class _OfficeDetailsState extends State { children: [ Text( "Second Approver", - style: GoogleFonts.poppins( - fontSize: 12, - fontWeight: FontWeight.w400, - color: Colors.black), + style: GoogleFonts.poppins( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFF575A74)) + ), SizedBox(height: 5), CustomTextFieldUserWrapper( @@ -850,10 +858,11 @@ class _OfficeDetailsState extends State { children: [ Text( "Third Approver", - style: GoogleFonts.poppins( - fontSize: 12, - fontWeight: FontWeight.w400, - color: Colors.black), + style: GoogleFonts.poppins( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFF575A74)) + ), SizedBox(height: 5), CustomTextFieldUserWrapper( @@ -960,10 +969,11 @@ class _OfficeDetailsState extends State { children: [ Text( "Delegate To", - style: GoogleFonts.poppins( - fontSize: 12, - fontWeight: FontWeight.w400, - color: Colors.black), + style: GoogleFonts.poppins( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFF575A74)) + ), SizedBox(height: 5), CustomTextFieldUserWrapper( @@ -1107,10 +1117,11 @@ class _OfficeDetailsState extends State { children: [ Text( "Start Date", - style: GoogleFonts.poppins( - fontSize: 12, - fontWeight: FontWeight.w600, - color: Color(0xFF575A74)), + style: GoogleFonts.poppins( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFF575A74)) + ), SizedBox(height: 5), CustomTextFieldUserWrapper( @@ -1201,8 +1212,11 @@ class _OfficeDetailsState extends State { children: [ Text( "End Date", - style: GoogleFonts.poppins( - fontSize: 12, fontWeight: FontWeight.w400, color: Colors.black), + style: GoogleFonts.poppins( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFF575A74)) + ), SizedBox(height: 5), CustomTextFieldUserWrapper( diff --git a/lib/Screens/userManagement/create_user/personal_details.dart b/lib/Screens/userManagement/create_user/personal_details.dart index 032ac46..c07af96 100644 --- a/lib/Screens/userManagement/create_user/personal_details.dart +++ b/lib/Screens/userManagement/create_user/personal_details.dart @@ -515,11 +515,11 @@ class PersonalDetailsState extends State { : Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - buildEmailField(), - SizedBox(height: 8), // Vertical space buildMobileField(), - SizedBox(height: 8), + SizedBox(height: 8), // Vertical space buildAlternateMobileField(), + SizedBox(height: 8), + buildEmailField(), ], ), ); @@ -532,19 +532,21 @@ class PersonalDetailsState extends State { ? Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - buildRole(), - SizedBox( - width: 15, - ), - if (!widget.apiselectedUser) buildPassword() + if (!widget.apiselectedUser) ...[ + buildPassword(), + SizedBox(width: 15), + ], + buildRole() ], ) : Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - buildRole(), - SizedBox(height: 8), // - if (!widget.apiselectedUser) buildPassword() + if (!widget.apiselectedUser) ...[ + buildPassword(), + SizedBox(height: 8)], // + buildRole() + ], ), ); @@ -587,8 +589,10 @@ class PersonalDetailsState extends State { children: [ Text( "First Name", - style: GoogleFonts.poppins( - fontSize: 12, fontWeight: FontWeight.w400, color: Colors.black), + style: GoogleFonts.poppins( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFF575A74)) ), SizedBox(height: 5), CustomTextFieldUserWrapper( @@ -632,10 +636,10 @@ class PersonalDetailsState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text("Last Name", - style: TextStyle( + style: GoogleFonts.poppins( fontSize: 12, - fontWeight: FontWeight.w200, - color: Colors.black)), + fontWeight: FontWeight.w600, + color: Color(0xFF575A74))), SizedBox(height: 5), CustomTextFieldUserWrapper( isFocused: false, @@ -677,7 +681,9 @@ class PersonalDetailsState extends State { Text( "Gender", style: GoogleFonts.poppins( - fontSize: 12, fontWeight: FontWeight.w400, color: Colors.black), + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFF575A74)), ), SizedBox(height: 5), CustomTextFieldUserWrapper( @@ -794,8 +800,10 @@ class PersonalDetailsState extends State { children: [ Text( "Date of Birth", - style: GoogleFonts.poppins( - fontSize: 12, fontWeight: FontWeight.w400, color: Colors.black), + style: GoogleFonts.poppins( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFF575A74)) ), SizedBox(height: 5), CustomTextFieldUserWrapper( @@ -848,8 +856,10 @@ class PersonalDetailsState extends State { children: [ Text( "Email", - style: GoogleFonts.poppins( - fontSize: 12, fontWeight: FontWeight.w400, color: Colors.black), + style: GoogleFonts.poppins( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFF575A74)) ), SizedBox(height: 5), CustomTextFieldUserWrapper( @@ -892,8 +902,10 @@ class PersonalDetailsState extends State { children: [ Text( "Mobile Number", - style: GoogleFonts.poppins( - fontSize: 12, fontWeight: FontWeight.w400, color: Colors.black), + style: GoogleFonts.poppins( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFF575A74)) ), SizedBox(height: 5), CustomTextFieldUserWrapper( @@ -941,9 +953,9 @@ class PersonalDetailsState extends State { children: [ Text("Alternate Mobile Number", style: GoogleFonts.poppins( - fontSize: 12, - fontWeight: FontWeight.w400, - color: Colors.black)), + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFF575A74))), SizedBox(height: 5), CustomTextFieldUserWrapper( isFocused: false, @@ -1004,8 +1016,10 @@ class PersonalDetailsState extends State { children: [ Text( "Country", - style: GoogleFonts.poppins( - fontSize: 12, fontWeight: FontWeight.w400, color: Colors.black), + style: GoogleFonts.poppins( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFF575A74)) ), SizedBox(height: 5), CustomTextFieldUserWrapper( @@ -1089,8 +1103,10 @@ class PersonalDetailsState extends State { children: [ Text( "Postal Code", - style: GoogleFonts.poppins( - fontSize: 12, fontWeight: FontWeight.w400, color: Colors.black), + style: GoogleFonts.poppins( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFF575A74)) ), SizedBox(height: 5), CustomTextFieldUserWrapper( @@ -1130,8 +1146,10 @@ class PersonalDetailsState extends State { children: [ Text( "Role ", - style: GoogleFonts.poppins( - fontSize: 12, fontWeight: FontWeight.w400, color: Colors.black), + style: GoogleFonts.poppins( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFF575A74)) ), SizedBox(height: 5), CustomTextFieldUserWrapper( @@ -1182,8 +1200,10 @@ class PersonalDetailsState extends State { children: [ Text( "Address", - style: GoogleFonts.poppins( - fontSize: 12, fontWeight: FontWeight.w400, color: Colors.black), + style: GoogleFonts.poppins( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFF575A74)) ), SizedBox(height: 5), CustomTextFieldUserWrapper( @@ -1219,8 +1239,10 @@ class PersonalDetailsState extends State { children: [ Text( "Password", - style: GoogleFonts.poppins( - fontSize: 12, fontWeight: FontWeight.w400, color: Colors.black), + style: GoogleFonts.poppins( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFF575A74)) ), SizedBox(height: 5), CustomTextFieldUserWrapper( diff --git a/lib/routes/custom_drawer.dart b/lib/routes/custom_drawer.dart index 94bccea..786b5cf 100644 --- a/lib/routes/custom_drawer.dart +++ b/lib/routes/custom_drawer.dart @@ -171,6 +171,11 @@ class _CustomDrawerState extends State { ), // _buildDrawerItem(context, Icons.home_outlined, 'Home', '/home'), + if (userData?["role"] == "Org Admin" || + userData?["role"] == "Travel Admin") + _buildDrawerItem(context, Icons.dashboard, 'Dashboard', + '/StatusDashboard'), + if (userData?["role"] == "Org Admin" || userData?["role"] == "Travel Admin") _buildDrawerItem(context, Icons.insights_outlined, 'All Trips', diff --git a/lib/routes/organizationSetting.dart b/lib/routes/organizationSetting.dart index bc50865..432ac13 100644 --- a/lib/routes/organizationSetting.dart +++ b/lib/routes/organizationSetting.dart @@ -102,77 +102,77 @@ class OrganizationSettingState extends State { }, ]; - List rows = []; - for (int i = 0; i < menuItems.length; i += cardsPerRow) { - List cards = []; - for (int j = i; j < i + cardsPerRow && j < menuItems.length; j++) { - final item = menuItems[j]; - - cards.add( - Expanded( - child: Card( - margin: EdgeInsets.all(8), - color: Colors.white, - child: InkWell( - onTap: () { - // Navigate using go_router - final route = item['value'] as String; - switch (route) { - case '/OrganizationSetup': - case '/group': - case '/department': - case '/PolicyList': - case '/getPerdiem': - case '/templateList': - case '/costcenter': - case '/hotels': - case '/groupDetails' : - context.go(route); - break; - default: - // Handle unknown routes or do nothing - print('Unknown route: $route'); - } - }, - child: Padding( - padding: EdgeInsets.all(12), - child: Row( - children: [ - Icon(item['icon'], size: 40, color: Color(0xFF114D8B)), - SizedBox(width: 16), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - Text( - item['label'], - style: GoogleFonts.poppins( - fontSize: 14, fontWeight: FontWeight.w500), - ), - SizedBox(height: 4), - Text( - item['description'], - style: TextStyle( - fontSize: 14, color: Colors.grey[700]), - ), - ], - ), - ), - ], - ), - ), - ), - ), - ), - ); - } - - rows.add(Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: cards, - )); - } + // List rows = []; + // for (int i = 0; i < menuItems.length; i += cardsPerRow) { + // List cards = []; + // for (int j = i; j < i + cardsPerRow && j < menuItems.length; j++) { + // final item = menuItems[j]; + // + // cards.add( + // Expanded( + // child: Card( + // margin: EdgeInsets.all(8), + // color: Colors.white, + // child: InkWell( + // onTap: () { + // // Navigate using go_router + // final route = item['value'] as String; + // switch (route) { + // case '/OrganizationSetup': + // case '/group': + // case '/department': + // case '/PolicyList': + // case '/getPerdiem': + // case '/templateList': + // case '/costcenter': + // case '/hotels': + // case '/groupDetails' : + // context.go(route); + // break; + // default: + // // Handle unknown routes or do nothing + // print('Unknown route: $route'); + // } + // }, + // child: Padding( + // padding: EdgeInsets.all(12), + // child: Row( + // children: [ + // Icon(item['icon'], size: 40, color: Color(0xFF114D8B)), + // SizedBox(width: 16), + // Expanded( + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // mainAxisSize: MainAxisSize.min, + // children: [ + // Text( + // item['label'], + // style: GoogleFonts.poppins( + // fontSize: 14, fontWeight: FontWeight.w500), + // ), + // SizedBox(height: 4), + // Text( + // item['description'], + // style: TextStyle( + // fontSize: 14, color: Colors.grey[700]), + // ), + // ], + // ), + // ), + // ], + // ), + // ), + // ), + // ), + // ), + // ); + // } + // + // rows.add(Row( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: cards, + // )); + // } // return Container( // // color: Colors.white, @@ -196,7 +196,6 @@ class OrganizationSettingState extends State { // ), // ); - return Container( padding: EdgeInsets.symmetric(vertical: 16, horizontal: 12), child: Column( @@ -213,58 +212,64 @@ class OrganizationSettingState extends State { SizedBox(height: 8), Divider(thickness: 0.2, color: Colors.blueGrey.shade100), SizedBox(height: 12), - Wrap( - spacing: 16, // horizontal space between cards - runSpacing: 16, // vertical space between rows - children: menuItems.map((item) { - return SizedBox( - width: isDesktop ? 325 : double.infinity, - child: Card( - color: Colors.white, - child: InkWell( - onTap: () { - final route = item['value'] as String; - context.go(route); - }, - child: Padding( - padding: EdgeInsets.all(12), - child: Row( - children: [ - Icon(item['icon'], size: 40, color: Color(0xFF114D8B)), - SizedBox(width: 16), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - Text( - item['label'], - style: GoogleFonts.poppins( - fontSize: 14, - fontWeight: FontWeight.w500, + Expanded( + child: SingleChildScrollView( + child: Center( + child: Wrap( + spacing: 16, + runSpacing: 16, + children: menuItems.map((item) { + return SizedBox( + width: isDesktop ? 325 : double.infinity, + child: Card( + color: Colors.white, + child: InkWell( + onTap: () { + final route = item['value'] as String; + context.go(route); + }, + child: Padding( + padding: EdgeInsets.all(12), + child: Row( + children: [ + Icon(item['icon'], size: 40, color: Color(0xFF114D8B)), + SizedBox(width: 16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + item['label'], + style: GoogleFonts.poppins( + fontSize: 14, + fontWeight: FontWeight.w500, + ), + ), + SizedBox(height: 4), + Text( + item['description'], + maxLines: 1, + overflow: TextOverflow.ellipsis, + softWrap: false, + style: TextStyle( + fontSize: 14, + color: Colors.grey[700], + ), + ), + ], + ), ), - ), - SizedBox(height: 4), - Text( - item['description'], - maxLines: 1, - overflow: TextOverflow.ellipsis, - softWrap: false, - style: TextStyle( - fontSize: 14, - color: Colors.grey[700], - ), - ), - ], + ], + ), ), ), - ], - ), - ), - ), + ), + ); + }).toList(), ), - ); - }).toList(), + ), + ), ), ], ),