From c67529dbac3cfb91467479758056328997c6f477 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Wed, 18 Mar 2026 16:42:12 +0200 Subject: [PATCH 01/26] Migration to mih_package_toolkit --- mih_ui/ios/Runner.xcodeproj/project.pbxproj | 6 +- mih_ui/lib/mih_config/mih_colors.dart | 140 ------- mih_ui/lib/mih_config/mih_theme.dart | 57 ++- .../Example/package_test.dart | 31 +- .../package_tiles/test_package_tile.dart | 14 +- .../package_tools/package_tool_one.dart | 252 ++++--------- .../package_tools/package_tool_three.dart | 4 +- .../package_tools/package_tool_two.dart | 13 +- .../package_tools/package_tool_zero.dart | 142 +++----- .../mih_business_info_card.dart | 113 ++---- .../mih_business_info_card_v2.dart | 115 ++---- .../mih_business_profile_preview.dart | 19 +- .../mih_package_components/mih_button.dart | 68 ---- .../mih_package_components/mih_calendar.dart | 27 +- .../mih_circle_avatar.dart | 8 +- .../mih_date_field.dart | 207 ----------- .../mih_dropdwn_field.dart | 295 --------------- .../mih_floating_menu.dart | 48 --- .../lib/mih_package_components/mih_form.dart | 27 -- .../lib/mih_package_components/mih_icons.dart | 67 ---- .../mih_image_display.dart | 18 +- .../mih_loading_circle.dart | 97 ----- .../mih_notification_drawer.dart | 35 +- .../mih_notification_message.dart | 8 +- .../mih_numeric_stepper.dart | 238 ------------ .../mih_package_components/mih_package.dart | 219 ----------- .../mih_package_action.dart | 38 -- .../mih_package_tile.dart | 214 ----------- .../mih_package_tool_body.dart | 95 ----- .../mih_package_tools.dart | 52 --- .../mih_package_window.dart | 221 ----------- .../mih_personal_profile_preview.dart | 16 +- .../mih_profile_links.dart | 18 +- .../mih_radio_options.dart | 140 ------- .../mih_package_components/mih_scack_bar.dart | 18 - .../mih_search_bar.dart | 190 ---------- .../mih_single_child_scroll.dart | 31 -- .../mih_text_form_field.dart | 318 ---------------- .../mih_time_field.dart | 217 ----------- .../mih_package_components/mih_toggle.dart | 134 ------- .../lib/mih_packages/about_mih/about_mih.dart | 16 +- .../policy_and_terms_text.dart | 10 +- .../package_tile/about_mih_tile.dart | 15 +- .../package_tools/mih_ attributes.dart | 13 +- .../about_mih/package_tools/mih_info.dart | 166 +++------ .../package_tools/mih_privacy_policy.dart | 13 +- .../package_tools/mih_terms_of_service.dart | 13 +- .../builder/build_access_request_list.dart | 48 +-- .../builder/build_business_access_list.dart | 100 ++--- .../access_review/mih_access.dart | 17 +- .../package_tile/mih_access_tile.dart | 10 +- .../package_tools/mih_access_requests.dart | 5 +- .../calculator/mih_calculator.dart | 16 +- .../package_tiles/mih_calculator_tile.dart | 15 +- .../package_tools/currency_exchange_rate.dart | 83 ++--- .../calculator/package_tools/simple_calc.dart | 68 +--- .../calculator/package_tools/tip_calc.dart | 87 ++--- .../builder/build_access_request_list.dart | 48 +-- .../builder/build_appointment_list.dart | 148 +++----- .../calendar/builder/build_queue_list.dart | 9 +- .../calendar/mzansi_calendar.dart | 17 +- .../package_tiles/mzansi_calendar_tile.dart | 15 +- .../calendar/package_tools/appointments.dart | 74 +--- .../mih_auth_forgot_password.dart | 22 +- .../mih_auth_password_reset.dart | 23 +- .../mih_authentication.dart | 17 +- .../package_tools/mih_forgot_password.dart | 41 +-- .../package_tools/mih_register.dart | 55 +-- .../package_tools/mih_reset_password.dart | 41 +-- .../package_tools/mih_sign_in.dart | 107 ++---- .../components/mih_print_prevew.dart | 3 +- .../mih_file_viewer/mih_fle_viewer.dart | 16 +- .../package_tools/mih_expanded_file_view.dart | 39 +- .../mih_home/components/mih_app_drawer.dart | 90 +---- .../lib/mih_packages/mih_home/mih_home.dart | 62 ++-- .../mih_packages/mih_home/mih_home_error.dart | 47 +-- .../mih_home/mih_route_error.dart | 47 +-- .../package_tools/mih_business_home.dart | 20 +- .../package_tools/mih_personal_home.dart | 20 +- .../build_minesweeper_leaderboard_list.dart | 37 +- .../builders/build_my_scoreboard_list.dart | 18 +- .../components/leaderboard_user_ranking.dart | 15 +- .../mih_mine_sweeper_start_game_window.dart | 19 +- .../mine_sweeper/components/mine_tile.dart | 40 +- .../mine_sweeper/mih_mine_sweeper.dart | 17 +- .../package_tiles/mih_mine_sweeper_tile.dart | 15 +- .../mih_mine_sweeper_leader_board.dart | 28 +- .../package_tools/mine_sweeper_game.dart | 158 +++----- .../mine_sweeper_quick_start_guide.dart | 214 +++-------- .../package_tools/my_score_board.dart | 34 +- .../lib/mih_packages/mzansi_ai/mzansi_ai.dart | 17 +- .../package_tiles/mzansi_ai_tile.dart | 15 +- .../mzansi_ai/package_tools/mih_ai_chat.dart | 54 +-- .../build_business_search_resultsList.dart | 13 +- .../build_favourite_businesses_list.dart | 10 +- .../build_user_search_results_list.dart | 13 +- .../mzansi_directory/mzansi_directory.dart | 17 +- .../package_tiles/mzansi_directory_tile.dart | 15 +- .../package_tools/mih_contacts.dart | 13 +- .../mih_favourite_businesses.dart | 38 +- .../package_tools/mih_search_mzansi.dart | 95 ++--- .../builders/build_employee_list.dart | 9 +- .../builders/build_user_list.dart | 9 +- .../business_profile/busines_profile.dart | 17 +- .../components/mih_add_bookmark_alert.dart | 38 +- .../components/mih_add_employee_window.dart | 37 +- .../components/mih_delete_bookmark_alert.dart | 36 +- .../mih_edit_employee_details_window.dart | 57 +-- .../mih_review_business_window.dart | 108 ++---- .../mih_update_business_details_window.dart | 161 ++------ .../mih_update_my_business_user_details.dart | 76 +--- .../mzansi_business_profile_view.dart | 27 +- .../mzansi_set_up_business_profile.dart | 16 +- .../mzansi_business_profile_tile.dart | 15 +- .../mzansi_setup_business_profile_tile.dart | 15 +- .../package_tools/mih_business_details.dart | 52 +-- .../mih_business_details_set_up.dart | 176 +++------ .../mih_business_details_view.dart | 60 +-- .../package_tools/mih_business_qr_code.dart | 107 ++---- .../package_tools/mih_business_reviews.dart | 41 +-- .../mih_business_user_search.dart | 30 +- .../package_tools/mih_my_business_team.dart | 11 +- .../package_tools/mih_my_business_user.dart | 49 +-- .../mih_edit_personal_profile_window.dart | 118 ++---- .../personal_profile/mzansi_profile.dart | 17 +- .../personal_profile/mzansi_profile_view.dart | 22 +- .../package_tiles/mzansi_profile_tile.dart | 15 +- .../mzansi_setup_profile_tile.dart | 15 +- .../package_tools/mih_personal_profile.dart | 44 +-- .../mih_personal_profile_view.dart | 38 +- .../package_tools/mih_personal_settings.dart | 31 +- .../builder/build_loyalty_card_list.dart | 144 +++----- .../components/mih_add_card_window.dart | 39 +- .../components/mih_barcode_scanner.dart | 16 +- .../mzansi_wallet/mih_wallet.dart | 17 +- .../package_tiles/mih_wallet_tile.dart | 15 +- .../package_tools/mih_card_favourites.dart | 3 +- .../package_tools/mih_cards.dart | 29 +- .../build_mih_patient_search_list.dart | 102 ++---- .../build_my_patient_list_list.dart | 100 ++--- .../package_tiles/pat_manager_tile.dart | 15 +- .../package_tools/mih_patient_search.dart | 28 +- .../package_tools/my_patient_list.dart | 34 +- .../package_tools/waiting_room.dart | 97 ++--- .../pat_manager/pat_manager.dart | 17 +- .../components/claim_statement_window.dart | 119 ++---- .../components/icd10_search_window.dart | 18 +- .../components/medicine_search.dart | 3 +- .../mih_edit_patient_details_window.dart | 118 ++---- .../pat_profile/components/prescip_input.dart | 71 ++-- .../build_claim_statement_files_list.dart | 87 ++--- .../list_builders/build_file_view.dart | 7 +- .../list_builders/build_files_list.dart | 101 ++--- .../list_builders/build_icd10_code_list.dart | 9 +- .../list_builders/build_med_list.dart | 8 +- .../list_builders/build_notes_list.dart | 90 ++--- .../package_tiles/patient_profile_tile.dart | 17 +- .../patient_claim_or_statement.dart | 22 +- .../package_tools/patient_consultation.dart | 69 +--- .../package_tools/patient_documents.dart | 96 ++--- .../package_tools/patient_info.dart | 70 ++-- .../package_tools/patient_setup_form.dart | 154 ++------ .../pat_profile/patient_profile.dart | 17 +- .../pat_profile/patient_set_up.dart | 16 +- .../lib/mih_providers/mzansi_ai_provider.dart | 119 ++---- .../mih_access_controls_services.dart | 2 +- .../lib/mih_services/mih_alert_services.dart | 344 +++++------------- .../mih_authentication_services.dart | 27 +- .../mih_business_details_services.dart | 2 +- .../mih_business_employee_services.dart | 2 +- ...h_claim_statement_generation_services.dart | 2 +- .../lib/mih_services/mih_file_services.dart | 3 +- .../mih_services/mih_icd10_code_services.dart | 2 +- .../mih_my_business_user_services.dart | 2 +- .../mih_mzansi_calendar_services.dart | 2 +- .../mih_mzansi_wallet_services.dart | 2 +- .../lib/mih_services/mih_user_services.dart | 11 +- mih_ui/macos/Runner.xcodeproj/project.pbxproj | 6 +- mih_ui/pubspec.lock | 14 +- mih_ui/pubspec.yaml | 3 +- 180 files changed, 2112 insertions(+), 8147 deletions(-) delete mode 100644 mih_ui/lib/mih_config/mih_colors.dart delete mode 100644 mih_ui/lib/mih_package_components/mih_button.dart delete mode 100644 mih_ui/lib/mih_package_components/mih_date_field.dart delete mode 100644 mih_ui/lib/mih_package_components/mih_dropdwn_field.dart delete mode 100644 mih_ui/lib/mih_package_components/mih_floating_menu.dart delete mode 100644 mih_ui/lib/mih_package_components/mih_form.dart delete mode 100644 mih_ui/lib/mih_package_components/mih_icons.dart delete mode 100644 mih_ui/lib/mih_package_components/mih_loading_circle.dart delete mode 100644 mih_ui/lib/mih_package_components/mih_numeric_stepper.dart delete mode 100644 mih_ui/lib/mih_package_components/mih_package.dart delete mode 100644 mih_ui/lib/mih_package_components/mih_package_action.dart delete mode 100644 mih_ui/lib/mih_package_components/mih_package_tile.dart delete mode 100644 mih_ui/lib/mih_package_components/mih_package_tool_body.dart delete mode 100644 mih_ui/lib/mih_package_components/mih_package_tools.dart delete mode 100644 mih_ui/lib/mih_package_components/mih_package_window.dart delete mode 100644 mih_ui/lib/mih_package_components/mih_radio_options.dart delete mode 100644 mih_ui/lib/mih_package_components/mih_scack_bar.dart delete mode 100644 mih_ui/lib/mih_package_components/mih_search_bar.dart delete mode 100644 mih_ui/lib/mih_package_components/mih_single_child_scroll.dart delete mode 100644 mih_ui/lib/mih_package_components/mih_text_form_field.dart delete mode 100644 mih_ui/lib/mih_package_components/mih_time_field.dart delete mode 100644 mih_ui/lib/mih_package_components/mih_toggle.dart diff --git a/mih_ui/ios/Runner.xcodeproj/project.pbxproj b/mih_ui/ios/Runner.xcodeproj/project.pbxproj index d8dfea8d..a6a96f11 100644 --- a/mih_ui/ios/Runner.xcodeproj/project.pbxproj +++ b/mih_ui/ios/Runner.xcodeproj/project.pbxproj @@ -489,7 +489,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_packageIcon_NAME = packageIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; @@ -672,7 +672,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_packageIcon_NAME = packageIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; @@ -699,7 +699,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_packageIcon_NAME = packageIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; diff --git a/mih_ui/lib/mih_config/mih_colors.dart b/mih_ui/lib/mih_config/mih_colors.dart deleted file mode 100644 index 8422230e..00000000 --- a/mih_ui/lib/mih_config/mih_colors.dart +++ /dev/null @@ -1,140 +0,0 @@ -import 'package:flutter/material.dart'; - -class MihColors { - bool women4Change = true; - static Color getPrimaryColor(bool darkMode) { - if (darkMode == true) { - return const Color(0XFF3A4454); // Original - // return const Color(0XFF6641b2); // Women4change - } else { - return const Color(0XFFbedcfe); // Original - // return const Color(0xFFE0D1FF); // Women4change - } - } - - static Color getSecondaryColor(bool darkMode) { - if (darkMode == true) { - return const Color(0XFFbedcfe); // Original - // return const Color(0xFFE0D1FF); // Women4change - } else { - return const Color(0XFF3A4454); // Original - // return const Color(0XFF6641b2); // Women4change - } - } - - static Color getSecondaryInvertedColor(bool darkMode) { - if (darkMode == true) { - return const Color(0XFF412301); // Original - // return const Color(0XFF1f2e00); // Women4change - } else { - return const Color(0XFFc5bbab); // Original - // return const Color(0XFF99be4d); // Women4change - } - } - - static Color getHighlightColor(bool darkMode) { - if (darkMode == true) { - return const Color(0XFF9bc7fa); - // return const Color(0xFFC8AFFB); // Women4change - } else { - return const Color(0XFF354866); - // return const Color(0XFF6641b2); // Women4change - } - } - - static Color getGreyColor(bool darkMode) { - if (darkMode == true) { - return const Color(0XFFc8c8c8); - } else { - return const Color(0XFF747474); - } - } - - static Color getGreenColor(bool darkMode) { - if (darkMode == true) { - return const Color(0xff8ae290); - } else { - return const Color(0xFF41B349); - } - } - - static Color getRedColor(bool darkMode) { - if (darkMode == true) { - return const Color(0xffD87E8B); - } else { - return const Color(0xffbb3d4f); - } - } - - static Color getPinkColor(bool darkMode) { - if (darkMode == true) { - return const Color(0xffdaa2e9); - } else { - // Add a different shade of pink for light mode - return const Color(0xffdaa2e9); - } - } - - static Color getOrangeColor(bool darkMode) { - if (darkMode == true) { - return const Color(0xffd69d7d); - } else { - // Add a different shade of pink for light mode - return const Color(0xFFBD7145); - } - } - - static Color getYellowColor(bool darkMode) { - if (darkMode == true) { - return const Color(0xfff4e467); - } else { - // Add a different shade of pink for light mode - return const Color(0xffd4af37); - } - } - - static Color getBluishPurpleColor(bool darkMode) { - if (darkMode == true) { - return const Color(0xff6e7dcc); - } else { - // Add a different shade of pink for light mode - return const Color(0xFF5567C0); - } - } - - static Color getPurpleColor(bool darkMode) { - if (darkMode == true) { - return const Color(0xffb682e7); - } else { - // Add a different shade of pink for light mode - return const Color(0xFF9857D4); - } - } - - static Color getGoldColor(bool darkMode) { - if (darkMode == true) { - return const Color(0xFFD4AF37); - } else { - // Add a different shade of pink for light mode - return const Color(0xffFFD700); - } - } - - static Color getSilverColor(bool darkMode) { - if (darkMode == true) { - return const Color(0xffC0C0C0); - } else { - // Add a different shade of pink for light mode - return const Color(0xFFA6A6A6); - } - } - - static Color getBronze(bool darkMode) { - if (darkMode == true) { - return const Color(0xffB1560F); - } else { - // Add a different shade of pink for light mode - return const Color(0xFFCD7F32); - } - } -} diff --git a/mih_ui/lib/mih_config/mih_theme.dart b/mih_ui/lib/mih_config/mih_theme.dart index 1e4870cc..ed884841 100644 --- a/mih_ui/lib/mih_config/mih_theme.dart +++ b/mih_ui/lib/mih_config/mih_theme.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import "package:universal_html/html.dart" as html; class MihTheme { @@ -17,66 +17,63 @@ class MihTheme { ThemeData getData(bool bool) { return ThemeData( fontFamily: 'Segoe UI', - scaffoldBackgroundColor: MihColors.getPrimaryColor(mode == "Dark"), + scaffoldBackgroundColor: MihColors.primary(), colorScheme: ColorScheme( brightness: getBritness(), - primary: MihColors.getSecondaryColor(mode == "Dark"), - onPrimary: MihColors.getPrimaryColor(mode == "Dark"), - secondary: MihColors.getPrimaryColor(mode == "Dark"), - onSecondary: MihColors.getSecondaryColor(mode == "Dark"), - error: MihColors.getRedColor(mode == "Dark"), - onError: MihColors.getPrimaryColor(mode == "Dark"), - surface: MihColors.getPrimaryColor(mode == "Dark"), - onSurface: MihColors.getSecondaryColor(mode == "Dark"), + primary: MihColors.secondary(), + onPrimary: MihColors.primary(), + secondary: MihColors.primary(), + onSecondary: MihColors.secondary(), + error: MihColors.red(), + onError: MihColors.primary(), + surface: MihColors.primary(), + onSurface: MihColors.secondary(), ), datePickerTheme: DatePickerThemeData( - backgroundColor: MihColors.getPrimaryColor(mode == "Dark"), - headerBackgroundColor: MihColors.getSecondaryColor(mode == "Dark"), - headerForegroundColor: MihColors.getPrimaryColor(mode == "Dark"), + backgroundColor: MihColors.primary(), + headerBackgroundColor: MihColors.secondary(), + headerForegroundColor: MihColors.primary(), ), appBarTheme: AppBarTheme( - color: MihColors.getSecondaryColor(mode == "Dark"), - foregroundColor: MihColors.getPrimaryColor(mode == "Dark"), + color: MihColors.secondary(), + foregroundColor: MihColors.primary(), titleTextStyle: TextStyle( - color: MihColors.getPrimaryColor(mode == "Dark"), + color: MihColors.primary(), fontSize: 25, fontWeight: FontWeight.bold, ), ), floatingActionButtonTheme: FloatingActionButtonThemeData( - backgroundColor: MihColors.getSecondaryColor(mode == "Dark"), - foregroundColor: MihColors.getPrimaryColor(mode == "Dark"), - extendedTextStyle: - TextStyle(color: MihColors.getPrimaryColor(mode == "Dark")), + backgroundColor: MihColors.secondary(), + foregroundColor: MihColors.primary(), + extendedTextStyle: TextStyle(color: MihColors.primary()), ), drawerTheme: DrawerThemeData( - backgroundColor: MihColors.getPrimaryColor(mode == "Dark"), + backgroundColor: MihColors.primary(), ), textSelectionTheme: TextSelectionThemeData( - cursorColor: MihColors.getPrimaryColor(mode == "Dark"), - selectionColor: - MihColors.getPrimaryColor(mode == "Dark").withOpacity(0.25), - selectionHandleColor: MihColors.getPrimaryColor(mode == "Dark"), + cursorColor: MihColors.primary(), + selectionColor: MihColors.primary().withOpacity(0.25), + selectionHandleColor: MihColors.primary(), ), tooltipTheme: TooltipThemeData( decoration: BoxDecoration( - color: MihColors.getSecondaryColor(mode == "Dark"), + color: MihColors.secondary(), borderRadius: BorderRadius.circular(6), border: Border.all( width: 1.0, - color: MihColors.getPrimaryColor(mode == "Dark"), + color: MihColors.primary(), ), boxShadow: [ BoxShadow( - color: - MihColors.getPrimaryColor(mode == "Dark").withOpacity(0.18), + color: MihColors.primary().withOpacity(0.18), blurRadius: 6, offset: const Offset(0, 2), ), ], ), textStyle: TextStyle( - color: MihColors.getPrimaryColor(mode == "Dark"), + color: MihColors.primary(), fontSize: 13, height: 1.2, ), diff --git a/mih_ui/lib/mih_package_components/Example/package_test.dart b/mih_ui/lib/mih_package_components/Example/package_test.dart index f69cb639..11ae238f 100644 --- a/mih_ui/lib/mih_package_components/Example/package_test.dart +++ b/mih_ui/lib/mih_package_components/Example/package_test.dart @@ -1,13 +1,10 @@ import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_package_components/Example/package_tools/package_tool_three.dart'; import 'package:mzansi_innovation_hub/mih_package_components/Example/package_tools/package_tool_zero.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; import 'package:mzansi_innovation_hub/mih_package_components/Example/package_tools/package_tool_one.dart'; import 'package:mzansi_innovation_hub/mih_package_components/Example/package_tools/package_tool_two.dart'; import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_data_helper_services.dart'; @@ -23,7 +20,7 @@ class PackageTest extends StatefulWidget { } class _PackageTestState extends State { - int _selcetedIndex = 0; + int _selectedIndex = 0; bool _isLoadingInitialData = true; Future _loadInitialData() async { @@ -65,27 +62,27 @@ class _PackageTestState extends State { Map temp = Map(); temp[const Icon(Icons.link)] = () { setState(() { - _selcetedIndex = 0; + _selectedIndex = 0; }); }; temp[const Icon(Icons.warning)] = () { setState(() { - _selcetedIndex = 1; + _selectedIndex = 1; }); }; temp[const Icon(Icons.inbox)] = () { setState(() { - _selcetedIndex = 2; + _selectedIndex = 2; }); }; temp[const Icon(Icons.outbond)] = () { setState(() { - _selcetedIndex = 3; + _selectedIndex = 3; }); }; return MihPackageTools( tools: temp, - selcetedIndex: _selcetedIndex, + selectedIndex: _selectedIndex, ); } @@ -136,16 +133,16 @@ class _PackageTestState extends State { ); } return MihPackage( - appActionButton: getAction(), - appTools: getTools(), - appBody: getToolBody(), - appToolTitles: getToolTitle(), - selectedbodyIndex: _selcetedIndex, + packageActionButton: getAction(), + packageTools: getTools(), + packageToolBodies: getToolBody(), + packageToolTitles: getToolTitle(), + selectedBodyIndex: _selectedIndex, onIndexChange: (newValue) { setState(() { - _selcetedIndex = newValue; + _selectedIndex = newValue; }); - print("Index: $_selcetedIndex"); + print("Index: $_selectedIndex"); }, ); }, diff --git a/mih_ui/lib/mih_package_components/Example/package_tiles/test_package_tile.dart b/mih_ui/lib/mih_package_components/Example/package_tiles/test_package_tile.dart index a3c2ca54..f00e12a3 100644 --- a/mih_ui/lib/mih_package_components/Example/package_tiles/test_package_tile.dart +++ b/mih_ui/lib/mih_package_components/Example/package_tiles/test_package_tile.dart @@ -1,8 +1,6 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tile.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; class TestPackageTile extends StatefulWidget { final double packageSize; @@ -31,15 +29,13 @@ class _TestPackageTileState extends State { // ), // ); }, - appName: "Test", - appIcon: Icon( + packageName: "Test", + packageIcon: Icon( Icons.warning_amber_rounded, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), iconSize: widget.packageSize, - textColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + textColor: MihColors.secondary(), ); } } diff --git a/mih_ui/lib/mih_package_components/Example/package_tools/package_tool_one.dart b/mih_ui/lib/mih_package_components/Example/package_tools/package_tool_one.dart index 33ab49a1..467f657d 100644 --- a/mih_ui/lib/mih_package_components/Example/package_tools/package_tool_one.dart +++ b/mih_ui/lib/mih_package_components/Example/package_tools/package_tool_one.dart @@ -7,33 +7,17 @@ import 'package:flutter/material.dart'; import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:geolocator/geolocator.dart'; import 'package:ken_logger/ken_logger.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_banner_ad.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_business_info_card.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_location_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_date_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_dropdwn_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_numeric_stepper.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_floating_menu.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_image_display.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_radio_options.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_search_bar.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_time_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_toggle.dart'; import 'package:redacted/redacted.dart'; class PackageToolOne extends StatefulWidget { @@ -97,28 +81,22 @@ class _PackageToolOneState extends State { return MihPackageWindow( fullscreen: false, borderOn: true, - foregroundColor: MihColors.getOrangeColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - backgroundColor: MihColors.getBluishPurpleColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + foregroundColor: MihColors.orange(), + backgroundColor: MihColors.bluishPurple(), windowTitle: "Test No Full", menuOptions: [ SpeedDialChild( child: Icon( Icons.add, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Show New Window", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { // showTestWindow(); }, @@ -138,6 +116,7 @@ class _PackageToolOneState extends State { Widget build(BuildContext context) { double screenWidth = MediaQuery.of(context).size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(screenWidth), ); @@ -184,9 +163,7 @@ class _PackageToolOneState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ], @@ -197,16 +174,13 @@ class _PackageToolOneState extends State { onPressed: () { KenLogger.success("Successfully tested"); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), elevation: 10, width: 300, child: Text( "Success Logger", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -219,16 +193,13 @@ class _PackageToolOneState extends State { onPressed: () { KenLogger.error("Successfully tested"); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.red(), elevation: 10, width: 300, child: Text( "Error Logger", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -241,16 +212,13 @@ class _PackageToolOneState extends State { onPressed: () { KenLogger.warning("Successfully tested"); }, - buttonColor: MihColors.getOrangeColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.orange(), elevation: 10, width: 300, child: Text( "Warning Logger", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -263,16 +231,13 @@ class _PackageToolOneState extends State { onPressed: () { KenLogger.info("Successfully tested"); }, - buttonColor: MihColors.getBluishPurpleColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.bluishPurple(), elevation: 10, width: 300, child: Text( "Info Logger", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -288,10 +253,8 @@ class _PackageToolOneState extends State { initialSelection: '+27', showDropDownButton: false, pickerStyle: PickerStyle.bottomSheet, - dialogBackgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - barrierColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + dialogBackgroundColor: MihColors.primary(), + barrierColor: MihColors.primary(), ), const SizedBox(height: 10), Center( @@ -306,16 +269,13 @@ class _PackageToolOneState extends State { }, ); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), elevation: 10, width: 300, child: Text( "Show Loading", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -332,9 +292,7 @@ class _PackageToolOneState extends State { style: TextStyle( fontSize: 15, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ], @@ -353,9 +311,7 @@ class _PackageToolOneState extends State { style: TextStyle( fontSize: 15, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ], @@ -433,8 +389,7 @@ class _PackageToolOneState extends State { ), const SizedBox(height: 10), Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), thickness: 2, ), const SizedBox(height: 10), @@ -447,9 +402,7 @@ class _PackageToolOneState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ], @@ -458,8 +411,7 @@ class _PackageToolOneState extends State { MihBannerAd(), const SizedBox(height: 10), Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), thickness: 2, ), const SizedBox(height: 10), @@ -468,12 +420,8 @@ class _PackageToolOneState extends State { formFields: [ MihTextFormField( width: 200, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _textFieldZeroController, multiLineInput: false, requiredText: false, @@ -484,12 +432,8 @@ class _PackageToolOneState extends State { ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _textFieldOneController, multiLineInput: false, requiredText: true, @@ -501,12 +445,8 @@ class _PackageToolOneState extends State { ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _textFieldTwoController, multiLineInput: false, requiredText: true, @@ -519,12 +459,8 @@ class _PackageToolOneState extends State { ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _textFieldThreeController, multiLineInput: false, requiredText: true, @@ -537,12 +473,8 @@ class _PackageToolOneState extends State { const SizedBox(height: 10), MihNumericStepper( controller: _textFieldFiveController, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), hintText: "Number Stepper", requiredText: true, minValue: 1, @@ -553,12 +485,8 @@ class _PackageToolOneState extends State { MihToggle( hintText: "Toggle", initialPostion: switchpositioin, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - secondaryFillColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + secondaryFillColor: MihColors.primary(), readOnly: false, onChange: (value) { setState(() { @@ -571,12 +499,8 @@ class _PackageToolOneState extends State { MihRadioOptions( controller: _textFieldSixController, hintText: "Radio Options", - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - secondaryFillColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + secondaryFillColor: MihColors.primary(), requiredText: true, radioOptions: const ["Option 1", "Option 2"], ), @@ -617,12 +541,8 @@ class _PackageToolOneState extends State { const SizedBox(height: 10), MihTextFormField( height: 250, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _textFieldFourController, multiLineInput: true, requiredText: false, @@ -646,17 +566,13 @@ class _PackageToolOneState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.secondary(), elevation: 10, width: 300, child: Text( "Submit Form", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -667,8 +583,7 @@ class _PackageToolOneState extends State { ), const SizedBox(height: 10), Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), thickness: 2, ), const SizedBox(height: 10), @@ -679,10 +594,8 @@ class _PackageToolOneState extends State { prefixIcon: Icons.search, prefixAltIcon: MihIcons.mzansiAi, width: 300, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - hintColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + hintColor: MihColors.primary(), onPrefixIconTap: () { print("Search Icon Pressed: ${_searchController.text}"); }, @@ -693,16 +606,13 @@ class _PackageToolOneState extends State { onPressed: () { print("Button Pressed"); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), elevation: 10, width: 300, child: Text( "Click Me", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -713,24 +623,19 @@ class _PackageToolOneState extends State { onPressed: () { print("Button Pressed"); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), width: 300, child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon( Icons.delete, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), Text( "Click Me", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -743,15 +648,12 @@ class _PackageToolOneState extends State { onPressed: () { print("Button Pressed"); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.red(), width: 300, child: Text( "Click Me", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -768,9 +670,7 @@ class _PackageToolOneState extends State { onPressed: () {}, icon: Icon( MihIcons.mihLogo, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), ), ), @@ -782,10 +682,8 @@ class _PackageToolOneState extends State { editable: false, fileNameController: _fileNameController, userSelectedfile: file, - frameColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + frameColor: MihColors.secondary(), + backgroundColor: MihColors.primary(), onChange: (selectedImage) { setState(() { file = selectedImage; @@ -794,10 +692,8 @@ class _PackageToolOneState extends State { ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _fileNameController, hintText: "Selected Avatar File", requiredText: false, @@ -819,10 +715,8 @@ class _PackageToolOneState extends State { ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _imagefileController, hintText: "Selected Image File", requiredText: false, @@ -842,19 +736,15 @@ class _PackageToolOneState extends State { SpeedDialChild( child: Icon( Icons.add, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Show New Window", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { showTestWindow(); }, @@ -862,19 +752,15 @@ class _PackageToolOneState extends State { SpeedDialChild( child: Icon( Icons.add, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Show New Full Window", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { showTestFullWindow(); }, diff --git a/mih_ui/lib/mih_package_components/Example/package_tools/package_tool_three.dart b/mih_ui/lib/mih_package_components/Example/package_tools/package_tool_three.dart index c91f3299..b46dd897 100644 --- a/mih_ui/lib/mih_package_components/Example/package_tools/package_tool_three.dart +++ b/mih_ui/lib/mih_package_components/Example/package_tools/package_tool_three.dart @@ -1,8 +1,7 @@ import 'package:flutter/material.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/profile_link.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_profile_links.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; class PackageToolThree extends StatefulWidget { const PackageToolThree({super.key}); @@ -15,6 +14,7 @@ class _PackageToolThreeState extends State { @override Widget build(BuildContext context) { return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(), ); diff --git a/mih_ui/lib/mih_package_components/Example/package_tools/package_tool_two.dart b/mih_ui/lib/mih_package_components/Example/package_tools/package_tool_two.dart index 181f34b5..a839c26b 100644 --- a/mih_ui/lib/mih_package_components/Example/package_tools/package_tool_two.dart +++ b/mih_ui/lib/mih_package_components/Example/package_tools/package_tool_two.dart @@ -1,10 +1,6 @@ import 'package:custom_rating_bar/custom_rating_bar.dart'; import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; class PackageToolTwo extends StatefulWidget { const PackageToolTwo({super.key}); @@ -17,6 +13,7 @@ class _PackageToolTwoState extends State { @override Widget build(BuildContext context) { return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(), ); @@ -35,8 +32,7 @@ class _PackageToolTwoState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), const SizedBox(height: 10), @@ -58,8 +54,7 @@ class _PackageToolTwoState extends State { onPressed: () {}, icon: Icon( MihIcons.mihLogo, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), ), ) diff --git a/mih_ui/lib/mih_package_components/Example/package_tools/package_tool_zero.dart b/mih_ui/lib/mih_package_components/Example/package_tools/package_tool_zero.dart index 7bf24130..d63bb1e0 100644 --- a/mih_ui/lib/mih_package_components/Example/package_tools/package_tool_zero.dart +++ b/mih_ui/lib/mih_package_components/Example/package_tools/package_tool_zero.dart @@ -1,10 +1,6 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; class PackageToolZero extends StatefulWidget { @@ -18,6 +14,7 @@ class _PackageToolZeroState extends State { @override Widget build(BuildContext context) { return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(), ); @@ -35,8 +32,7 @@ class _PackageToolZeroState extends State { style: TextStyle( fontSize: 24, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), const SizedBox(height: 20), @@ -49,13 +45,11 @@ class _PackageToolZeroState extends State { context, ); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), child: Text( "Basic Success Alert", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -73,16 +67,13 @@ class _PackageToolZeroState extends State { onPressed: () { context.pop(); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), width: 300, elevation: 10, child: Text( "Okay", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -92,16 +83,13 @@ class _PackageToolZeroState extends State { onPressed: () { context.pop(); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), width: 300, elevation: 10, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -111,13 +99,11 @@ class _PackageToolZeroState extends State { context, ); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), child: Text( "Advanced Success Alert", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -130,13 +116,11 @@ class _PackageToolZeroState extends State { MihAlertServices().warningAlert( "Warning Alert!", "This is a friendly warning mee", context); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), child: Text( "Warning Alert", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -154,16 +138,13 @@ class _PackageToolZeroState extends State { onPressed: () { context.pop(); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), width: 300, elevation: 10, child: Text( "Okay", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -173,16 +154,13 @@ class _PackageToolZeroState extends State { onPressed: () { context.pop(); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.red(), width: 300, elevation: 10, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -192,13 +170,11 @@ class _PackageToolZeroState extends State { context, ); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), child: Text( "Advanced Warning Alert", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -214,13 +190,11 @@ class _PackageToolZeroState extends State { context, ); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + buttonColor: MihColors.red(), child: Text( "Basic Error Alert", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -238,16 +212,13 @@ class _PackageToolZeroState extends State { onPressed: () { context.pop(); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), width: 300, elevation: 10, child: Text( "Okay", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -257,16 +228,13 @@ class _PackageToolZeroState extends State { onPressed: () { context.pop(); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), width: 300, elevation: 10, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -276,13 +244,11 @@ class _PackageToolZeroState extends State { context, ); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + buttonColor: MihColors.red(), child: Text( "Advanced Error Alert", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -300,13 +266,11 @@ class _PackageToolZeroState extends State { context, ); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + buttonColor: MihColors.red(), child: Text( "Delete Confirmation Alert", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -318,13 +282,11 @@ class _PackageToolZeroState extends State { onPressed: () { MihAlertServices().internetConnectionAlert(context); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + buttonColor: MihColors.red(), child: Text( "Internet Connection Alert", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -336,13 +298,11 @@ class _PackageToolZeroState extends State { onPressed: () { MihAlertServices().locationPermissionAlert(context); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + buttonColor: MihColors.red(), child: Text( "Location Permission Alert", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -354,13 +314,11 @@ class _PackageToolZeroState extends State { onPressed: () { MihAlertServices().inputErrorAlert(context); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + buttonColor: MihColors.red(), child: Text( "Input Error Alert", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -372,14 +330,12 @@ class _PackageToolZeroState extends State { onPressed: () { MihAlertServices().passwordRequirementAlert(context); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + buttonColor: MihColors.red(), child: FittedBox( child: Text( "Password Requirement Alert", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -392,13 +348,11 @@ class _PackageToolZeroState extends State { onPressed: () { MihAlertServices().passwordMatchAlert(context); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + buttonColor: MihColors.red(), child: Text( "Password Match Alert", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -410,13 +364,11 @@ class _PackageToolZeroState extends State { onPressed: () { MihAlertServices().loginErrorAlert(context); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + buttonColor: MihColors.red(), child: Text( "Login Error Alert", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -428,13 +380,11 @@ class _PackageToolZeroState extends State { onPressed: () { MihAlertServices().emailExistsAlert(context); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + buttonColor: MihColors.red(), child: Text( "Email Exists Alert", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -446,13 +396,11 @@ class _PackageToolZeroState extends State { onPressed: () { MihAlertServices().invalidEmailAlert(context); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + buttonColor: MihColors.red(), child: Text( "Invalid Email Alert", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_package_components/mih_business_info_card.dart b/mih_ui/lib/mih_package_components/mih_business_info_card.dart index b17b53a6..511434cf 100644 --- a/mih_ui/lib/mih_package_components/mih_business_info_card.dart +++ b/mih_ui/lib/mih_package_components/mih_business_info_card.dart @@ -1,14 +1,10 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/bookmarked_business.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; import 'package:mzansi_innovation_hub/mih_objects/business_review.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_directory_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/components/mih_add_bookmark_alert.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/components/mih_delete_bookmark_alert.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/components/mih_review_business_window.dart'; @@ -50,8 +46,7 @@ class _MihBusinessCardState extends State { RedactedConfiguration getRedactedConfiguration() { return RedactedConfiguration( // redactedColor: Colors.pink, - redactedColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + redactedColor: MihColors.primary(), ); } @@ -159,13 +154,10 @@ class _MihBusinessCardState extends State { Function()? ontap, ) { return Material( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), child: InkWell( onTap: ontap, - splashColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark") - .withOpacity(0.2), + splashColor: MihColors.primary().withOpacity(0.2), borderRadius: BorderRadius.circular(15), child: Padding( padding: EdgeInsetsGeometry.symmetric( @@ -186,8 +178,7 @@ class _MihBusinessCardState extends State { child: Icon( icon, // size: 35, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), ), ).redacted( @@ -207,9 +198,7 @@ class _MihBusinessCardState extends State { style: TextStyle( fontSize: 20, fontWeight: FontWeight.bold, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), height: 1.0, ), ).redacted( @@ -222,9 +211,7 @@ class _MihBusinessCardState extends State { style: TextStyle( fontSize: 12, fontWeight: FontWeight.w700, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), ).redacted( context: context, @@ -278,16 +265,13 @@ class _MihBusinessCardState extends State { builder: (BuildContext context, MzansiProfileProvider profileProvider, MzansiDirectoryProvider directoryProvider, Widget? child) { return Material( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark") - .withValues(alpha: 0.6), + color: MihColors.secondary().withValues(alpha: 0.6), borderRadius: BorderRadius.circular(25), elevation: 10, shadowColor: Colors.black, child: Container( decoration: BoxDecoration( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), borderRadius: BorderRadius.circular(10), ), child: Column( @@ -297,8 +281,7 @@ class _MihBusinessCardState extends State { "Call", "Give us a quick call.", Icons.phone, - MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + MihColors.green(), false, () { // print("Calling ${widget.cellNumber}"); @@ -306,15 +289,13 @@ class _MihBusinessCardState extends State { }, ), Divider( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), _buildContactInfo( "Email", "Send us an email.", Icons.email, - MihColors.getPinkColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + MihColors.pink(), false, () { // print("Emailing ${widget.email}"); @@ -330,17 +311,13 @@ class _MihBusinessCardState extends State { child: Column( children: [ Divider( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), _buildContactInfo( "Location", "Come visit us.", Icons.location_on, - MihColors.getOrangeColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + MihColors.orange(), false, () { final latitude = double.parse( @@ -362,17 +339,13 @@ class _MihBusinessCardState extends State { child: Column( children: [ Divider( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), _buildContactInfo( "Website", "Find out more about us.", Icons.vpn_lock, - MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + MihColors.red(), false, () { _launchWebsite(widget.business.website); @@ -393,9 +366,7 @@ class _MihBusinessCardState extends State { padding: const EdgeInsets.symmetric(horizontal: 10.0), child: Divider( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), ), Container( @@ -403,9 +374,7 @@ class _MihBusinessCardState extends State { "Loading Rating", "Loading your rating.", Icons.star_rate_rounded, - MihColors.getYellowColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + MihColors.yellow(), true, null, ), @@ -426,18 +395,14 @@ class _MihBusinessCardState extends State { padding: const EdgeInsets.symmetric(horizontal: 10.0), child: Divider( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), ), _buildContactInfo( ratingDisplayTitle, "Let us know how we are doing.", Icons.star_rate_rounded, - MihColors.getYellowColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + MihColors.yellow(), false, () { businessReviewRatingWindow(directoryProvider, @@ -461,9 +426,7 @@ class _MihBusinessCardState extends State { padding: const EdgeInsets.symmetric(horizontal: 10.0), child: Divider( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), ), Container( @@ -471,9 +434,7 @@ class _MihBusinessCardState extends State { "Loading Bookmark", "Loading your bookmark.", Icons.bookmark_add_rounded, - MihColors.getBluishPurpleColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + MihColors.bluishPurple(), true, null, ), @@ -494,9 +455,7 @@ class _MihBusinessCardState extends State { padding: const EdgeInsets.symmetric(horizontal: 10.0), child: Divider( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), ), _buildContactInfo( @@ -505,9 +464,7 @@ class _MihBusinessCardState extends State { bookmarkBusiness == null ? Icons.bookmark_add_rounded : Icons.bookmark_remove_rounded, - MihColors.getBluishPurpleColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + MihColors.bluishPurple(), false, () { // _launchWebsite(widget.website); @@ -526,14 +483,14 @@ class _MihBusinessCardState extends State { // Padding( // padding: const EdgeInsets.symmetric(horizontal: 10.0), // child: Divider( - // color: MihColors.getPrimaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // color: MihColors.primary(), // ), // ), // _buildContactInfo( // "Bookmark", // "Save us for later.", // Icons.bookmark_add_rounded, - // MihColors.getBluishPurpleColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // MihColors.bluishPurple(), // () { // // _launchWebsite(widget.website); // print("Saving ${widget.business.Name} to Directory"); @@ -544,7 +501,7 @@ class _MihBusinessCardState extends State { // Padding( // padding: const EdgeInsets.symmetric(horizontal: 10.0), // child: Divider( - // color: MihColors.getPrimaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // color: MihColors.primary(), // ), // ), ], @@ -646,16 +603,14 @@ class _MihBusinessCardState extends State { Icon( MihIcons.mihLogo, size: 125, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( "Let's Get Started", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -664,8 +619,7 @@ class _MihBusinessCardState extends State { Text( "Ready to dive in to the world of MIH?\nSign in or create a free MIH account to unlock all the powerful features of the MIH app. It's quick and easy!", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 15, ), ), @@ -678,16 +632,13 @@ class _MihBusinessCardState extends State { extra: true, ); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), elevation: 10, width: 300, child: Text( "Sign In/ Create Account", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_package_components/mih_business_info_card_v2.dart b/mih_ui/lib/mih_package_components/mih_business_info_card_v2.dart index 2c9684d7..f4ddf222 100644 --- a/mih_ui/lib/mih_package_components/mih_business_info_card_v2.dart +++ b/mih_ui/lib/mih_package_components/mih_business_info_card_v2.dart @@ -1,14 +1,10 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/bookmarked_business.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; import 'package:mzansi_innovation_hub/mih_objects/business_review.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_directory_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/components/mih_add_bookmark_alert.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/components/mih_delete_bookmark_alert.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/components/mih_review_business_window.dart'; @@ -50,8 +46,7 @@ class _MihBusinessCardV2State extends State { RedactedConfiguration getRedactedConfiguration() { return RedactedConfiguration( // redactedColor: Colors.pink, - redactedColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + redactedColor: MihColors.primary(), ); } @@ -200,12 +195,10 @@ class _MihBusinessCardV2State extends State { onPressed: () { _makePhoneCall(widget.business.contact_no); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), child: Icon( Icons.phone, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), size: iconSize, ), ), @@ -215,9 +208,7 @@ class _MihBusinessCardV2State extends State { "Call", style: TextStyle( fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 20, ), ), @@ -236,12 +227,10 @@ class _MihBusinessCardV2State extends State { "Dear ${widget.business.Name},\n\nI would like to inquire about your services.\n\nBest regards,\n", ); }, - buttonColor: MihColors.getPinkColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.pink(), child: Icon( Icons.email, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), size: iconSize, ), ), @@ -251,9 +240,7 @@ class _MihBusinessCardV2State extends State { "Email", style: TextStyle( fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 20, ), ), @@ -276,13 +263,10 @@ class _MihBusinessCardV2State extends State { longitude: longitude, ); }, - buttonColor: MihColors.getOrangeColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.orange(), child: Icon( Icons.location_on, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), size: iconSize, ), ), @@ -292,9 +276,7 @@ class _MihBusinessCardV2State extends State { "Maps", style: TextStyle( fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 20, ), ), @@ -311,13 +293,10 @@ class _MihBusinessCardV2State extends State { onPressed: () { _launchWebsite(widget.business.website); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.red(), child: Icon( Icons.language, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), size: iconSize, ), ), @@ -327,9 +306,7 @@ class _MihBusinessCardV2State extends State { "Website", style: TextStyle( fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 20, ), ), @@ -346,14 +323,10 @@ class _MihBusinessCardV2State extends State { width: 80, height: 80, onPressed: () {}, - buttonColor: MihColors.getGreyColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.grey(), child: Icon( Icons.star_rate_rounded, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), size: iconSize, ), ).redacted(context: context, redact: true), @@ -363,9 +336,7 @@ class _MihBusinessCardV2State extends State { "Rate Us", style: TextStyle( fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 20, ), ).redacted(context: context, redact: true), @@ -389,14 +360,10 @@ class _MihBusinessCardV2State extends State { businessReviewRatingWindow(directoryProvider, businessReview, true, widget.width); }, - buttonColor: MihColors.getYellowColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.yellow(), child: Icon( Icons.star_rate_rounded, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), size: iconSize, ), ), @@ -406,9 +373,7 @@ class _MihBusinessCardV2State extends State { ratingTitle, style: TextStyle( fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 20, ), ), @@ -428,14 +393,10 @@ class _MihBusinessCardV2State extends State { width: 80, height: 80, onPressed: () {}, - buttonColor: MihColors.getGreyColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.grey(), child: Icon( Icons.bookmark_add_rounded, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), size: iconSize, ), ).redacted(context: context, redact: true), @@ -445,9 +406,7 @@ class _MihBusinessCardV2State extends State { "bookmark", style: TextStyle( fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 20, ), ).redacted(context: context, redact: true), @@ -474,16 +433,12 @@ class _MihBusinessCardV2State extends State { showDeleteBookmarkAlert(bookmarkBusiness); } }, - buttonColor: MihColors.getBluishPurpleColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.bluishPurple(), child: Icon( bookmarkBusiness == null ? Icons.bookmark_add_rounded : Icons.bookmark_remove_rounded, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), size: iconSize, ), ), @@ -493,9 +448,7 @@ class _MihBusinessCardV2State extends State { bookmarkDisplayTitle, style: TextStyle( fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 20, ), ), @@ -602,16 +555,14 @@ class _MihBusinessCardV2State extends State { Icon( MihIcons.mihLogo, size: 125, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( "Let's Get Started", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -620,8 +571,7 @@ class _MihBusinessCardV2State extends State { Text( "Ready to dive in to the world of MIH?\nSign in or create a free MIH account to unlock all the powerful features of the MIH app. It's quick and easy!", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 15, ), ), @@ -634,16 +584,13 @@ class _MihBusinessCardV2State extends State { extra: true, ); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), elevation: 10, width: 300, child: Text( "Sign In/ Create Account", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_package_components/mih_business_profile_preview.dart b/mih_ui/lib/mih_package_components/mih_business_profile_preview.dart index 0380688e..5f7d39dd 100644 --- a/mih_ui/lib/mih_package_components/mih_business_profile_preview.dart +++ b/mih_ui/lib/mih_package_components/mih_business_profile_preview.dart @@ -1,10 +1,8 @@ import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_directory_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_location_services.dart'; import 'package:provider/provider.dart'; @@ -54,16 +52,13 @@ class _MihBusinessProfilePreviewState extends State { ? Icon( MihIcons.mihRing, size: profilePictureWidth, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ) : widget.imageFile == null ? Icon( MihIcons.iDontKnow, size: profilePictureWidth, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ) : MihCircleAvatar( imageFile: widget.imageFile, @@ -72,12 +67,8 @@ class _MihBusinessProfilePreviewState extends State { editable: false, fileNameController: TextEditingController(), userSelectedfile: null, - frameColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + frameColor: MihColors.secondary(), + backgroundColor: MihColors.primary(), onChange: () {}, ), const SizedBox(width: 15), diff --git a/mih_ui/lib/mih_package_components/mih_button.dart b/mih_ui/lib/mih_package_components/mih_button.dart deleted file mode 100644 index 6e76d55c..00000000 --- a/mih_ui/lib/mih_package_components/mih_button.dart +++ /dev/null @@ -1,68 +0,0 @@ -import 'package:flutter/material.dart'; - -class MihButton extends StatelessWidget { - final void Function()? onPressed; - final void Function()? onLongPressed; - final Color buttonColor; - final double? width; - final double? height; - final double? borderRadius; - final double? elevation; // 0 = flat, higher = more shadow - final Widget child; - - const MihButton({ - super.key, - required this.onPressed, - this.onLongPressed, - required this.buttonColor, - this.width, - this.height, - this.borderRadius, - this.elevation, - required this.child, - }); - Color _darkerColor(Color color, [double amount = .1]) { - final hsl = HSLColor.fromColor(color); - final hslDark = hsl.withLightness((hsl.lightness - amount).clamp(0.0, 1.0)); - return hslDark.toColor(); - } - - @override - Widget build(BuildContext context) { - final Color effectiveButtonColor = onPressed == null - ? buttonColor.withValues(alpha: 0.6) // Example disabled color - : buttonColor; - final Color rippleColor = _darkerColor(effectiveButtonColor, 0.1); - final double radius = borderRadius ?? 25.0; - final double effectiveElevation = - onPressed == null ? 0.0 : (elevation ?? 4.0); - return MouseRegion( - cursor: onPressed == null - ? SystemMouseCursors.basic - : SystemMouseCursors.click, - child: Material( - color: effectiveButtonColor, - borderRadius: BorderRadius.circular(radius), - elevation: effectiveElevation, - shadowColor: Colors.black, - child: InkWell( - borderRadius: BorderRadius.circular(radius), - splashColor: rippleColor, - highlightColor: rippleColor.withValues(alpha: 0.2), - hoverColor: rippleColor.withValues(alpha: 0.3), - onTap: onPressed, - onLongPress: onLongPressed, - child: Container( - width: width, - height: height, - padding: (width == null || height == null) - ? const EdgeInsets.symmetric(horizontal: 24, vertical: 12) - : null, - alignment: Alignment.center, - child: child, - ), - ), - ), - ); - } -} diff --git a/mih_ui/lib/mih_package_components/mih_calendar.dart b/mih_ui/lib/mih_package_components/mih_calendar.dart index 4fcfd7c0..7021fdef 100644 --- a/mih_ui/lib/mih_package_components/mih_calendar.dart +++ b/mih_ui/lib/mih_package_components/mih_calendar.dart @@ -1,8 +1,7 @@ import 'package:flutter/material.dart'; import 'package:ken_logger/ken_logger.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_calendar_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:provider/provider.dart'; import 'package:table_calendar/table_calendar.dart'; @@ -54,8 +53,7 @@ class _MIHCalendarState extends State { formatButtonDecoration: BoxDecoration( border: Border.fromBorderSide( BorderSide( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), borderRadius: const BorderRadius.all( @@ -79,36 +77,29 @@ class _MIHCalendarState extends State { calendarStyle: CalendarStyle( outsideDaysVisible: false, todayTextStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), todayDecoration: BoxDecoration( - color: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.green(), shape: BoxShape.circle, ), selectedTextStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), selectedDecoration: BoxDecoration( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), shape: BoxShape.circle, ), weekendTextStyle: TextStyle( - color: MihColors.getGreyColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.grey(), ), ), daysOfWeekStyle: DaysOfWeekStyle( weekdayStyle: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), weekendStyle: TextStyle( - color: MihColors.getGreyColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.grey(), ), ), ), diff --git a/mih_ui/lib/mih_package_components/mih_circle_avatar.dart b/mih_ui/lib/mih_package_components/mih_circle_avatar.dart index c3d4db1f..24721cb9 100644 --- a/mih_ui/lib/mih_package_components/mih_circle_avatar.dart +++ b/mih_ui/lib/mih_package_components/mih_circle_avatar.dart @@ -4,10 +4,8 @@ import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:ken_logger/ken_logger.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; class MihCircleAvatar extends StatefulWidget { final ImageProvider? imageFile; @@ -126,9 +124,7 @@ class _MihCircleAvatarState extends State { child: IconButton.filled( style: ButtonStyle( backgroundColor: WidgetStateProperty.all( - MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + MihColors.green(), ), ), onPressed: () async { diff --git a/mih_ui/lib/mih_package_components/mih_date_field.dart b/mih_ui/lib/mih_package_components/mih_date_field.dart deleted file mode 100644 index d1ad38f5..00000000 --- a/mih_ui/lib/mih_package_components/mih_date_field.dart +++ /dev/null @@ -1,207 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; - -class MihDateField extends StatefulWidget { - final TextEditingController controller; - final String labelText; - final bool required; - final double? width; - final double? height; - final double? borderRadius; - final double? elevation; - final FormFieldValidator? validator; - const MihDateField({ - super.key, - required this.controller, - required this.labelText, - required this.required, - this.width, - this.height, - this.borderRadius, - this.elevation, - this.validator, - }); - - @override - State createState() => _MihDateFieldState(); -} - -class _MihDateFieldState extends State { - FormFieldState? _formFieldState; - - Future _selectDate(BuildContext context) async { - DateTime? picked = await showDatePicker( - context: context, - initialDate: widget.controller.text.isNotEmpty - ? DateTime.tryParse(widget.controller.text) ?? DateTime.now() - : DateTime.now(), - firstDate: DateTime(2000), - lastDate: DateTime(2100), - ); - if (picked != null) { - widget.controller.text = picked.toString().split(" ")[0]; - _formFieldState?.didChange(widget.controller.text); - setState(() {}); - } - } - - @override - Widget build(BuildContext context) { - return Center( - child: SizedBox( - width: widget.width, - height: widget.height, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - widget.labelText, - style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - fontSize: 18, - fontWeight: FontWeight.bold, - ), - ), - if (!widget.required) - Text( - "(Optional)", - style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - fontSize: 15, - fontWeight: FontWeight.bold, - ), - ), - ], - ), - const SizedBox(height: 4), - FormField( - initialValue: widget.controller.text, - validator: widget.validator, - autovalidateMode: AutovalidateMode.onUserInteraction, - builder: (field) { - _formFieldState = field; - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Material( - elevation: widget.elevation ?? 4.0, - borderRadius: - BorderRadius.circular(widget.borderRadius ?? 8.0), - child: TextFormField( - controller: widget.controller, - readOnly: true, - onTap: () => _selectDate(context), - style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - fontWeight: FontWeight.w500, - ), - decoration: InputDecoration( - suffixIcon: Icon( - Icons.calendar_today, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - ), - errorStyle: const TextStyle(height: 0, fontSize: 0), - contentPadding: const EdgeInsets.symmetric( - horizontal: 10.0, vertical: 8.0), - filled: true, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - border: OutlineInputBorder( - borderRadius: BorderRadius.circular( - widget.borderRadius ?? 8.0), - borderSide: field.hasError - ? BorderSide( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - width: 2.0, - ) - : BorderSide.none, - ), - enabledBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular( - widget.borderRadius ?? 8.0), - borderSide: BorderSide.none, - ), - focusedBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular( - widget.borderRadius ?? 8.0), - borderSide: BorderSide( - color: field.hasError - ? MihColors.getRedColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark") - : MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - width: 3.0, - ), - ), - errorBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular( - widget.borderRadius ?? 8.0), - borderSide: BorderSide( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - width: 3.0, - ), - ), - focusedErrorBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular( - widget.borderRadius ?? 8.0), - borderSide: BorderSide( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - width: 3.0, - ), - ), - ), - onChanged: (value) { - field.didChange(value); - }, - ), - ), - if (field.hasError) - Padding( - padding: const EdgeInsets.only(left: 8.0, top: 4.0), - child: Text( - field.errorText ?? '', - style: TextStyle( - fontSize: 12, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - fontWeight: FontWeight.bold, - ), - ), - ), - ], - ); - }, - ), - ], - ), - ), - ); - } -} diff --git a/mih_ui/lib/mih_package_components/mih_dropdwn_field.dart b/mih_ui/lib/mih_package_components/mih_dropdwn_field.dart deleted file mode 100644 index 3ec6861f..00000000 --- a/mih_ui/lib/mih_package_components/mih_dropdwn_field.dart +++ /dev/null @@ -1,295 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; - -class MihDropdownField extends StatefulWidget { - final TextEditingController controller; - final String hintText; - final bool requiredText; - final List dropdownOptions; - final bool editable; - final bool enableSearch; - final FormFieldValidator? validator; - final Function(String?)? onSelected; - - const MihDropdownField({ - super.key, - required this.controller, - required this.hintText, - required this.dropdownOptions, - required this.requiredText, - required this.editable, - required this.enableSearch, - this.validator, - this.onSelected, - }); - - @override - State createState() => _MihDropdownFieldState(); -} - -class _MihDropdownFieldState extends State { - late List> menu; - - List> buildMenuOptions(List options) { - List> menuList = []; - for (final i in options) { - menuList.add(DropdownMenuEntry( - value: i, - label: i, - style: ButtonStyle( - foregroundColor: WidgetStatePropertyAll(MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark")), - ), - )); - } - return menuList; - } - - @override - void didChangeDependencies() { - super.didChangeDependencies(); - menu = buildMenuOptions(widget.dropdownOptions); - } - - @override - void initState() { - super.initState(); - menu = widget.dropdownOptions - .map((e) => DropdownMenuEntry(value: e, label: e)) - .toList(); - } - - @override - Widget build(BuildContext context) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - widget.hintText, - style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - fontSize: 18, - fontWeight: FontWeight.bold, - ), - ), - if (!widget.requiredText) - Text( - "(Optional)", - style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - fontSize: 15, - fontWeight: FontWeight.bold, - ), - ), - ], - ), - const SizedBox(height: 4), - FormField( - validator: widget.validator, - autovalidateMode: AutovalidateMode.onUserInteraction, - initialValue: widget.controller.text, - builder: (field) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - Expanded( - child: Theme( - data: Theme.of(context).copyWith( - scrollbarTheme: ScrollbarThemeData( - thumbColor: WidgetStatePropertyAll( - MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark")), - thickness: const WidgetStatePropertyAll(6), - radius: const Radius.circular(10), - thumbVisibility: const WidgetStatePropertyAll( - true), // Always show when scrolling - ), - textSelectionTheme: TextSelectionThemeData( - cursorColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - selectionColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark") - .withValues(alpha: 0.3), - selectionHandleColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - ), - ), - child: DropdownMenu( - controller: widget.controller, - dropdownMenuEntries: menu, - enableSearch: widget.enableSearch, - enableFilter: widget.enableSearch, - enabled: widget.editable, - textInputAction: widget.enableSearch - ? TextInputAction.search - : TextInputAction.none, - requestFocusOnTap: widget.enableSearch, - menuHeight: 400, - expandedInsets: EdgeInsets.zero, - textStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - fontWeight: FontWeight.w500, - ), - trailingIcon: Icon( - Icons.arrow_drop_down, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - ), - selectedTrailingIcon: Icon( - Icons.arrow_drop_up, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - ), - // leadingIcon: - // IconButton( - // onPressed: () { - // widget.controller.clear(); - // field.didChange(''); - // }, - // icon: Icon( - // Icons.delete_outline_rounded, - // color: MihColors.getPrimaryColor( - // MzansiInnovationHub.of(context)!.theme.mode == - // "Dark"), - // ), - // ), - onSelected: (String? selectedValue) { - field.didChange(selectedValue); - widget.onSelected?.call(selectedValue); - }, - menuStyle: MenuStyle( - backgroundColor: WidgetStatePropertyAll( - MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark")), - side: WidgetStatePropertyAll( - BorderSide( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - width: 1.0), - ), - shape: WidgetStatePropertyAll( - RoundedRectangleBorder( - borderRadius: BorderRadius.circular( - 10), // Increase for more roundness - ), - ), - ), - inputDecorationTheme: InputDecorationTheme( - errorStyle: const TextStyle(height: 0, fontSize: 0), - contentPadding: const EdgeInsets.symmetric( - horizontal: 10.0, vertical: 8.0), - filled: true, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - enabledBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(8.0), - borderSide: BorderSide.none, - ), - focusedBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(8.0), - borderSide: BorderSide( - color: field.hasError - ? MihColors.getRedColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark") - : MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - width: 3.0, - ), - ), - errorBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(8.0), - borderSide: BorderSide( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - width: 3.0, - ), - ), - focusedErrorBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(8.0), - borderSide: BorderSide( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - width: 3.0, - ), - ), - ), - ), - ), - ), - const SizedBox(width: 8), - GestureDetector( - onTap: () { - widget.controller.clear(); - field.didChange(''); - }, - child: Icon( - size: 35, - Icons.delete_rounded, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - ), - ), - ], - ), - if (field.hasError) - Padding( - padding: const EdgeInsets.only(left: 8.0, top: 4.0), - child: Text( - field.errorText ?? '', - style: TextStyle( - fontSize: 12, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - fontWeight: FontWeight.bold, - ), - ), - ), - ], - ); - }, - ), - ], - ); - } -} diff --git a/mih_ui/lib/mih_package_components/mih_floating_menu.dart b/mih_ui/lib/mih_package_components/mih_floating_menu.dart deleted file mode 100644 index 5547d31e..00000000 --- a/mih_ui/lib/mih_package_components/mih_floating_menu.dart +++ /dev/null @@ -1,48 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_speed_dial/flutter_speed_dial.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; - -class MihFloatingMenu extends StatefulWidget { - final IconData? icon; - final double? iconSize; - final AnimatedIconData? animatedIcon; - final SpeedDialDirection? direction; - final List children; - const MihFloatingMenu({ - super.key, - this.icon, - this.iconSize, - this.animatedIcon, - this.direction, - required this.children, - }); - - @override - State createState() => _MihFloatingMenuState(); -} - -class _MihFloatingMenuState extends State { - @override - Widget build(BuildContext context) { - return SpeedDial( - key: GlobalKey(), - icon: widget.icon, - buttonSize: Size(widget.iconSize ?? 56.0, widget.iconSize ?? 56.0), - animatedIcon: widget.animatedIcon, - direction: widget.direction ?? SpeedDialDirection.up, - activeIcon: Icons.close, - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - activeBackgroundColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - foregroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - overlayColor: Colors.black, - overlayOpacity: 0.5, - children: widget.children, - onOpen: () => debugPrint('OPENING DIAL'), - onClose: () => debugPrint('DIAL CLOSED'), - ); - } -} diff --git a/mih_ui/lib/mih_package_components/mih_form.dart b/mih_ui/lib/mih_package_components/mih_form.dart deleted file mode 100644 index 6c880b97..00000000 --- a/mih_ui/lib/mih_package_components/mih_form.dart +++ /dev/null @@ -1,27 +0,0 @@ -import 'package:flutter/material.dart'; - -class MihForm extends StatefulWidget { - final GlobalKey formKey; - final List formFields; - const MihForm({ - super.key, - required this.formKey, - required this.formFields, - }); - - @override - State createState() => _MihFormState(); -} - -class _MihFormState extends State { - @override - Widget build(BuildContext context) { - return Form( - key: widget.formKey, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: widget.formFields, - ), - ); - } -} diff --git a/mih_ui/lib/mih_package_components/mih_icons.dart b/mih_ui/lib/mih_package_components/mih_icons.dart deleted file mode 100644 index 6dbb19c8..00000000 --- a/mih_ui/lib/mih_package_components/mih_icons.dart +++ /dev/null @@ -1,67 +0,0 @@ -import 'package:flutter/widgets.dart'; // You need this import for IconData - -class MihIcons { - MihIcons._(); // This makes the class non-instantiable (good practice for utility classes) - - // This MUST match the 'family' name you specify in pubspec.yaml - static const _mihFontFam = 'MihIcons'; - // Set to your package name ONLY if this font is part of a separate package you created - static const String? _mihFontPkg = null; - -// IconData constants based on your style.css file - // Note: We convert the hex code from CSS (\eXXX) to an integer (0xeXXX) - - static const IconData mineSweeper = - IconData(0xe900, fontFamily: _mihFontFam, fontPackage: _mihFontPkg); - - static const IconData mzansiDirectory = - IconData(0xe901, fontFamily: _mihFontFam, fontPackage: _mihFontPkg); - - static const IconData personalProfile = - IconData(0xe902, fontFamily: _mihFontFam, fontPackage: _mihFontPkg); - - static const IconData aboutMih = - IconData(0xe903, fontFamily: _mihFontFam, fontPackage: _mihFontPkg); - - static const IconData accessControl = - IconData(0xe904, fontFamily: _mihFontFam, fontPackage: _mihFontPkg); - - static const IconData businessProfile = - IconData(0xe905, fontFamily: _mihFontFam, fontPackage: _mihFontPkg); - - static const IconData businessSetup = - IconData(0xe906, fontFamily: _mihFontFam, fontPackage: _mihFontPkg); - - static const IconData calculator = - IconData(0xe907, fontFamily: _mihFontFam, fontPackage: _mihFontPkg); - - static const IconData calendar = - IconData(0xe908, fontFamily: _mihFontFam, fontPackage: _mihFontPkg); - - static const IconData iDontKnow = - IconData(0xe909, fontFamily: _mihFontFam, fontPackage: _mihFontPkg); - - static const IconData mihLogo = - IconData(0xe90a, fontFamily: _mihFontFam, fontPackage: _mihFontPkg); - - static const IconData mihRing = - IconData(0xe90b, fontFamily: _mihFontFam, fontPackage: _mihFontPkg); - - static const IconData mzansiAi = - IconData(0xe90c, fontFamily: _mihFontFam, fontPackage: _mihFontPkg); - - static const IconData mzansiWallet = - IconData(0xe90d, fontFamily: _mihFontFam, fontPackage: _mihFontPkg); - - static const IconData notifications = - IconData(0xe90e, fontFamily: _mihFontFam, fontPackage: _mihFontPkg); - - static const IconData patientManager = - IconData(0xe90f, fontFamily: _mihFontFam, fontPackage: _mihFontPkg); - - static const IconData patientProfile = - IconData(0xe910, fontFamily: _mihFontFam, fontPackage: _mihFontPkg); - - static const IconData profileSetup = - IconData(0xe911, fontFamily: _mihFontFam, fontPackage: _mihFontPkg); -} diff --git a/mih_ui/lib/mih_package_components/mih_image_display.dart b/mih_ui/lib/mih_package_components/mih_image_display.dart index 3197628d..f8ad1f09 100644 --- a/mih_ui/lib/mih_package_components/mih_image_display.dart +++ b/mih_ui/lib/mih_package_components/mih_image_display.dart @@ -3,8 +3,8 @@ import 'dart:io'; import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; import 'package:ken_logger/ken_logger.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; class MihImageDisplay extends StatefulWidget { final ImageProvider? imageFile; @@ -67,9 +67,7 @@ class _MihImageDisplayState extends State { // width: widget.width, height: widget.height, decoration: BoxDecoration( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), borderRadius: BorderRadius.circular(widget.width * 0.1), ), child: Image(image: imagePreview!), @@ -79,15 +77,13 @@ class _MihImageDisplayState extends State { width: widget.width, height: widget.height, decoration: BoxDecoration( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), borderRadius: BorderRadius.circular(widget.width * 0.1), ), child: Icon( Icons.image_not_supported_rounded, size: widget.width * 0.3, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), ), Visibility( @@ -97,11 +93,9 @@ class _MihImageDisplayState extends State { right: 5, child: IconButton.filled( style: IconButton.styleFrom( - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), ), - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), onPressed: () async { try { FilePickerResult? result = diff --git a/mih_ui/lib/mih_package_components/mih_loading_circle.dart b/mih_ui/lib/mih_package_components/mih_loading_circle.dart deleted file mode 100644 index 576a425a..00000000 --- a/mih_ui/lib/mih_package_components/mih_loading_circle.dart +++ /dev/null @@ -1,97 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; -import '../main.dart'; - -class Mihloadingcircle extends StatefulWidget { - final String? message; - const Mihloadingcircle({ - super.key, - this.message, - }); - - @override - State createState() => _MihloadingcircleState(); -} - -class _MihloadingcircleState extends State - with SingleTickerProviderStateMixin { - late AnimationController _controller; - late Animation _animation; - - @override - void initState() { - super.initState(); - _controller = AnimationController( - duration: const Duration( - milliseconds: 500), // Duration for one pulse (grow and shrink) - vsync: this, - ); - _animation = Tween( - begin: 200, - end: 200 * 0.5, // Pulse to 50% of the initial size - ).animate(CurvedAnimation( - parent: _controller, - curve: Curves.easeInOut, // Smooth start and end of the pulse - )); - _controller.repeat(reverse: true); - } - - @override - void dispose() { - _controller.dispose(); - super.dispose(); - } - - @override - Widget build(BuildContext context) { - return Dialog( - child: IntrinsicWidth( - child: IntrinsicHeight( - child: Container( - padding: EdgeInsets.all(15), - decoration: BoxDecoration( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - borderRadius: BorderRadius.circular(25.0), - border: Border.all( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - width: 5.0), - ), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - SizedBox( - width: 200, - height: 200, - child: AnimatedBuilder( - animation: _animation, - builder: (context, child) { - return Icon( - MihIcons.mihLogo, - size: _animation - .value, // The size changes based on the animation value - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - ); - }, - ), - ), - if (widget.message != null) - Text( - widget.message!, - textAlign: TextAlign.center, - style: TextStyle( - fontSize: 18, - fontWeight: FontWeight.bold, - ), - ), - ], - )), - ), - ), - ); - } -} diff --git a/mih_ui/lib/mih_package_components/mih_notification_drawer.dart b/mih_ui/lib/mih_package_components/mih_notification_drawer.dart index c11f6b1b..d496c258 100644 --- a/mih_ui/lib/mih_package_components/mih_notification_drawer.dart +++ b/mih_ui/lib/mih_package_components/mih_notification_drawer.dart @@ -1,9 +1,8 @@ import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/notification.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:supertokens_flutter/http.dart' as http; @@ -69,15 +68,13 @@ class _MIHNotificationDrawerState extends State { title: Text( title, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), subtitle: Text( subtitle, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), onTap: () {}, @@ -94,8 +91,7 @@ class _MIHNotificationDrawerState extends State { children: [ Icon( Icons.circle_notifications, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.red(), ), const SizedBox( width: 5, @@ -104,8 +100,7 @@ class _MIHNotificationDrawerState extends State { child: Text( title, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), ), @@ -119,8 +114,7 @@ class _MIHNotificationDrawerState extends State { child: Text( title, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), ), @@ -132,8 +126,7 @@ class _MIHNotificationDrawerState extends State { subtitle: Text( subtitle, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), onTap: () { @@ -156,8 +149,7 @@ class _MIHNotificationDrawerState extends State { physics: const NeverScrollableScrollPhysics(), separatorBuilder: (BuildContext context, index) { return Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ); }, itemCount: widget.notifications.length, @@ -196,15 +188,14 @@ class _MIHNotificationDrawerState extends State { Widget build(BuildContext context) { return SafeArea( child: Drawer( - //backgroundColor: MihColors.getPrimaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + //backgroundColor: MihColors.primary(), child: SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.start, children: [ Container( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), child: Row( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, @@ -214,9 +205,7 @@ class _MIHNotificationDrawerState extends State { child: Text( "Notifications", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, fontSize: 20, ), @@ -231,7 +220,7 @@ class _MIHNotificationDrawerState extends State { // physics: const NeverScrollableScrollPhysics(), // separatorBuilder: (BuildContext context, index) { // return Divider( - // color: MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // color: MihColors.secondary(), // ); // }, // itemCount: widget.notifications.length, diff --git a/mih_ui/lib/mih_package_components/mih_notification_message.dart b/mih_ui/lib/mih_package_components/mih_notification_message.dart index 4df6b8a2..391f4a57 100644 --- a/mih_ui/lib/mih_package_components/mih_notification_message.dart +++ b/mih_ui/lib/mih_package_components/mih_notification_message.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import '../main.dart'; import '../mih_objects/arguments.dart'; @@ -131,10 +131,8 @@ class _MIHNotificationMessageState extends State void initState() { super.initState(); setState(() { - primary = MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); - secondary = MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + primary = MihColors.primary(); + secondary = MihColors.red(); }); _animationController = AnimationController( vsync: this, diff --git a/mih_ui/lib/mih_package_components/mih_numeric_stepper.dart b/mih_ui/lib/mih_package_components/mih_numeric_stepper.dart deleted file mode 100644 index 9e836b25..00000000 --- a/mih_ui/lib/mih_package_components/mih_numeric_stepper.dart +++ /dev/null @@ -1,238 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; -import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; - -class MihNumericStepper extends StatefulWidget { - final TextEditingController controller; - final Color fillColor; - final Color inputColor; - final String hintText; - final bool requiredText; - final double? width; - final int? minValue; - final int? maxValue; - final bool validationOn; - const MihNumericStepper({ - super.key, - required this.controller, - required this.fillColor, - required this.inputColor, - required this.hintText, - required this.requiredText, - this.width, - this.minValue, - this.maxValue, - required this.validationOn, - }); - - @override - State createState() => _MihNumericStepperState(); -} - -class _MihNumericStepperState extends State { - late int _currentValue; - late bool error; - - @override - void dispose() { - widget.controller.removeListener(_syncCurrentValue); - super.dispose(); - } - - @override - void initState() { - super.initState(); - _currentValue = - int.tryParse(widget.controller.text) ?? widget.minValue ?? 0; - widget.controller.text = _currentValue.toString(); - int.tryParse(widget.controller.text) ?? widget.minValue ?? 0; - widget.controller.addListener(_syncCurrentValue); - // print("Current Value: $_currentValue"); - } - - void _syncCurrentValue() { - final newValue = - int.tryParse(widget.controller.text) ?? widget.minValue ?? 0; - if (newValue != _currentValue) { - setState(() { - _currentValue = newValue; - }); - } - } - - @override - Widget build(BuildContext context) { - return Column( - children: [ - Row( - children: [ - Text( - widget.hintText, - style: TextStyle( - fontWeight: FontWeight.bold, - color: widget.fillColor, - fontSize: 18, - ), - ), - ], - ), - const SizedBox(height: 4), - Row( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Column( - children: [ - Container( - // color: Colors.white, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular( - 25), // Optional: rounds the corners - boxShadow: const [ - BoxShadow( - color: Color.fromARGB(60, 0, 0, - 0), // 0.2 opacity = 51 in alpha (255 * 0.2) - spreadRadius: -2, - blurRadius: 10, - offset: Offset(0, 5), - ), - ], - ), - child: Padding( - padding: const EdgeInsets.only( - top: 2.0, - left: 5.0, - ), - child: SizedBox( - width: 40, - child: IconButton.filled( - style: ButtonStyle( - backgroundColor: WidgetStateProperty.all( - MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark")), - ), - color: widget.inputColor, - iconSize: 20, - onPressed: () { - print("Current Value: $_currentValue"); - if (_currentValue >= (widget.minValue ?? 0)) { - setState(() { - widget.controller.text = - (_currentValue - 1).toString(); - _currentValue = - int.tryParse(widget.controller.text)!; - }); - } - print("New Current Value: $_currentValue"); - }, - icon: const Icon( - Icons.remove, - ), - ), - ), - ), - ), - Visibility( - visible: _currentValue < (widget.minValue ?? 0) || - (widget.maxValue != null && - _currentValue > widget.maxValue!), - child: const SizedBox( - height: 21, - ), - ), - ], - ), - const SizedBox(width: 15), - Expanded( - child: MihTextFormField( - width: widget.width, - fillColor: widget.fillColor, - inputColor: widget.inputColor, - controller: widget.controller, - hintText: null, - requiredText: widget.requiredText, - readOnly: true, - numberMode: true, - textIputAlignment: TextAlign.center, - validator: (value) { - if (widget.validationOn) { - return MihValidationServices().validateNumber( - value, widget.minValue, widget.maxValue); - } - return null; - }, - ), - ), - const SizedBox(width: 10), - Column( - children: [ - Container( - // color: Colors.white, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular( - 25), // Optional: rounds the corners - boxShadow: const [ - BoxShadow( - color: Color.fromARGB(60, 0, 0, - 0), // 0.2 opacity = 51 in alpha (255 * 0.2) - spreadRadius: -2, - blurRadius: 10, - offset: Offset(0, 5), - ), - ], - ), - child: Padding( - padding: const EdgeInsets.only( - top: 2.0, - left: 5.0, - ), - child: SizedBox( - width: 40, - child: IconButton.filled( - style: ButtonStyle( - backgroundColor: WidgetStateProperty.all( - MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark")), - ), - color: widget.inputColor, - iconSize: 20, - onPressed: () { - print("Current Value: $_currentValue"); - if (widget.maxValue == null || - _currentValue <= widget.maxValue!) { - setState(() { - widget.controller.text = - (_currentValue + 1).toString(); - _currentValue = - int.tryParse(widget.controller.text)!; - }); - } - print("New Current Value: $_currentValue"); - }, - icon: const Icon( - Icons.add, - ), - ), - ), - ), - ), - Visibility( - visible: _currentValue < (widget.minValue ?? 0) || - (widget.maxValue != null && - _currentValue > widget.maxValue!), - child: const SizedBox( - height: 21, - ), - ), - ], - ), - ], - ), - ], - ); - } -} diff --git a/mih_ui/lib/mih_package_components/mih_package.dart b/mih_ui/lib/mih_package_components/mih_package.dart deleted file mode 100644 index d491b80e..00000000 --- a/mih_ui/lib/mih_package_components/mih_package.dart +++ /dev/null @@ -1,219 +0,0 @@ -import 'dart:io'; - -import 'package:flutter/foundation.dart'; -import 'package:flutter/services.dart'; -import 'package:go_router/go_router.dart'; -import 'package:ken_logger/ken_logger.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_scack_bar.dart'; -import 'package:mzansi_innovation_hub/mih_packages/mih_home/components/mih_app_drawer.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; -import 'package:flutter/material.dart'; - -class MihPackage extends StatefulWidget { - final Widget appActionButton; - final MihPackageTools appTools; - final List appBody; - final List appToolTitles; - final MIHAppDrawer? actionDrawer; - final int selectedbodyIndex; - final Function(int) onIndexChange; - const MihPackage({ - super.key, - required this.appActionButton, - required this.appTools, - required this.appBody, - required this.appToolTitles, - this.actionDrawer, - required this.selectedbodyIndex, - required this.onIndexChange, - }); - - @override - State createState() => _MihPackageState(); -} - -class _MihPackageState extends State - with SingleTickerProviderStateMixin { - late int _currentIndex; - late PageController _pageController; - late AnimationController _animationController; - DateTime? lastPressedAt; - - void unfocusAll() { - FocusScope.of(context).unfocus(); - } - - Future _peakAnimation() async { - int currentPage = _currentIndex; - double peakOffset = _pageController.position.viewportDimension * 0.075; - double currentOffset = - _pageController.page! * _pageController.position.viewportDimension; - int nextPage = - currentPage + 1 < widget.appBody.length ? currentPage + 1 : currentPage; - if (nextPage != currentPage) { - await Future.delayed(const Duration(milliseconds: 100)); - await _pageController.animateTo( - currentOffset + peakOffset, - duration: const Duration(milliseconds: 300), - curve: Curves.easeOut, - ); - // await Future.delayed(const Duration(milliseconds: 100)); - await _pageController.animateTo( - currentPage * _pageController.position.viewportDimension, - duration: const Duration(milliseconds: 300), - curve: Curves.easeIn, - ); - } - } - - @override - void dispose() { - _pageController.dispose(); - _animationController.dispose(); - super.dispose(); - } - - @override - void didUpdateWidget(covariant MihPackage oldWidget) { - super.didUpdateWidget(oldWidget); - if (oldWidget.selectedbodyIndex != widget.selectedbodyIndex && - _currentIndex != widget.selectedbodyIndex) { - _currentIndex = widget.selectedbodyIndex; - _pageController.animateToPage( - widget.selectedbodyIndex, - duration: const Duration(milliseconds: 300), - curve: Curves.easeInOut, - ); - } - } - - @override - void initState() { - super.initState(); - _currentIndex = widget.selectedbodyIndex; - _pageController = PageController(initialPage: widget.selectedbodyIndex); - _animationController = AnimationController( - vsync: this, - duration: const Duration(milliseconds: 400), - ); - // if (!MzansiInnovationHub.of(context)!.theme.kIsWeb) { - // // Trigger the peak animation on start (or call this elsewhere) - // WidgetsBinding.instance.addPostFrameCallback((_) { - // _peakAnimation(); - // }); - // } - if (!kIsWeb && (Platform.isAndroid || Platform.isIOS)) { - // Trigger the peak animation only AFTER the route transition is complete - WidgetsBinding.instance.addPostFrameCallback((_) { - final ModalRoute? currentRoute = ModalRoute.of(context); - if (currentRoute != null) { - currentRoute.animation?.addStatusListener((status) { - if (status == AnimationStatus.completed && mounted) { - // Ensure the widget is still mounted and the animation is completed - _peakAnimation(); - } - }); - } - }); - } - } - - @override - Widget build(BuildContext context) { - Size screenSize = MediaQuery.of(context).size; - return GestureDetector( - onTap: unfocusAll, - child: PopScope( - canPop: false, - onPopInvokedWithResult: (bool didPop, Object? result) { - if (GoRouterState.of(context).name == 'mihHome' || - GoRouterState.of(context).name == 'mihAuthentication') { - if (lastPressedAt == null || - DateTime.now().difference(lastPressedAt!) > - const Duration(seconds: 2)) { - // First press: show a message and update the timestamp. - lastPressedAt = DateTime.now(); - ScaffoldMessenger.of(context).showSnackBar( - MihSnackBar( - child: Text("Press back again to exit"), - ), - ); - } else { - // Second press within 2 seconds: exit the app. - KenLogger.warning('Exiting app...'); // Your custom logger - SystemChannels.platform.invokeMethod('SystemNavigator.pop'); - } - } else { - context.goNamed( - 'mihHome', - extra: true, - ); - } - }, - child: Scaffold( - drawer: widget.actionDrawer, - body: SafeArea( - bottom: false, - minimum: EdgeInsets.only(bottom: 0), - child: Container( - width: screenSize.width, - height: screenSize.height, - //color: Colors.black, - padding: const EdgeInsets.only(top: 5), - child: Column( - children: [ - Row( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - widget.appActionButton, - const SizedBox( - width: 10, - ), - Expanded( - child: Container( - // alignment: Alignment.center, - // alignment: Alignment.centerRight, - alignment: Alignment.centerLeft, - // color: Colors.black, - child: FittedBox( - child: Text( - widget.appToolTitles[_currentIndex], - style: const TextStyle( - fontSize: 23, - fontWeight: FontWeight.w600, - ), - ), - ), - ), - ), - const SizedBox(width: 5), - widget.appTools, - const SizedBox(width: 5), - ], - ), - const SizedBox(height: 5), - Expanded( - child: PageView.builder( - controller: _pageController, - itemCount: widget.appBody.length, - itemBuilder: (context, index) { - return widget.appBody[index]; - }, - onPageChanged: (index) { - setState(() { - _currentIndex = index; - }); - widget.onIndexChange(index); - }, - ), - ), - ], - ), - ), - ), - ), - ), - ); - } -} diff --git a/mih_ui/lib/mih_package_components/mih_package_action.dart b/mih_ui/lib/mih_package_components/mih_package_action.dart deleted file mode 100644 index 07db5d15..00000000 --- a/mih_ui/lib/mih_package_components/mih_package_action.dart +++ /dev/null @@ -1,38 +0,0 @@ -import 'package:flutter/material.dart'; - -class MihPackageAction extends StatefulWidget { - final void Function()? onTap; - final double iconSize; - final Widget icon; - const MihPackageAction({ - super.key, - required this.icon, - required this.iconSize, - required this.onTap, - }); - - @override - State createState() => _MihPackageActionState(); -} - -class _MihPackageActionState extends State { - @override - void dispose() { - super.dispose(); - } - - @override - void initState() { - super.initState(); - } - - @override - Widget build(BuildContext context) { - return IconButton( - iconSize: widget.iconSize, - padding: const EdgeInsets.all(0), - onPressed: widget.onTap, - icon: widget.icon, - ); - } -} diff --git a/mih_ui/lib/mih_package_components/mih_package_tile.dart b/mih_ui/lib/mih_package_components/mih_package_tile.dart deleted file mode 100644 index e5d25f35..00000000 --- a/mih_ui/lib/mih_package_components/mih_package_tile.dart +++ /dev/null @@ -1,214 +0,0 @@ -import 'dart:io'; - -import 'package:app_settings/app_settings.dart'; -import 'package:flutter/foundation.dart'; -import 'package:local_auth/local_auth.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_yt_video_player.dart'; -import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; -import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; - -class MihPackageTile extends StatefulWidget { - final String appName; - final String? ytVideoID; - final Widget appIcon; - final void Function() onTap; - final double iconSize; - final Color textColor; - final bool? authenticateUser; - const MihPackageTile({ - super.key, - required this.onTap, - required this.appName, - this.ytVideoID, - required this.appIcon, - required this.iconSize, - required this.textColor, - this.authenticateUser, - }); - - @override - State createState() => _MihPackageTileState(); -} - -class _MihPackageTileState extends State { - final LocalAuthentication _auth = LocalAuthentication(); - - void displayHint() { - if (widget.ytVideoID != null) { - showDialog( - barrierDismissible: false, - context: context, - builder: (context) { - return MihPackageWindow( - fullscreen: false, - windowTitle: widget.appName, - // windowTools: const [], - onWindowTapClose: () { - Navigator.pop(context); - }, - windowBody: MIHYTVideoPlayer( - videoYTLink: widget.ytVideoID!, - ), - ); - }, - ); - } - } - - Future isUserAuthenticated() async { - final bool canAuthWithBio = await _auth.canCheckBiometrics; - final bool canAuthenticate = - canAuthWithBio || await _auth.isDeviceSupported(); - print("Auth Available: $canAuthenticate"); - if (canAuthenticate) { - try { - final bool didBioAuth = await _auth.authenticate( - localizedReason: "Authenticate to access ${widget.appName}", - options: const AuthenticationOptions( - biometricOnly: false, - ), - ); - if (didBioAuth) { - return true; - } else { - authErrorPopUp(); - } - // print("Authenticated: $didBioAuth"); - } catch (error) { - print("Auth Error: $error"); - authErrorPopUp(); - } - } else { - print("Auth Error: No Biometrics Available"); - authErrorPopUp(); - } - return false; - } - - void authErrorPopUp() { - MihAlertServices().errorAdvancedAlert( - "Biometric Authentication Required", - "Hi there! To jump into the ${widget.appName} Package, you'll need to authenticate yourself with your devices biometrics, please set up biometric authentication (like fingerprint, face ID, pattern or pin) on your device first.\n\nIf you have already set up biometric authentication, press \"Authenticate now\" to try again or press \"Set Up Authentication\" to go to your device settings.", - [ - MihButton( - onPressed: () { - Navigator.of(context).pop(); - }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - width: 300, - child: Text( - "Dismiss", - style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - fontSize: 20, - fontWeight: FontWeight.bold, - ), - ), - ), - MihButton( - onPressed: () { - AppSettings.openAppSettings( - type: AppSettingsType.security, - ); - Navigator.of(context).pop(); - }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - width: 300, - child: Text( - "Set Up Authentication", - style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - fontSize: 20, - fontWeight: FontWeight.bold, - ), - ), - ), - MihButton( - onPressed: () { - Navigator.of(context).pop(); - authenticateUser(); - }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - width: 300, - child: Text( - "Authenticate Now", - style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - fontSize: 20, - fontWeight: FontWeight.bold, - ), - ), - ), - ], - context, - ); - } - - Future authenticateUser() async { - if (widget.authenticateUser != null && - widget.authenticateUser! && - !kIsWeb && - !Platform.isLinux) { - if (await isUserAuthenticated()) { - widget.onTap(); - } - } else { - widget.onTap(); - } - } - - @override - Widget build(BuildContext context) { - return Container( - alignment: Alignment.topCenter, - // color: Colors.black, - width: widget.iconSize, - height: widget.iconSize, - child: GestureDetector( - onTap: () async { - authenticateUser(); - }, - onLongPress: null, // Do this later - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Expanded( - child: FittedBox( - fit: BoxFit.contain, - alignment: Alignment.center, - child: widget.appIcon, - ), - ), - const SizedBox(height: 10), - Padding( - // Add a little padding for better visual spacing - padding: const EdgeInsets.symmetric(horizontal: 4.0), - child: FittedBox( - child: Text( - widget.appName, - textAlign: TextAlign.center, // This centers the text content - maxLines: 1, // Allow up to 2 lines to prevent clipping - style: TextStyle( - color: widget.textColor, - fontSize: 20.0, - fontWeight: FontWeight.bold, - ), - ), - ), - ), - ], - ), - ), - ); - } -} diff --git a/mih_ui/lib/mih_package_components/mih_package_tool_body.dart b/mih_ui/lib/mih_package_components/mih_package_tool_body.dart deleted file mode 100644 index 7b8470d7..00000000 --- a/mih_ui/lib/mih_package_components/mih_package_tool_body.dart +++ /dev/null @@ -1,95 +0,0 @@ -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; - -class MihPackageToolBody extends StatefulWidget { - final bool borderOn; - final Widget bodyItem; - final double? innerHorizontalPadding; - const MihPackageToolBody({ - super.key, - required this.borderOn, - required this.bodyItem, - this.innerHorizontalPadding, - }); - - @override - State createState() => _MihPackageToolBodyState(); -} - -class _MihPackageToolBodyState extends State { - late double _innerBodyPadding; - double getHorizontalPaddingSize(Size screenSize) { - if (MzansiInnovationHub.of(context)!.theme.screenType == "desktop") { - if (widget.borderOn) { - return widget.innerHorizontalPadding ?? 10; - } else { - return widget.innerHorizontalPadding ?? 0; - } - } else { - // mobile - if (widget.borderOn) { - return widget.innerHorizontalPadding ?? 10; - } else { - return widget.innerHorizontalPadding ?? 0; - } - } - } - - double getVerticalPaddingSize(Size screenSize) { - // mobile - if (widget.borderOn) { - return 10; - } else { - return 0; - } - } - - Decoration? getBoader() { - if (widget.borderOn) { - _innerBodyPadding = 10.0; - return BoxDecoration( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - borderRadius: BorderRadius.circular(25.0), - border: Border.all( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - width: 3.0), - ); - } else { - _innerBodyPadding = 0.0; - return BoxDecoration( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - borderRadius: BorderRadius.circular(25.0), - border: Border.all( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - width: 3.0), - ); - } - } - - @override - Widget build(BuildContext context) { - Size screenSize = MediaQuery.sizeOf(context); - - return Padding( - padding: EdgeInsets.only( - left: getHorizontalPaddingSize(screenSize), - right: getHorizontalPaddingSize(screenSize), - bottom: getVerticalPaddingSize(screenSize), - top: 0, - ), - child: Container( - height: screenSize.height, - decoration: getBoader(), - child: Padding( - padding: EdgeInsets.all(_innerBodyPadding), - child: widget.bodyItem, - ), - ), - ); - } -} diff --git a/mih_ui/lib/mih_package_components/mih_package_tools.dart b/mih_ui/lib/mih_package_components/mih_package_tools.dart deleted file mode 100644 index 4a4abddd..00000000 --- a/mih_ui/lib/mih_package_components/mih_package_tools.dart +++ /dev/null @@ -1,52 +0,0 @@ -import 'package:flutter/material.dart'; - -// ignore: must_be_immutable -class MihPackageTools extends StatefulWidget { - final Map tools; - int selcetedIndex; - MihPackageTools({ - super.key, - required this.tools, - required this.selcetedIndex, - }); - - @override - State createState() => _MihPackageToolsState(); -} - -class _MihPackageToolsState extends State { - List getTools() { - List temp = []; - int index = 0; - widget.tools.forEach((icon, onTap) { - temp.add( - Visibility( - visible: widget.selcetedIndex != index, - child: IconButton( - onPressed: onTap, - icon: icon, - ), - ), - ); - temp.add( - Visibility( - visible: widget.selcetedIndex == index, - child: IconButton.filled( - onPressed: onTap, - icon: icon, - ), - ), - ); - index += 1; - }); - return temp; - } - - @override - Widget build(BuildContext context) { - return Row( - mainAxisAlignment: MainAxisAlignment.end, - children: getTools(), - ); - } -} diff --git a/mih_ui/lib/mih_package_components/mih_package_window.dart b/mih_ui/lib/mih_package_components/mih_package_window.dart deleted file mode 100644 index 77f6a855..00000000 --- a/mih_ui/lib/mih_package_components/mih_package_window.dart +++ /dev/null @@ -1,221 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_speed_dial/flutter_speed_dial.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_floating_menu.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; - -class MihPackageWindow extends StatefulWidget { - final String? windowTitle; - final Widget windowBody; - final List? menuOptions; - final void Function()? onWindowTapClose; - final Color? backgroundColor; - final Color? foregroundColor; - final bool? borderOn; - final bool fullscreen; - final bool? scrollbarOn; - const MihPackageWindow({ - super.key, - required this.fullscreen, - required this.windowTitle, - this.menuOptions, - required this.onWindowTapClose, - required this.windowBody, - this.borderOn, - this.scrollbarOn, - this.backgroundColor, - this.foregroundColor, - }); - - @override - State createState() => _MihPackageWindowState(); -} - -class _MihPackageWindowState extends State { - late double windowTitleSize; - late double horizontralWindowPadding; - late double vertticalWindowPadding; - late double windowWidth; - late double windowHeight; - late double width; - late double height; - - void checkScreenSize() { - // print("screen width: $width"); - // print("screen height: $height"); - if (MzansiInnovationHub.of(context)!.theme.screenType == "desktop") { - setState(() { - windowTitleSize = 25; - horizontralWindowPadding = width / 7; - vertticalWindowPadding = 10; - windowWidth = width; - windowHeight = height; - }); - } else { - setState(() { - windowTitleSize = 20; - horizontralWindowPadding = 10; - vertticalWindowPadding = 10; - windowWidth = width; - windowHeight = height; - }); - } - } - - Widget getHeader() { - return Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - if (widget.onWindowTapClose != null) - Padding( - padding: const EdgeInsets.only( - top: 5.0, - left: 5.0, - ), - child: MihButton( - width: 40, - height: 40, - elevation: 10, - onPressed: widget.onWindowTapClose, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - child: Icon( - Icons.close, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - ), - ), - ), - if (widget.windowTitle != null) - Expanded( - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 10.0), - child: Text( - widget.windowTitle!, - overflow: TextOverflow.ellipsis, - textAlign: TextAlign.center, - style: TextStyle( - fontSize: windowTitleSize, - fontWeight: FontWeight.bold, - color: widget.foregroundColor ?? - MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - ), - ), - ), - ), - if (widget.menuOptions != null) - Padding( - padding: const EdgeInsets.only( - top: 5.0, - right: 5.0, - ), - child: SizedBox( - width: 40, - child: MihFloatingMenu( - iconSize: 40, - animatedIcon: AnimatedIcons.menu_close, - direction: SpeedDialDirection.down, - children: widget.menuOptions != null ? widget.menuOptions! : [], - ), - ), - ), - ], - ); - } - - @override - void dispose() { - super.dispose(); - } - - @override - void initState() { - super.initState(); - } - - @override - Widget build(BuildContext context) { - var size = MediaQuery.of(context).size; - setState(() { - width = size.width; - height = size.height; - }); - checkScreenSize(); - return Dialog( - insetPadding: EdgeInsets.symmetric( - horizontal: horizontralWindowPadding, - vertical: vertticalWindowPadding, - ), - insetAnimationCurve: Easing.emphasizedDecelerate, - insetAnimationDuration: Durations.short1, - child: Material( - elevation: 10, - shadowColor: Colors.black, - color: widget.backgroundColor ?? - MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - borderRadius: BorderRadius.circular(25.0), - child: Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(25.0), - border: widget.borderOn == null || !widget.borderOn! - ? null - : Border.all( - color: widget.foregroundColor ?? - MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - width: 5.0), - ), - child: widget.fullscreen - ? Column( - mainAxisSize: MainAxisSize.max, - children: [ - getHeader(), - const SizedBox(height: 5), - Expanded( - child: widget.scrollbarOn != null || !widget.scrollbarOn! - ? widget.windowBody - : MihSingleChildScroll( - scrollbarOn: true, - child: widget.windowBody, - ), - ), - ], - ) - : Column( - mainAxisSize: MainAxisSize.min, - children: [ - getHeader(), - const SizedBox(height: 5), - Flexible( - child: Padding( - padding: EdgeInsets.only( - left: 25, - right: 25, - bottom: vertticalWindowPadding, - ), - child: ConstrainedBox( - constraints: BoxConstraints( - maxHeight: windowHeight * 0.85, - maxWidth: windowWidth * 0.85, - ), - child: MihSingleChildScroll( - scrollbarOn: true, - child: widget.windowBody, - ), - ), - ), - ), - ], - ), - ), - ), - ); - } -} diff --git a/mih_ui/lib/mih_package_components/mih_personal_profile_preview.dart b/mih_ui/lib/mih_package_components/mih_personal_profile_preview.dart index daf313af..5013a3f0 100644 --- a/mih_ui/lib/mih_package_components/mih_personal_profile_preview.dart +++ b/mih_ui/lib/mih_package_components/mih_personal_profile_preview.dart @@ -1,9 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; class MihPersonalProfilePreview extends StatefulWidget { final AppUser user; @@ -36,15 +34,13 @@ class _MihPersonalProfilePreviewState extends State { ? Icon( MihIcons.mihRing, size: profilePictureWidth, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ) : widget.imageFile == null ? Icon( MihIcons.iDontKnow, size: profilePictureWidth, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ) : MihCircleAvatar( imageFile: widget.imageFile, @@ -53,10 +49,8 @@ class _MihPersonalProfilePreviewState extends State { editable: false, fileNameController: TextEditingController(), userSelectedfile: null, - frameColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + frameColor: MihColors.secondary(), + backgroundColor: MihColors.primary(), onChange: () {}, ), const SizedBox(width: 15), diff --git a/mih_ui/lib/mih_package_components/mih_profile_links.dart b/mih_ui/lib/mih_package_components/mih_profile_links.dart index 756edfe1..5fb8abe8 100644 --- a/mih_ui/lib/mih_package_components/mih_profile_links.dart +++ b/mih_ui/lib/mih_package_components/mih_profile_links.dart @@ -1,9 +1,8 @@ import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_objects/profile_link.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -77,8 +76,7 @@ class _MihProfileLinksState extends State { break; default: iconData = FontAwesomeIcons.link; - btnColor = MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + btnColor = MihColors.primary(); } return MihButton( width: 80, @@ -97,15 +95,15 @@ class _MihProfileLinksState extends State { // onTap: () { // launchSocialUrl(Uri.parse(link.web_link)); // }, - // appName: link.destination, - // appIcon: Icon( + // packageName: link.destination, + // packageIcon: Icon( // iconData, // color: btnColor, // ), // iconSize: 200, // textColor: Colors.black, - // // MihColors.getPrimaryColor( - // // MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // // MihColors.primary( + // // ), // ); } @@ -136,9 +134,7 @@ class _MihProfileLinksState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), ), ) diff --git a/mih_ui/lib/mih_package_components/mih_radio_options.dart b/mih_ui/lib/mih_package_components/mih_radio_options.dart deleted file mode 100644 index 5f7dfa40..00000000 --- a/mih_ui/lib/mih_package_components/mih_radio_options.dart +++ /dev/null @@ -1,140 +0,0 @@ -import 'package:flutter/material.dart'; - -class MihRadioOptions extends StatefulWidget { - final TextEditingController controller; - final String hintText; - final Color fillColor; - final Color secondaryFillColor; - final bool requiredText; - final List radioOptions; - const MihRadioOptions({ - super.key, - required this.controller, - required this.hintText, - required this.fillColor, - required this.secondaryFillColor, - required this.requiredText, - required this.radioOptions, - }); - - @override - State createState() => _MihRadioOptionsState(); -} - -class _MihRadioOptionsState extends State { - // late String _currentSelection; - - @override - void initState() { - super.initState(); - if (widget.controller.text.isEmpty && widget.radioOptions.isNotEmpty) { - widget.controller.text = widget.radioOptions[0]; - } - // else{ - // int index = widget.radioOptions - // .indexWhere((element) => element == option); - // _currentSelection = widget.radioOptions[index]; - // widget.controller.text = option; - - // } - // _currentSelection = widget.radioOptions[0]; - } - -// The method to handle a change in selection. - void _onChanged(String? value) { - if (value != null) { - widget.controller.text = value; - } - } - - Widget displayRadioOptions(String selection) { - return Material( - elevation: 4.0, - borderRadius: BorderRadius.circular(8.0), - child: Container( - decoration: BoxDecoration( - color: widget.fillColor, - borderRadius: BorderRadius.circular(8.0), - ), - child: Column( - children: widget.radioOptions.map((option) { - return GestureDetector( - onTap: () { - _onChanged(option); - }, - child: Row( - children: [ - const SizedBox(width: 10), - Expanded( - child: Text( - option, - style: TextStyle( - color: widget.secondaryFillColor, - fontWeight: FontWeight.w500, - fontSize: 15, - ), - ), - ), - Radio( - value: option, - groupValue: selection, - onChanged: _onChanged, - activeColor: widget.secondaryFillColor, - fillColor: WidgetStateProperty.resolveWith( - (Set states) { - if (states.contains(WidgetState.selected)) { - return widget.secondaryFillColor; // Color when selected - } - return widget.secondaryFillColor; - }), - ), - ], - ), - ); - }).toList(), - ), - ), - ); - } - - @override - Widget build(BuildContext context) { - return AnimatedBuilder( - animation: widget.controller, - builder: (context, child) { - final currentSelection = widget.controller.text; - return Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - widget.hintText, - textAlign: TextAlign.left, - style: TextStyle( - color: widget.fillColor, - fontSize: 18, - fontWeight: FontWeight.bold, - ), - ), - Visibility( - visible: !widget.requiredText, - child: Text( - "(Optional)", - textAlign: TextAlign.right, - style: TextStyle( - color: widget.fillColor, - fontSize: 15, - fontWeight: FontWeight.bold, - ), - ), - ), - ], - ), - const SizedBox(height: 4), - displayRadioOptions(currentSelection), - ], - ); - }); - } -} diff --git a/mih_ui/lib/mih_package_components/mih_scack_bar.dart b/mih_ui/lib/mih_package_components/mih_scack_bar.dart deleted file mode 100644 index 4a38e860..00000000 --- a/mih_ui/lib/mih_package_components/mih_scack_bar.dart +++ /dev/null @@ -1,18 +0,0 @@ -import 'package:flutter/material.dart'; - -SnackBar MihSnackBar({ - required Widget child, -}) { - return SnackBar( - content: child, - shape: StadiumBorder(), - behavior: SnackBarBehavior.floating, - duration: Duration(seconds: 2), - width: null, - action: SnackBarAction( - label: "Dismiss", - onPressed: () {}, - ), - // elevation: 30, - ); -} diff --git a/mih_ui/lib/mih_package_components/mih_search_bar.dart b/mih_ui/lib/mih_package_components/mih_search_bar.dart deleted file mode 100644 index 8bcf839e..00000000 --- a/mih_ui/lib/mih_package_components/mih_search_bar.dart +++ /dev/null @@ -1,190 +0,0 @@ -import 'dart:io'; - -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; - -class MihSearchBar extends StatefulWidget { - final TextEditingController controller; - final String hintText; - final IconData prefixIcon; - final IconData? prefixAltIcon; - final List? suffixTools; - final double? width; - final double? height; - final Color fillColor; - final Color hintColor; - final void Function()? onPrefixIconTap; - final void Function()? onClearIconTap; - final double? elevation; - final FocusNode searchFocusNode; - - const MihSearchBar({ - Key? key, - required this.controller, - required this.hintText, - required this.prefixIcon, - this.prefixAltIcon, - this.suffixTools, - this.width, - this.height, - required this.fillColor, - required this.hintColor, - required this.onPrefixIconTap, - this.onClearIconTap, - this.elevation, - required this.searchFocusNode, - }) : super(key: key); - - @override - State createState() => _MihSearchBarState(); -} - -class _MihSearchBarState extends State { - bool _showClearIcon = false; - - Widget getPrefixIcon() { - if (_showClearIcon) { - // If the clear icon is shown and an alternative prefix icon is provided, use it - return widget.prefixAltIcon != null - ? Padding( - padding: const EdgeInsets.symmetric(horizontal: 10.0), - child: Icon( - widget.prefixAltIcon, - color: widget.hintColor, - size: 35, - ), - ) - : Padding( - padding: const EdgeInsets.symmetric(horizontal: 10.0), - child: Icon( - Icons.search, - color: widget.hintColor, - size: 35, - ), - ); // Default to search icon if no alt icon - } else { - // Return the primary prefix icon or the alternative if provided - return Padding( - padding: const EdgeInsets.symmetric(horizontal: 10.0), - child: Icon( - Icons.search, - color: widget.hintColor, - size: 35, - ), - ); - } - } - - @override - void initState() { - super.initState(); - // 1. Add the listener to the controller - widget.controller.addListener(_updateClearIconVisibility); - // 2. Initialize the clear icon visibility based on the current text - _updateClearIconVisibility(); - } - - @override - void dispose() { - widget.controller.removeListener(_updateClearIconVisibility); - super.dispose(); - } - - void _updateClearIconVisibility() { - if (!mounted) { - return; - } - final bool shouldShow = widget.controller.text.isNotEmpty; - // Only call setState if the visibility state actually changes - if (_showClearIcon != shouldShow) { - setState(() { - _showClearIcon = shouldShow; - }); - } - } - - @override - Widget build(BuildContext context) { - return Material( - elevation: widget.elevation ?? 4.0, // Use provided elevation or default - borderRadius: BorderRadius.circular(30.0), - color: widget.fillColor, - child: AnimatedContainer( - // Keep AnimatedContainer for width/height transitions - alignment: Alignment.centerLeft, - width: widget.width, - height: widget.height ?? 50, - duration: const Duration(milliseconds: 300), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(30.0), - ), - child: Theme( - data: Theme.of(context).copyWith( - textSelectionTheme: TextSelectionThemeData( - selectionColor: widget.hintColor.withValues(alpha: 0.3), - selectionHandleColor: widget.hintColor, - ), - ), - child: TextField( - textAlignVertical: TextAlignVertical.center, - controller: widget.controller, // Assign the controller - focusNode: widget.searchFocusNode, - autocorrect: true, - spellCheckConfiguration: - !kIsWeb && (Platform.isAndroid || Platform.isIOS) - ? SpellCheckConfiguration() - : null, - onSubmitted: (value) { - widget.onPrefixIconTap - ?.call(); // Call the prefix icon tap handler - }, - style: TextStyle( - color: widget.hintColor, - fontWeight: FontWeight.w600, - fontSize: 16, - ), - cursorColor: widget.hintColor, - decoration: InputDecoration( - isDense: true, - hintText: widget.hintText, - hintStyle: TextStyle( - color: widget.hintColor, - fontWeight: FontWeight.w600, - fontSize: 16, - ), - border: InputBorder.none, - contentPadding: - const EdgeInsets.symmetric(horizontal: 10.0, vertical: 15.0), - prefixIcon: GestureDetector( - onTap: widget.onPrefixIconTap, - child: getPrefixIcon(), - ), - suffixIcon: Row( - // Use a Row for multiple suffix icons - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - // Optional suffix tools - if (widget.suffixTools != null) ...widget.suffixTools!, - // Clear Icon (conditionally visible) - if (_showClearIcon) // Only show if input is not empty - IconButton( - iconSize: 35, - icon: Icon(Icons.clear, - color: widget.hintColor), // Clear icon - onPressed: widget.onClearIconTap ?? - () { - widget.controller.clear(); - // No need for setState here, _updateClearIconVisibility will handle it - }, - ), - ], - ), - ), - ), - ), - ), - ); - } -} diff --git a/mih_ui/lib/mih_package_components/mih_single_child_scroll.dart b/mih_ui/lib/mih_package_components/mih_single_child_scroll.dart deleted file mode 100644 index 74c846b1..00000000 --- a/mih_ui/lib/mih_package_components/mih_single_child_scroll.dart +++ /dev/null @@ -1,31 +0,0 @@ -import 'package:flutter/material.dart'; - -class MihSingleChildScroll extends StatefulWidget { - final Widget child; - final bool? scrollbarOn; - const MihSingleChildScroll({ - super.key, - required this.child, - this.scrollbarOn, - }); - - @override - State createState() => _MihSingleChildScrollState(); -} - -class _MihSingleChildScrollState extends State { - @override - Widget build(BuildContext context) { - return SafeArea( - bottom: false, - minimum: EdgeInsets.only(bottom: 5), - child: ScrollConfiguration( - behavior: ScrollConfiguration.of(context) - .copyWith(scrollbars: widget.scrollbarOn ?? false), - child: SingleChildScrollView( - child: widget.child, - ), - ), - ); - } -} diff --git a/mih_ui/lib/mih_package_components/mih_text_form_field.dart b/mih_ui/lib/mih_package_components/mih_text_form_field.dart deleted file mode 100644 index a2cac03e..00000000 --- a/mih_ui/lib/mih_package_components/mih_text_form_field.dart +++ /dev/null @@ -1,318 +0,0 @@ -import 'dart:io'; - -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; - -class MihTextFormField extends StatefulWidget { - final double? width; - final double? height; - final Color fillColor; - final Color inputColor; - final TextEditingController controller; - final bool? hasError; - final String? hintText; - final double? borderRadius; - final bool? multiLineInput; - final bool? readOnly; - final bool? passwordMode; - final bool? numberMode; - final bool requiredText; - final FormFieldValidator? validator; - final List? autofillHints; - final double? elevation; - final TextAlign? textIputAlignment; - - const MihTextFormField({ - Key? key, - this.width, - this.height, - required this.fillColor, - required this.inputColor, - required this.controller, - this.hasError, - required this.hintText, - required this.requiredText, - this.borderRadius, - this.multiLineInput, - this.readOnly, - this.passwordMode, - this.numberMode, - this.validator, - this.autofillHints, - this.elevation, - this.textIputAlignment, - }) : super(key: key); - - @override - State createState() => _MihTextFormFieldState(); -} - -class _MihTextFormFieldState extends State { - late bool _obscureText; - FormFieldState? _formFieldState; - - @override - void initState() { - super.initState(); - _obscureText = widget.passwordMode ?? false; - widget.controller.addListener(_onControllerTextChanged); - } - - @override - void didUpdateWidget(covariant MihTextFormField oldWidget) { - super.didUpdateWidget(oldWidget); - // If the controller itself changes, remove listener from old and add to new - if (widget.controller != oldWidget.controller) { - oldWidget.controller.removeListener(_onControllerTextChanged); - widget.controller.addListener(_onControllerTextChanged); - // Immediately update form field state if controller changed and has value - _formFieldState?.didChange(widget.controller.text); - } - } - - void _onControllerTextChanged() { - // Only update the FormField's value if it's not already the same - // and if the formFieldState is available. - if (_formFieldState != null && - _formFieldState!.value != widget.controller.text) { - _formFieldState!.didChange(widget.controller.text); - } - } - - @override - void dispose() { - widget.controller.removeListener(_onControllerTextChanged); - super.dispose(); - } - - @override - Widget build(BuildContext context) { - final isMultiline = widget.multiLineInput == true; - return Center( - child: SizedBox( - width: widget.width, - // height: widget.height, - height: isMultiline ? null : widget.height, - child: Theme( - data: Theme.of(context).copyWith( - textSelectionTheme: TextSelectionThemeData( - selectionColor: widget.inputColor.withValues(alpha: 0.3), - selectionHandleColor: widget.inputColor, - ), - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Visibility( - visible: widget.hintText != null, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - widget.hintText ?? "", - textAlign: TextAlign.left, - style: TextStyle( - color: widget.fillColor, - fontSize: 18, - fontWeight: FontWeight.bold, - ), - ), - Visibility( - visible: !widget.requiredText, - child: Text( - "(Optional)", - textAlign: TextAlign.right, - style: TextStyle( - color: widget.fillColor, - fontSize: 15, - fontWeight: FontWeight.bold, - ), - ), - ), - ], - ), - ), - const SizedBox(height: 4), - FormField( - initialValue: widget.controller.text, - validator: widget.validator, - autovalidateMode: AutovalidateMode.onUserInteraction, - builder: (field) { - _formFieldState = field; - return Column( - crossAxisAlignment: - CrossAxisAlignment.start, // <-- Add this line - children: [ - Material( - elevation: widget.elevation ?? 4.0, - borderRadius: - BorderRadius.circular(widget.borderRadius ?? 8.0), - child: SizedBox( - height: widget.height != null - ? widget.height! - 30 - : null, - child: TextFormField( - controller: widget.controller, - cursorColor: widget.inputColor, - autofillHints: widget.autofillHints, - autocorrect: true, - // spellCheckConfiguration: (kIsWeb || - // widget.passwordMode == true || - // widget.numberMode == true) - // ? null - // : SpellCheckConfiguration(), - spellCheckConfiguration: !kIsWeb && - (Platform.isAndroid || Platform.isIOS) - ? SpellCheckConfiguration() - : null, - textAlign: - widget.textIputAlignment ?? TextAlign.start, - textAlignVertical: widget.multiLineInput == true - ? TextAlignVertical.top - : TextAlignVertical.center, - obscureText: widget.passwordMode == true - ? _obscureText - : false, - expands: widget.passwordMode == true - ? false - : (widget.multiLineInput ?? false), - maxLines: widget.passwordMode == true ? 1 : null, - readOnly: widget.readOnly ?? false, - keyboardType: widget.numberMode == true - ? const TextInputType.numberWithOptions( - decimal: true) - : null, - inputFormatters: widget.numberMode == true - ? [ - FilteringTextInputFormatter.allow( - RegExp(r'^\d*\.?\d*')) - ] - : null, - style: TextStyle( - color: widget.inputColor, - fontWeight: FontWeight.w500, - ), - decoration: InputDecoration( - suffixIcon: widget.passwordMode == true - ? FocusScope( - canRequestFocus: false, - child: IconButton( - icon: Icon( - _obscureText - ? Icons.visibility_off - : Icons.visibility, - color: widget.inputColor, - ), - onPressed: () { - setState(() { - _obscureText = !_obscureText; - }); - }, - ), - ) - : null, - errorStyle: const TextStyle( - height: 0, fontSize: 0), // <-- Add this line - contentPadding: const EdgeInsets.symmetric( - horizontal: 10.0, vertical: 8.0), - filled: true, - fillColor: widget.fillColor, - border: OutlineInputBorder( - borderRadius: BorderRadius.circular( - widget.borderRadius ?? 8.0), - borderSide: field.hasError - ? BorderSide( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - width: 2.0, - ) - : BorderSide.none, - ), - enabledBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular( - widget.borderRadius ?? 8.0), - borderSide: BorderSide.none, - ), - focusedBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular( - widget.borderRadius ?? 8.0), - borderSide: BorderSide( - color: field.hasError - ? MihColors.getRedColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark") - : widget.inputColor, - width: 3.0, - ), - ), - errorBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular( - widget.borderRadius ?? 8.0), - borderSide: BorderSide( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - width: 3.0, - ), - ), - focusedErrorBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular( - widget.borderRadius ?? 8.0), - borderSide: BorderSide( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - width: 3.0, - ), - ), - ), - onChanged: (value) { - field.didChange(value); - }, - ), - ), - ), - if (field.hasError) - Row( - children: [ - Padding( - padding: - const EdgeInsets.only(left: 8.0, top: 4.0), - child: Text( - field.errorText ?? '', - style: TextStyle( - fontSize: 12, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - fontWeight: FontWeight.bold, - ), - ), - ), - ], - ), - ], - ); - }, - ), - ], - ), - ), - ), - ); - } -} diff --git a/mih_ui/lib/mih_package_components/mih_time_field.dart b/mih_ui/lib/mih_package_components/mih_time_field.dart deleted file mode 100644 index cd6fd5ad..00000000 --- a/mih_ui/lib/mih_package_components/mih_time_field.dart +++ /dev/null @@ -1,217 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; - -class MihTimeField extends StatefulWidget { - final TextEditingController controller; - final String labelText; - final bool required; - final double? width; - final double? height; - final double? borderRadius; - final double? elevation; - final FormFieldValidator? validator; - - const MihTimeField({ - super.key, - required this.controller, - required this.labelText, - required this.required, - this.width, - this.height, - this.borderRadius, - this.elevation, - this.validator, - }); - - @override - State createState() => _MihTimeFieldState(); -} - -class _MihTimeFieldState extends State { - FormFieldState? _formFieldState; - - Future _selectTime(BuildContext context) async { - TimeOfDay? picked = await showTimePicker( - context: context, - initialTime: widget.controller.text.isNotEmpty - ? TimeOfDay( - hour: int.tryParse(widget.controller.text.split(":")[0]) ?? 0, - minute: int.tryParse(widget.controller.text.split(":")[1]) ?? 0, - ) - : TimeOfDay.now(), - builder: (context, child) { - return MediaQuery( - data: MediaQuery.of(context).copyWith(alwaysUse24HourFormat: true), - child: child as Widget, - ); - }, - ); - if (picked != null) { - final hours = picked.hour.toString().padLeft(2, '0'); - final minutes = picked.minute.toString().padLeft(2, '0'); - widget.controller.text = "$hours:$minutes"; - _formFieldState?.didChange(widget.controller.text); - setState(() {}); - } - } - - @override - Widget build(BuildContext context) { - return Center( - child: SizedBox( - width: widget.width, - height: widget.height, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - widget.labelText, - style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - fontSize: 18, - fontWeight: FontWeight.bold, - ), - ), - if (!widget.required) - Text( - "(Optional)", - style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - fontSize: 15, - fontWeight: FontWeight.bold, - ), - ), - ], - ), - const SizedBox(height: 4), - FormField( - initialValue: widget.controller.text, - validator: widget.validator, - autovalidateMode: AutovalidateMode.onUserInteraction, - builder: (field) { - _formFieldState = field; - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Material( - elevation: widget.elevation ?? 4.0, - borderRadius: - BorderRadius.circular(widget.borderRadius ?? 8.0), - child: TextFormField( - controller: widget.controller, - readOnly: true, - onTap: () => _selectTime(context), - style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - fontWeight: FontWeight.w500, - ), - decoration: InputDecoration( - suffixIcon: Icon( - Icons.access_time, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - ), - errorStyle: const TextStyle(height: 0, fontSize: 0), - contentPadding: const EdgeInsets.symmetric( - horizontal: 10.0, vertical: 8.0), - filled: true, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - border: OutlineInputBorder( - borderRadius: BorderRadius.circular( - widget.borderRadius ?? 8.0), - borderSide: field.hasError - ? BorderSide( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - width: 2.0, - ) - : BorderSide.none, - ), - enabledBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular( - widget.borderRadius ?? 8.0), - borderSide: BorderSide.none, - ), - focusedBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular( - widget.borderRadius ?? 8.0), - borderSide: BorderSide( - color: field.hasError - ? MihColors.getRedColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark") - : MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - width: 3.0, - ), - ), - errorBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular( - widget.borderRadius ?? 8.0), - borderSide: BorderSide( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - width: 3.0, - ), - ), - focusedErrorBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular( - widget.borderRadius ?? 8.0), - borderSide: BorderSide( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - width: 3.0, - ), - ), - ), - onChanged: (value) { - field.didChange(value); - }, - ), - ), - if (field.hasError) - Padding( - padding: const EdgeInsets.only(left: 8.0, top: 4.0), - child: Text( - field.errorText ?? '', - style: TextStyle( - fontSize: 12, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - fontWeight: FontWeight.bold, - ), - ), - ), - ], - ); - }, - ), - ], - ), - ), - ); - } -} diff --git a/mih_ui/lib/mih_package_components/mih_toggle.dart b/mih_ui/lib/mih_package_components/mih_toggle.dart deleted file mode 100644 index 2ddc7c8b..00000000 --- a/mih_ui/lib/mih_package_components/mih_toggle.dart +++ /dev/null @@ -1,134 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; - -class MihToggle extends StatefulWidget { - final String hintText; - final bool initialPostion; - final Color fillColor; - final Color secondaryFillColor; - final bool? readOnly; - final double? elevation; - final void Function(bool) onChange; - const MihToggle({ - super.key, - required this.hintText, - required this.initialPostion, - required this.fillColor, - required this.secondaryFillColor, - this.readOnly, - this.elevation, - required this.onChange, - }); - - @override - State createState() => _MihToggleState(); -} - -class _MihToggleState extends State { - late bool togglePosition; - - @override - void didUpdateWidget(covariant MihToggle oldWidget) { - super.didUpdateWidget(oldWidget); - if (widget.initialPostion != oldWidget.initialPostion) { - setState(() { - togglePosition = widget.initialPostion; - }); - } - } - - @override - void initState() { - super.initState(); - togglePosition = widget.initialPostion; - } - - @override - Widget build(BuildContext context) { - return Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Expanded( - child: Text( - widget.hintText, - style: TextStyle( - fontWeight: FontWeight.bold, - color: widget.fillColor, - fontSize: 18, - ), - ), - ), - const SizedBox(width: 10), - // Material( - // elevation: widget.elevation ?? 0.01, - // shadowColor: widget.secondaryFillColor.withOpacity(0.5), - // color: Colors.transparent, - // shape: StadiumBorder(), - Container( - decoration: BoxDecoration( - color: Colors.transparent, - borderRadius: BorderRadius.circular( - 30), // Adjust the border radius to match the toggle - boxShadow: [ - BoxShadow( - color: Colors.black.withOpacity(0.15), - offset: Offset( - 0, widget.elevation ?? 10), // Adjust the vertical offset - blurRadius: widget.elevation ?? 10, - spreadRadius: 0, - ), - ], - ), - child: Switch( - value: togglePosition, - trackOutlineColor: WidgetStateProperty.resolveWith( - (states) { - if (widget.readOnly == true) { - return Colors.grey; - } - if (states.contains(WidgetState.selected)) { - return MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"); // Outline color when active - } - return MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"); // Outline color when active - }, - ), - activeColor: widget.readOnly == true - ? Colors.grey - : widget.secondaryFillColor, - activeTrackColor: widget.readOnly == true - ? Colors.grey.shade400 - : MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inactiveThumbColor: widget.readOnly == true - ? Colors.grey - : widget.secondaryFillColor, - inactiveTrackColor: widget.readOnly == true - ? Colors.grey.shade400 - : MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - // activeColor: widget.secondaryFillColor, - // activeTrackColor: widget.fillColor, - // inactiveThumbColor: widget.fillColor, - // inactiveTrackColor: widget.secondaryFillColor, - // onChanged: widget.readOnly != true ? widget.onChange : null, - onChanged: widget.readOnly != true - ? (newValue) { - setState(() { - togglePosition = newValue; // Update internal state - }); - widget.onChange(newValue); // Call the parent's onChange - } - : null, - ), - ), - const SizedBox(width: 10), - ], - ); - } -} diff --git a/mih_ui/lib/mih_packages/about_mih/about_mih.dart b/mih_ui/lib/mih_packages/about_mih/about_mih.dart index 5553462b..6f1b9995 100644 --- a/mih_ui/lib/mih_packages/about_mih/about_mih.dart +++ b/mih_ui/lib/mih_packages/about_mih/about_mih.dart @@ -1,7 +1,5 @@ import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/about_mih_provider.dart'; import 'package:mzansi_innovation_hub/mih_packages/about_mih/package_tools/mih_%20attributes.dart'; import 'package:mzansi_innovation_hub/mih_packages/about_mih/package_tools/mih_info.dart'; @@ -37,11 +35,11 @@ class _AboutMihState extends State { @override Widget build(BuildContext context) { return MihPackage( - appActionButton: getAction(), - appTools: getTools(), - appBody: getToolBody(), - appToolTitles: getToolTitle(), - selectedbodyIndex: context.watch().toolIndex, + packageActionButton: getAction(), + packageTools: getTools(), + packageToolBodies: getToolBody(), + packageToolTitles: getToolTitle(), + selectedBodyIndex: context.watch().toolIndex, onIndexChange: (newIndex) { context.read().setToolIndex(newIndex); }, @@ -77,7 +75,7 @@ class _AboutMihState extends State { }; return MihPackageTools( tools: temp, - selcetedIndex: context.watch().toolIndex, + selectedIndex: context.watch().toolIndex, ); } diff --git a/mih_ui/lib/mih_packages/about_mih/mih_policy_tos_ext/policy_and_terms_text.dart b/mih_ui/lib/mih_packages/about_mih/mih_policy_tos_ext/policy_and_terms_text.dart index 90570143..b917dfc1 100644 --- a/mih_ui/lib/mih_packages/about_mih/mih_policy_tos_ext/policy_and_terms_text.dart +++ b/mih_ui/lib/mih_packages/about_mih/mih_policy_tos_ext/policy_and_terms_text.dart @@ -1,7 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; class PolicyAndTermsText { List getPrivacyPolicyText(BuildContext context, bool english) { @@ -40,8 +38,7 @@ class PolicyAndTermsText { child: FittedBox( child: Icon( MihIcons.mihLogo, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), ), @@ -452,8 +449,7 @@ class PolicyAndTermsText { child: FittedBox( child: Icon( MihIcons.mihLogo, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), ), diff --git a/mih_ui/lib/mih_packages/about_mih/package_tile/about_mih_tile.dart b/mih_ui/lib/mih_packages/about_mih/package_tile/about_mih_tile.dart index c1e28031..fc10a30b 100644 --- a/mih_ui/lib/mih_packages/about_mih/package_tile/about_mih_tile.dart +++ b/mih_ui/lib/mih_packages/about_mih/package_tile/about_mih_tile.dart @@ -1,9 +1,6 @@ import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tile.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; class AboutMihTile extends StatefulWidget { final double packageSize; @@ -29,16 +26,14 @@ class _AboutMihTileState extends State { // arguments: 0, // ); }, - appName: "About MIH", - appIcon: Icon( + packageName: "About MIH", + packageIcon: Icon( MihIcons.aboutMih, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), // size: widget.packageSize, ), iconSize: widget.packageSize, - textColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + textColor: MihColors.secondary(), ); } } diff --git a/mih_ui/lib/mih_packages/about_mih/package_tools/mih_ attributes.dart b/mih_ui/lib/mih_packages/about_mih/package_tools/mih_ attributes.dart index d1918fbb..6acad0b6 100644 --- a/mih_ui/lib/mih_packages/about_mih/package_tools/mih_ attributes.dart +++ b/mih_ui/lib/mih_packages/about_mih/package_tools/mih_ attributes.dart @@ -1,9 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:url_launcher/url_launcher.dart'; class MihAttributes extends StatefulWidget { @@ -33,8 +29,7 @@ class _MihAttributesState extends State { children: [ Icon( resource, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), size: 100, ), const SizedBox(height: 5), @@ -50,6 +45,7 @@ class _MihAttributesState extends State { @override Widget build(BuildContext context) { return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(), ); @@ -71,8 +67,7 @@ class _MihAttributesState extends State { children: [ Icon( MihIcons.mihLogo, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), size: 165, ), const SizedBox( diff --git a/mih_ui/lib/mih_packages/about_mih/package_tools/mih_info.dart b/mih_ui/lib/mih_packages/about_mih/package_tools/mih_info.dart index 125a3762..dec6e168 100644 --- a/mih_ui/lib/mih_packages/about_mih/package_tools/mih_info.dart +++ b/mih_ui/lib/mih_packages/about_mih/package_tools/mih_info.dart @@ -1,20 +1,14 @@ import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_objects/profile_link.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_profile_links.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_business_details_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_install_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_floating_menu.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_user_services.dart'; import 'package:url_launcher/url_launcher.dart'; import 'package:redacted/redacted.dart'; @@ -52,8 +46,7 @@ class _MihInfoState extends State { Padding( padding: const EdgeInsets.only(left: 4.0), child: CircleAvatar( - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.primary(), backgroundImage: const AssetImage( "lib/mih_package_components/assets/images/founder.jpg"), //'https://media.licdn.com/dms/image/D4D03AQGd1-QhjtWWpA/profile-displayphoto-shrink_400_400/0/1671698053061?e=2147483647&v=beta&t=a3dJI5yxs5-KeXjj10LcNCFuC9IOfa8nNn3k_Qyr0CA'), @@ -63,8 +56,7 @@ class _MihInfoState extends State { Icon( MihIcons.mihRing, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ], ), @@ -208,15 +200,13 @@ class _MihInfoState extends State { children: [ FaIcon( platformIcon, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), const SizedBox(width: 10), Text( btnText, style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -267,9 +257,7 @@ class _MihInfoState extends State { redact: isLoading, configuration: RedactedConfiguration( defaultBorderRadius: BorderRadius.circular(5), - redactedColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark", - ), + redactedColor: MihColors.secondary(), ), ); }, @@ -322,9 +310,7 @@ class _MihInfoState extends State { redact: isLoading, configuration: RedactedConfiguration( defaultBorderRadius: BorderRadius.circular(5), - redactedColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark", - ), + redactedColor: MihColors.secondary(), ), ); }, @@ -350,8 +336,7 @@ class _MihInfoState extends State { ), child: Divider( thickness: 1, - color: MihColors.getGreyColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.grey(), ), ); } @@ -364,8 +349,7 @@ class _MihInfoState extends State { child: FittedBox( child: Icon( MihIcons.mihLogo, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), ), @@ -450,11 +434,7 @@ class _MihInfoState extends State { Text( "Please select the platform you want to install/ Update MIH from", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -468,29 +448,19 @@ class _MihInfoState extends State { ), ); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ FaIcon( FontAwesomeIcons.googlePlay, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), ), const SizedBox(width: 10), Text( "Play Store", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -509,29 +479,19 @@ class _MihInfoState extends State { ), ); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ FaIcon( Icons.store, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), ), const SizedBox(width: 10), Text( "App Gallery", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -548,8 +508,7 @@ class _MihInfoState extends State { MihInstallServices().installMihTrigger(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), width: 300, child: getInstallButtonText(), ), @@ -561,24 +520,20 @@ class _MihInfoState extends State { ), ); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), width: 300, child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ FaIcon( FontAwesomeIcons.youtube, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), const SizedBox(width: 10), Text( "MIH Beginners Guide", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -594,24 +549,20 @@ class _MihInfoState extends State { ), ); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), width: 300, child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ FaIcon( FontAwesomeIcons.patreon, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), const SizedBox(width: 10), Text( "Support Our Journey", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -664,25 +615,20 @@ class _MihInfoState extends State { ), ); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), width: 300, child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ FaIcon( FontAwesomeIcons.tiktok, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), const SizedBox(width: 10), Text( "@womenforchange.sa", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -698,25 +644,20 @@ class _MihInfoState extends State { ), ); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), width: 300, child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ FaIcon( Icons.edit, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), const SizedBox(width: 10), Text( "Sign Petition", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -890,6 +831,7 @@ class _MihInfoState extends State { @override Widget build(BuildContext context) { return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(), ); @@ -925,19 +867,15 @@ class _MihInfoState extends State { SpeedDialChild( child: Icon( Icons.android, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Android", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { shareMIHLink( context, @@ -949,19 +887,15 @@ class _MihInfoState extends State { SpeedDialChild( child: Icon( Icons.apple, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "iOS", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { shareMIHLink( context, @@ -973,19 +907,15 @@ class _MihInfoState extends State { SpeedDialChild( child: Icon( Icons.store, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Huawei", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { shareMIHLink( context, @@ -997,19 +927,15 @@ class _MihInfoState extends State { SpeedDialChild( child: Icon( Icons.vpn_lock, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Web", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { shareMIHLink( context, diff --git a/mih_ui/lib/mih_packages/about_mih/package_tools/mih_privacy_policy.dart b/mih_ui/lib/mih_packages/about_mih/package_tools/mih_privacy_policy.dart index 92e4f575..c04d71a8 100644 --- a/mih_ui/lib/mih_packages/about_mih/package_tools/mih_privacy_policy.dart +++ b/mih_ui/lib/mih_packages/about_mih/package_tools/mih_privacy_policy.dart @@ -1,8 +1,4 @@ -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_packages/about_mih/mih_policy_tos_ext/policy_and_terms_text.dart'; import 'package:flutter/material.dart'; @@ -18,6 +14,7 @@ class _MihPrivacyPolicyState extends State { @override Widget build(BuildContext context) { return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(context), ); @@ -34,14 +31,12 @@ class _MihPrivacyPolicyState extends State { englishOn = !englishOn; }); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), elevation: 10, child: Text( englishOn ? "Simplified Chinese" : "English", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/about_mih/package_tools/mih_terms_of_service.dart b/mih_ui/lib/mih_packages/about_mih/package_tools/mih_terms_of_service.dart index 435b71ea..8e0c1d07 100644 --- a/mih_ui/lib/mih_packages/about_mih/package_tools/mih_terms_of_service.dart +++ b/mih_ui/lib/mih_packages/about_mih/package_tools/mih_terms_of_service.dart @@ -1,8 +1,4 @@ -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_packages/about_mih/mih_policy_tos_ext/policy_and_terms_text.dart'; import 'package:flutter/material.dart'; @@ -18,6 +14,7 @@ class _MIHTermsOfServiceState extends State { @override Widget build(BuildContext context) { return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(context), ); @@ -34,14 +31,12 @@ class _MIHTermsOfServiceState extends State { englishOn = !englishOn; }); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), elevation: 10, child: Text( englishOn ? "Simplified Chinese" : "English", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/access_review/builder/build_access_request_list.dart b/mih_ui/lib/mih_packages/access_review/builder/build_access_request_list.dart index e44e0272..19bb3190 100644 --- a/mih_ui/lib/mih_packages/access_review/builder/build_access_request_list.dart +++ b/mih_ui/lib/mih_packages/access_review/builder/build_access_request_list.dart @@ -1,10 +1,8 @@ import 'dart:convert'; import 'package:flutter/material.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_objects/access_request.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; @@ -103,30 +101,20 @@ class _BuildPatientsListState extends State { TextSpan accessWithColour; if (access == "APPROVED") { accessWithColour = TextSpan( - text: "$access\n", - style: TextStyle( - color: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"))); + text: "$access\n", style: TextStyle(color: MihColors.green())); } else if (access == "PENDING") { accessWithColour = TextSpan( - text: "$access\n", - style: TextStyle( - color: MihColors.getGreyColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"))); + text: "$access\n", style: TextStyle(color: MihColors.grey())); } else { - accessWithColour = TextSpan( - text: "$access\n", - style: TextStyle( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"))); + accessWithColour = + TextSpan(text: "$access\n", style: TextStyle(color: MihColors.red())); } return ListTile( title: Text( line1, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), subtitle: RichText( @@ -142,7 +130,7 @@ class _BuildPatientsListState extends State { // Text( // subtitle, // style: TextStyle( - // color: MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // color: MihColors.secondary(), // ), // ), onTap: () { @@ -158,7 +146,7 @@ class _BuildPatientsListState extends State { }, // trailing: Icon( // Icons.arrow_forward, - // color: MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // color: MihColors.secondary(), // ), ); } @@ -213,8 +201,7 @@ class _BuildPatientsListState extends State { subtitle, textAlign: TextAlign.left, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: popUpBodySize, //fontWeight: FontWeight.bold, ), @@ -231,15 +218,12 @@ class _BuildPatientsListState extends State { onPressed: () { updateAccessAPICall(index, "declined"); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.red(), width: 300, child: Text( "Decline", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -249,15 +233,12 @@ class _BuildPatientsListState extends State { onPressed: () { updateAccessAPICall(index, "approved"); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Approve", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -294,8 +275,7 @@ class _BuildPatientsListState extends State { physics: const NeverScrollableScrollPhysics(), separatorBuilder: (BuildContext context, index) { return Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ); }, itemCount: widget.accessRequests.length, diff --git a/mih_ui/lib/mih_packages/access_review/builder/build_business_access_list.dart b/mih_ui/lib/mih_packages/access_review/builder/build_business_access_list.dart index 8743ae25..d3750707 100644 --- a/mih_ui/lib/mih_packages/access_review/builder/build_business_access_list.dart +++ b/mih_ui/lib/mih_packages/access_review/builder/build_business_access_list.dart @@ -1,14 +1,12 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:ken_logger/ken_logger.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_objects/patient_access.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_access_controlls_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_access_controls_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:provider/provider.dart'; @@ -58,30 +56,20 @@ class _BuildPatientsListState extends State { TextSpan accessWithColour; if (access == "APPROVED") { accessWithColour = TextSpan( - text: "$access\n", - style: TextStyle( - color: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"))); + text: "$access\n", style: TextStyle(color: MihColors.green())); } else if (access == "PENDING") { accessWithColour = TextSpan( - text: "$access\n", - style: TextStyle( - color: MihColors.getGreyColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"))); + text: "$access\n", style: TextStyle(color: MihColors.grey())); } else { - accessWithColour = TextSpan( - text: "$access\n", - style: TextStyle( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"))); + accessWithColour = + TextSpan(text: "$access\n", style: TextStyle(color: MihColors.red())); } return ListTile( title: Text( line1, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), subtitle: RichText( @@ -96,7 +84,7 @@ class _BuildPatientsListState extends State { // Text( // subtitle, // style: TextStyle( - // color: MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // color: MihColors.secondary(), // ), // ), onTap: () { @@ -104,7 +92,7 @@ class _BuildPatientsListState extends State { }, // trailing: Icon( // Icons.arrow_forward, - // color: MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // color: MihColors.secondary(), // ), ); } @@ -173,8 +161,7 @@ class _BuildPatientsListState extends State { subtitle, textAlign: TextAlign.left, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: popUpBodySize, //fontWeight: FontWeight.bold, ), @@ -191,18 +178,14 @@ class _BuildPatientsListState extends State { "Important Notice: Approving Profile Access", style: TextStyle( fontWeight: FontWeight.bold, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.red(), ), ), Text( "You are about to accept access to your patient's profile. Please be aware of the following important points:", style: TextStyle( fontWeight: FontWeight.normal, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.red(), ), ), SizedBox( @@ -211,9 +194,7 @@ class _BuildPatientsListState extends State { "1. Permanent Access: Once you accepts this access request, it will become permanent.", style: TextStyle( fontWeight: FontWeight.normal, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.red(), ), ), ), @@ -223,9 +204,7 @@ class _BuildPatientsListState extends State { "2. Shared Information: Any updates make to youe patient profile will be visible to all who have access to the profile.", style: TextStyle( fontWeight: FontWeight.normal, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.red(), ), ), ), @@ -235,9 +214,7 @@ class _BuildPatientsListState extends State { "3. Irreversible Access: Once granted, you cannot revoke access to your patient's profile.", style: TextStyle( fontWeight: FontWeight.normal, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.red(), ), ), ), @@ -245,9 +222,7 @@ class _BuildPatientsListState extends State { "By pressing the \"Approve\" button you accept the above terms.", style: TextStyle( fontWeight: FontWeight.bold, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.red(), ), ), ], @@ -263,18 +238,14 @@ class _BuildPatientsListState extends State { "Important Notice: Approved Profile Access", style: TextStyle( fontWeight: FontWeight.bold, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.red(), ), ), Text( "You have accepted access to your patient's profile. Please be aware of the following important points:", style: TextStyle( fontWeight: FontWeight.normal, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.red(), ), ), SizedBox( @@ -283,9 +254,7 @@ class _BuildPatientsListState extends State { "1. Permanent Access: This access is permanent.", style: TextStyle( fontWeight: FontWeight.normal, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.red(), ), ), ), @@ -295,9 +264,7 @@ class _BuildPatientsListState extends State { "2. Shared Information: Any updates make to youe patient profile will be visible to all who have access to the profile.", style: TextStyle( fontWeight: FontWeight.normal, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.red(), ), ), ), @@ -307,9 +274,7 @@ class _BuildPatientsListState extends State { "3. Irreversible Access: You cannot revoke this access to your patient's profile.", style: TextStyle( fontWeight: FontWeight.normal, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.red(), ), ), ), @@ -355,16 +320,12 @@ class _BuildPatientsListState extends State { MihAlertServices().internetConnectionAlert(context); } }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.red(), width: 300, child: Text( "Decline", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -396,16 +357,12 @@ class _BuildPatientsListState extends State { MihAlertServices().internetConnectionAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Approve", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -438,15 +395,13 @@ class _BuildPatientsListState extends State { widget.onSuccessUpate!(); } }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), elevation: 10, width: 300, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -488,8 +443,7 @@ class _BuildPatientsListState extends State { return ListView.separated( separatorBuilder: (BuildContext context, index) { return Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ); }, itemCount: filterAccessList(accessProvider.accessList!).length, diff --git a/mih_ui/lib/mih_packages/access_review/mih_access.dart b/mih_ui/lib/mih_packages/access_review/mih_access.dart index 329ac58b..f44e3dfc 100644 --- a/mih_ui/lib/mih_packages/access_review/mih_access.dart +++ b/mih_ui/lib/mih_packages/access_review/mih_access.dart @@ -1,8 +1,5 @@ import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_access_controlls_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_packages/access_review/package_tools/mih_access_requests.dart'; @@ -59,11 +56,11 @@ class _MihAccessState extends State { ); } return MihPackage( - appActionButton: getAction(), - appTools: getTools(), - appBody: getToolBody(), - appToolTitles: getToolTitle(), - selectedbodyIndex: accessProvider.toolIndex, + packageActionButton: getAction(), + packageTools: getTools(), + packageToolBodies: getToolBody(), + packageToolTitles: getToolTitle(), + selectedBodyIndex: accessProvider.toolIndex, onIndexChange: (newValue) { accessProvider.setToolIndex(newValue); }, @@ -92,7 +89,7 @@ class _MihAccessState extends State { }; return MihPackageTools( tools: temp, - selcetedIndex: context.watch().toolIndex, + selectedIndex: context.watch().toolIndex, ); } diff --git a/mih_ui/lib/mih_packages/access_review/package_tile/mih_access_tile.dart b/mih_ui/lib/mih_packages/access_review/package_tile/mih_access_tile.dart index 759ee745..81d2489d 100644 --- a/mih_ui/lib/mih_packages/access_review/package_tile/mih_access_tile.dart +++ b/mih_ui/lib/mih_packages/access_review/package_tile/mih_access_tile.dart @@ -31,16 +31,14 @@ class _MihAccessTileState extends State { // arguments: widget.signedInUser, // ); }, - appName: "Access Controls", - appIcon: Icon( + packageName: "Access Controls", + packageIcon: Icon( MihIcons.accessControl, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), // size: widget.packageSize, ), iconSize: widget.packageSize, - textColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + textColor: MihColors.secondary(), ); } } diff --git a/mih_ui/lib/mih_packages/access_review/package_tools/mih_access_requests.dart b/mih_ui/lib/mih_packages/access_review/package_tools/mih_access_requests.dart index 241fce12..3b20652b 100644 --- a/mih_ui/lib/mih_packages/access_review/package_tools/mih_access_requests.dart +++ b/mih_ui/lib/mih_packages/access_review/package_tools/mih_access_requests.dart @@ -1,14 +1,12 @@ import 'package:ken_logger/ken_logger.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/patient_access.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_access_controlls_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_packages/access_review/builder/build_business_access_list.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_access_controls_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_dropdwn_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; @@ -178,6 +176,7 @@ class _MihAccessRequestState extends State { @override Widget build(BuildContext context) { return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, innerHorizontalPadding: 10, bodyItem: getBody(), diff --git a/mih_ui/lib/mih_packages/calculator/mih_calculator.dart b/mih_ui/lib/mih_packages/calculator/mih_calculator.dart index e80bdb0a..8aaa1e8a 100644 --- a/mih_ui/lib/mih_packages/calculator/mih_calculator.dart +++ b/mih_ui/lib/mih_packages/calculator/mih_calculator.dart @@ -1,7 +1,5 @@ import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_calculator_provider.dart'; import 'package:mzansi_innovation_hub/mih_packages/calculator/package_tools/currency_exchange_rate.dart'; import 'package:mzansi_innovation_hub/mih_packages/calculator/package_tools/simple_calc.dart'; @@ -42,11 +40,11 @@ class _MIHCalculatorState extends State { @override Widget build(BuildContext context) { return MihPackage( - appActionButton: getAction(), - appTools: getTools(), - appBody: getToolBody(), - appToolTitles: getToolTitle(), - selectedbodyIndex: context.watch().toolIndex, + packageActionButton: getAction(), + packageTools: getTools(), + packageToolBodies: getToolBody(), + packageToolTitles: getToolTitle(), + selectedBodyIndex: context.watch().toolIndex, onIndexChange: (newIndex) { context.read().setToolIndex(newIndex); }, @@ -79,7 +77,7 @@ class _MIHCalculatorState extends State { }; return MihPackageTools( tools: temp, - selcetedIndex: context.watch().toolIndex, + selectedIndex: context.watch().toolIndex, ); } diff --git a/mih_ui/lib/mih_packages/calculator/package_tiles/mih_calculator_tile.dart b/mih_ui/lib/mih_packages/calculator/package_tiles/mih_calculator_tile.dart index 6aa393b1..4da82212 100644 --- a/mih_ui/lib/mih_packages/calculator/package_tiles/mih_calculator_tile.dart +++ b/mih_ui/lib/mih_packages/calculator/package_tiles/mih_calculator_tile.dart @@ -1,9 +1,6 @@ import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tile.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; class MihCalculatorTile extends StatefulWidget { final double packageSize; @@ -26,16 +23,14 @@ class _MihCalculatorTileState extends State { "mihCalculator", ); }, - appName: "Calculator", - appIcon: Icon( + packageName: "Calculator", + packageIcon: Icon( MihIcons.calculator, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), // size: widget.packageSize, ), iconSize: widget.packageSize, - textColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + textColor: MihColors.secondary(), ); } } diff --git a/mih_ui/lib/mih_packages/calculator/package_tools/currency_exchange_rate.dart b/mih_ui/lib/mih_packages/calculator/package_tools/currency_exchange_rate.dart index 6ae8bbb7..63738907 100644 --- a/mih_ui/lib/mih_packages/calculator/package_tools/currency_exchange_rate.dart +++ b/mih_ui/lib/mih_packages/calculator/package_tools/currency_exchange_rate.dart @@ -3,17 +3,10 @@ import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_banner_ad.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_dropdwn_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_calculator_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_currency_exchange_rate_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; @@ -76,8 +69,7 @@ class _CurrencyExchangeRateState extends State { Icon( Icons.currency_exchange, size: 150, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 20), FittedBox( @@ -87,8 +79,7 @@ class _CurrencyExchangeRateState extends State { style: TextStyle( fontSize: 30, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), ), @@ -103,9 +94,7 @@ class _CurrencyExchangeRateState extends State { style: TextStyle( fontSize: 30, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), @@ -117,9 +106,7 @@ class _CurrencyExchangeRateState extends State { style: TextStyle( fontSize: 30, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), @@ -136,9 +123,7 @@ class _CurrencyExchangeRateState extends State { style: TextStyle( fontSize: 30, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), @@ -150,9 +135,7 @@ class _CurrencyExchangeRateState extends State { style: TextStyle( fontSize: 30, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), @@ -194,8 +177,7 @@ class _CurrencyExchangeRateState extends State { textAlign: TextAlign.center, style: TextStyle( fontSize: 25, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontWeight: FontWeight.bold, ), ), @@ -215,8 +197,7 @@ class _CurrencyExchangeRateState extends State { '$companyName makes no representations or warranties of any kind, express or implied, as to the accuracy, completeness, reliability, or suitability of the information and calculations generated by the Tool. All exchange rates and results are estimates and are subject to change without notice.', style: TextStyle( fontSize: 15, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontWeight: FontWeight.normal, ), ), @@ -227,8 +208,7 @@ class _CurrencyExchangeRateState extends State { 'The information provided by the Tool should not be construed as financial, investment, trading, or any other form of advice. You should not make any financial decisions based solely on the output of this Tool. We expressly recommend that you seek independent professional advice and verify all data with a qualified financial advisor and/or through alternative, reliable market data sources before executing any foreign exchange transactions.', style: TextStyle( fontSize: 15, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontWeight: FontWeight.normal, ), ), @@ -239,8 +219,7 @@ class _CurrencyExchangeRateState extends State { 'By using the Tool, you agree that $companyName, its affiliates, directors, and employees shall not be held liable for any direct, indirect, incidental, special, consequential, or exemplary damages, including but not limited to, damages for loss of profits, goodwill, use, data, or other intangible losses, resulting from: (i) the use or the inability to use the Tool; (ii) any inaccuracies, errors, or omissions in the Tool\'s calculations or data; or (iii) any reliance placed by you on the information provided by the Tool.', style: TextStyle( fontSize: 15, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontWeight: FontWeight.normal, ), ), @@ -255,8 +234,7 @@ class _CurrencyExchangeRateState extends State { text: TextSpan( style: TextStyle( fontSize: 15, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontWeight: FontWeight.normal, ), children: [ @@ -287,6 +265,7 @@ class _CurrencyExchangeRateState extends State { Widget build(BuildContext context) { double screenWidth = MediaQuery.of(context).size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, innerHorizontalPadding: 10, bodyItem: getBody(screenWidth), @@ -309,12 +288,8 @@ class _CurrencyExchangeRateState extends State { formKey: _formKey, formFields: [ MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _fromAmountController, multiLineInput: false, requiredText: true, @@ -354,9 +329,7 @@ class _CurrencyExchangeRateState extends State { text: TextSpan( style: TextStyle( fontSize: 15, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.red(), ), children: [ const TextSpan( @@ -365,9 +338,7 @@ class _CurrencyExchangeRateState extends State { text: "Diclaimer", style: TextStyle( decoration: TextDecoration.underline, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontWeight: FontWeight.bold, ), recognizer: TapGestureRecognizer() @@ -398,18 +369,12 @@ class _CurrencyExchangeRateState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Calculate", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -419,18 +384,12 @@ class _CurrencyExchangeRateState extends State { onPressed: () { clearInput(); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.red(), width: 300, child: Text( "Clear", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/calculator/package_tools/simple_calc.dart b/mih_ui/lib/mih_packages/calculator/package_tools/simple_calc.dart index 1d2c148d..b0c3f9d8 100644 --- a/mih_ui/lib/mih_packages/calculator/package_tools/simple_calc.dart +++ b/mih_ui/lib/mih_packages/calculator/package_tools/simple_calc.dart @@ -1,10 +1,7 @@ +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; import 'package:flutter/material.dart'; import 'package:math_expressions/math_expressions.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; class SimpleCalc extends StatefulWidget { const SimpleCalc({super.key}); @@ -73,6 +70,7 @@ class _SimpleCalcState extends State { @override Widget build(BuildContext context) { return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, innerHorizontalPadding: 10, bodyItem: getBody(), @@ -109,8 +107,7 @@ class _SimpleCalcState extends State { userInput, style: TextStyle( fontSize: 40, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), ), @@ -124,8 +121,7 @@ class _SimpleCalcState extends State { answer, style: TextStyle( fontSize: 30, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontWeight: FontWeight.bold), ), ), @@ -160,18 +156,14 @@ class _SimpleCalcState extends State { answer = '0'; }); }, - buttonColor: MihColors.getPurpleColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.purple(), width: 50, height: 50, borderRadius: 5, child: Text( buttons[index], style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -190,18 +182,14 @@ class _SimpleCalcState extends State { userInput += buttons[index]; }); }, - buttonColor: MihColors.getGreyColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.grey(), width: 50, height: 50, borderRadius: 5, child: Text( buttons[index], style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -219,18 +207,14 @@ class _SimpleCalcState extends State { userInput += buttons[index]; }); }, - buttonColor: MihColors.getGreyColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.grey(), width: 50, height: 50, borderRadius: 5, child: Text( buttons[index], style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -259,18 +243,14 @@ class _SimpleCalcState extends State { }); } }, - buttonColor: MihColors.getGreyColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.grey(), width: 50, height: 50, borderRadius: 5, child: Text( buttons[index], style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -299,17 +279,13 @@ class _SimpleCalcState extends State { equalPressed(); }); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.red(), width: 50, height: 50, borderRadius: 5, child: Icon( Icons.backspace, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), ), ); @@ -325,18 +301,14 @@ class _SimpleCalcState extends State { userInput = answer; }); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 50, height: 50, borderRadius: 5, child: Text( buttons[index], style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -355,18 +327,14 @@ class _SimpleCalcState extends State { equalPressed(); }); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.secondary(), width: 50, height: 50, borderRadius: 5, child: Text( buttons[index], style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/calculator/package_tools/tip_calc.dart b/mih_ui/lib/mih_packages/calculator/package_tools/tip_calc.dart index 49ce484c..0f5f4ff4 100644 --- a/mih_ui/lib/mih_packages/calculator/package_tools/tip_calc.dart +++ b/mih_ui/lib/mih_packages/calculator/package_tools/tip_calc.dart @@ -1,22 +1,14 @@ import 'dart:io'; import 'package:flutter/foundation.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_banner_ad.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_numeric_stepper.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:math_expressions/math_expressions.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_toggle.dart'; import 'package:provider/provider.dart'; class TipCalc extends StatefulWidget { @@ -111,8 +103,7 @@ class _TipCalcState extends State { children: [ FaIcon( FontAwesomeIcons.coins, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), size: 35, ), const SizedBox(width: 15), @@ -122,8 +113,7 @@ class _TipCalcState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), ], @@ -134,8 +124,7 @@ class _TipCalcState extends State { style: TextStyle( fontSize: 30, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), const Divider(), @@ -145,8 +134,7 @@ class _TipCalcState extends State { children: [ FaIcon( FontAwesomeIcons.moneyBills, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), size: 35, ), const SizedBox(width: 15), @@ -156,8 +144,7 @@ class _TipCalcState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), ], @@ -168,8 +155,7 @@ class _TipCalcState extends State { style: TextStyle( fontSize: 30, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), Text( @@ -178,8 +164,7 @@ class _TipCalcState extends State { style: TextStyle( fontSize: 30, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), if (splitBillController.text == "Yes") const Divider(), @@ -190,8 +175,7 @@ class _TipCalcState extends State { children: [ FaIcon( FontAwesomeIcons.peopleGroup, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), size: 35, ), const SizedBox(width: 15), @@ -201,9 +185,7 @@ class _TipCalcState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ], @@ -215,8 +197,7 @@ class _TipCalcState extends State { style: TextStyle( fontSize: 30, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), if (splitBillController.text == "Yes") @@ -226,8 +207,7 @@ class _TipCalcState extends State { style: TextStyle( fontSize: 30, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), SizedBox(height: 10), @@ -258,6 +238,7 @@ class _TipCalcState extends State { Widget build(BuildContext context) { double screenWidth = MediaQuery.of(context).size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, innerHorizontalPadding: 10, bodyItem: getBody(screenWidth), @@ -278,10 +259,8 @@ class _TipCalcState extends State { formKey: _formKey, formFields: [ MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: billAmountController, multiLineInput: false, requiredText: true, @@ -293,10 +272,8 @@ class _TipCalcState extends State { ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: tipPercentageController, multiLineInput: false, requiredText: true, @@ -310,10 +287,8 @@ class _TipCalcState extends State { MihToggle( hintText: "Split Bill", initialPostion: splitPosition, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - secondaryFillColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + secondaryFillColor: MihColors.primary(), onChange: (value) { setState(() { splitBillController.text = value ? "Yes" : "No"; @@ -350,12 +325,8 @@ class _TipCalcState extends State { children: [ MihNumericStepper( controller: noPeopleController, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), hintText: "No. People", requiredText: temp == "Yes", minValue: 2, @@ -406,16 +377,12 @@ class _TipCalcState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Calculate", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -425,16 +392,12 @@ class _TipCalcState extends State { onPressed: () { clearInput(); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.red(), width: 300, child: Text( "Clear", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/calendar/builder/build_access_request_list.dart b/mih_ui/lib/mih_packages/calendar/builder/build_access_request_list.dart index 53f22147..7b686e34 100644 --- a/mih_ui/lib/mih_packages/calendar/builder/build_access_request_list.dart +++ b/mih_ui/lib/mih_packages/calendar/builder/build_access_request_list.dart @@ -1,12 +1,10 @@ import 'dart:convert'; import 'package:flutter/material.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_objects/access_request.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:supertokens_flutter/http.dart' as http; @@ -103,30 +101,20 @@ class _BuildPatientsListState extends State { TextSpan accessWithColour; if (access == "APPROVED") { accessWithColour = TextSpan( - text: "$access\n", - style: TextStyle( - color: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"))); + text: "$access\n", style: TextStyle(color: MihColors.green())); } else if (access == "PENDING") { accessWithColour = TextSpan( - text: "$access\n", - style: TextStyle( - color: MihColors.getGreyColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"))); + text: "$access\n", style: TextStyle(color: MihColors.grey())); } else { - accessWithColour = TextSpan( - text: "$access\n", - style: TextStyle( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"))); + accessWithColour = + TextSpan(text: "$access\n", style: TextStyle(color: MihColors.red())); } return ListTile( title: Text( line1, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), subtitle: RichText( @@ -142,7 +130,7 @@ class _BuildPatientsListState extends State { // Text( // subtitle, // style: TextStyle( - // color: MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // color: MihColors.secondary(), // ), // ), onTap: () { @@ -158,7 +146,7 @@ class _BuildPatientsListState extends State { }, // trailing: Icon( // Icons.arrow_forward, - // color: MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // color: MihColors.secondary(), // ), ); } @@ -213,8 +201,7 @@ class _BuildPatientsListState extends State { subtitle, textAlign: TextAlign.left, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: popUpBodySize, //fontWeight: FontWeight.bold, ), @@ -231,15 +218,12 @@ class _BuildPatientsListState extends State { onPressed: () { updateAccessAPICall(index, "declined"); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.red(), width: 300, child: Text( "Decline", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -249,15 +233,12 @@ class _BuildPatientsListState extends State { onPressed: () { updateAccessAPICall(index, "approved"); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Approve", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -294,8 +275,7 @@ class _BuildPatientsListState extends State { physics: const NeverScrollableScrollPhysics(), separatorBuilder: (BuildContext context, index) { return Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ); }, itemCount: widget.accessRequests.length, diff --git a/mih_ui/lib/mih_packages/calendar/builder/build_appointment_list.dart b/mih_ui/lib/mih_packages/calendar/builder/build_appointment_list.dart index 669c97f9..319332ee 100644 --- a/mih_ui/lib/mih_packages/calendar/builder/build_appointment_list.dart +++ b/mih_ui/lib/mih_packages/calendar/builder/build_appointment_list.dart @@ -1,20 +1,14 @@ import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:go_router/go_router.dart'; import 'package:ken_logger/ken_logger.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_objects/appointment.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_calendar_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_calendar_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_date_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_time_field.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; @@ -106,20 +100,16 @@ class _BuildAppointmentListState extends State { int appointHour = int.parse(timePart.split(':')[0]); - Color appointmentColor = MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + Color appointmentColor = MihColors.secondary(); if (currentDate == datePart) { if (appointHour < hourNow) { - appointmentColor = MihColors.getGreyColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + appointmentColor = MihColors.grey(); } else if (appointHour == hourNow) { - appointmentColor = MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + appointmentColor = MihColors.green(); } } else if (DateTime.parse(datePart).isBefore(DateTime.parse(currentDate))) { - appointmentColor = MihColors.getGreyColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + appointmentColor = MihColors.grey(); } return Container( @@ -179,19 +169,15 @@ class _BuildAppointmentListState extends State { SpeedDialChild( child: Icon( Icons.edit, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Edit Appointment", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { appointmentUpdateWindow(mzansiProfileProvider, mihCalendarProvider, index, bodyWidth); @@ -200,19 +186,15 @@ class _BuildAppointmentListState extends State { SpeedDialChild( child: Icon( Icons.delete, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Delete Appointment", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { deleteAppointmentConfirmationWindow( mzansiProfileProvider, mihCalendarProvider, index); @@ -232,10 +214,8 @@ class _BuildAppointmentListState extends State { children: [ const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: widget.titleController, multiLineInput: false, requiredText: true, @@ -244,10 +224,8 @@ class _BuildAppointmentListState extends State { ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: widget.dateController, multiLineInput: false, requiredText: true, @@ -256,10 +234,8 @@ class _BuildAppointmentListState extends State { ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: widget.timeController, multiLineInput: false, requiredText: true, @@ -268,10 +244,8 @@ class _BuildAppointmentListState extends State { ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: widget.descriptionIDController, multiLineInput: true, height: 250, @@ -304,19 +278,15 @@ class _BuildAppointmentListState extends State { SpeedDialChild( child: Icon( Icons.edit, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Edit Appointment", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { appointmentUpdateWindow(mzansiProfileProvider, mihCalendarProvider, index, bodyWidth); @@ -325,19 +295,15 @@ class _BuildAppointmentListState extends State { SpeedDialChild( child: Icon( Icons.delete, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Delete Appointment", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { deleteAppointmentConfirmationWindow( mzansiProfileProvider, mihCalendarProvider, index); @@ -357,10 +323,8 @@ class _BuildAppointmentListState extends State { children: [ const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: widget.titleController, multiLineInput: false, requiredText: true, @@ -369,10 +333,8 @@ class _BuildAppointmentListState extends State { ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: widget.dateController, multiLineInput: false, requiredText: true, @@ -381,10 +343,8 @@ class _BuildAppointmentListState extends State { ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: widget.timeController, multiLineInput: false, requiredText: true, @@ -393,10 +353,8 @@ class _BuildAppointmentListState extends State { ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: widget.descriptionIDController, multiLineInput: true, height: 250, @@ -460,12 +418,8 @@ class _BuildAppointmentListState extends State { formKey: _formKey, formFields: [ MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: widget.titleController, multiLineInput: false, requiredText: true, @@ -494,12 +448,8 @@ class _BuildAppointmentListState extends State { ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: widget.descriptionIDController, multiLineInput: true, height: 250, @@ -527,18 +477,12 @@ class _BuildAppointmentListState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Update", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -681,15 +625,13 @@ class _BuildAppointmentListState extends State { clearControllers(); Navigator.of(context).pop(); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), elevation: 10, width: 300, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/calendar/builder/build_queue_list.dart b/mih_ui/lib/mih_packages/calendar/builder/build_queue_list.dart index bef838a1..7ece54ee 100644 --- a/mih_ui/lib/mih_packages/calendar/builder/build_queue_list.dart +++ b/mih_ui/lib/mih_packages/calendar/builder/build_queue_list.dart @@ -1,8 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/patient_queue.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; class BuildQueueList extends StatefulWidget { @@ -43,8 +42,7 @@ class _BuildQueueListState extends State { title: Text( title, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), subtitle: RichText( @@ -85,8 +83,7 @@ class _BuildQueueListState extends State { shrinkWrap: true, separatorBuilder: (BuildContext context, index) { return Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ); }, itemCount: widget.patientQueue.length, diff --git a/mih_ui/lib/mih_packages/calendar/mzansi_calendar.dart b/mih_ui/lib/mih_packages/calendar/mzansi_calendar.dart index 66199e12..cbd5064a 100644 --- a/mih_ui/lib/mih_packages/calendar/mzansi_calendar.dart +++ b/mih_ui/lib/mih_packages/calendar/mzansi_calendar.dart @@ -1,8 +1,5 @@ import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_calendar_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_packages/calendar/package_tools/appointments.dart'; @@ -59,11 +56,11 @@ class _MzansiCalendarState extends State { ); } return MihPackage( - appActionButton: getAction(), - appTools: getTools(), - appBody: getToolBody(), - appToolTitles: getToolTitle(), - selectedbodyIndex: calendarProvider.toolIndex, + packageActionButton: getAction(), + packageTools: getTools(), + packageToolBodies: getToolBody(), + packageToolTitles: getToolTitle(), + selectedBodyIndex: calendarProvider.toolIndex, onIndexChange: (newIndex) { calendarProvider.setToolIndex(newIndex); }, @@ -94,7 +91,7 @@ class _MzansiCalendarState extends State { return MihPackageTools( tools: temp, - selcetedIndex: context.watch().toolIndex, + selectedIndex: context.watch().toolIndex, ); } diff --git a/mih_ui/lib/mih_packages/calendar/package_tiles/mzansi_calendar_tile.dart b/mih_ui/lib/mih_packages/calendar/package_tiles/mzansi_calendar_tile.dart index f29fff14..ebc24152 100644 --- a/mih_ui/lib/mih_packages/calendar/package_tiles/mzansi_calendar_tile.dart +++ b/mih_ui/lib/mih_packages/calendar/package_tiles/mzansi_calendar_tile.dart @@ -1,9 +1,6 @@ import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tile.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; class MzansiCalendarTile extends StatefulWidget { final double packageSize; @@ -30,16 +27,14 @@ class _MzansiCalendarTileState extends State { // arguments: widget.arguments, // ); }, - appName: "Calendar", - appIcon: Icon( + packageName: "Calendar", + packageIcon: Icon( MihIcons.calendar, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), // size: widget.packageSize, ), iconSize: widget.packageSize, - textColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + textColor: MihColors.secondary(), ); } } diff --git a/mih_ui/lib/mih_packages/calendar/package_tools/appointments.dart b/mih_ui/lib/mih_packages/calendar/package_tools/appointments.dart index ab0967e2..e5f8037b 100644 --- a/mih_ui/lib/mih_packages/calendar/package_tools/appointments.dart +++ b/mih_ui/lib/mih_packages/calendar/package_tools/appointments.dart @@ -1,24 +1,14 @@ import 'package:flutter/material.dart'; import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_calendar.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_calendar_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_calendar_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_date_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_floating_menu.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_time_field.dart'; import 'package:mzansi_innovation_hub/mih_objects/appointment.dart'; import 'package:mzansi_innovation_hub/mih_packages/calendar/builder/build_appointment_list.dart'; import 'package:provider/provider.dart'; @@ -75,8 +65,7 @@ class _PatientAccessRequestState extends State { Icon( MihIcons.calendar, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( @@ -86,9 +75,7 @@ class _PatientAccessRequestState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), const SizedBox(height: 25), @@ -99,9 +86,7 @@ class _PatientAccessRequestState extends State { style: TextStyle( fontSize: 20, fontWeight: FontWeight.normal, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), children: [ TextSpan(text: "Press "), @@ -110,9 +95,7 @@ class _PatientAccessRequestState extends State { child: Icon( Icons.menu, size: 20, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), TextSpan( @@ -155,12 +138,8 @@ class _PatientAccessRequestState extends State { formKey: _formKey, formFields: [ MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _appointmentTitleController, multiLineInput: false, requiredText: true, @@ -189,12 +168,8 @@ class _PatientAccessRequestState extends State { ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _appointmentDescriptionIDController, multiLineInput: true, height: 250, @@ -215,16 +190,12 @@ class _PatientAccessRequestState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Add", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -324,15 +295,13 @@ class _PatientAccessRequestState extends State { _appointmentDescriptionIDController.clear(); }); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), elevation: 10, width: 300, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -383,7 +352,7 @@ class _PatientAccessRequestState extends State { }); }), // Divider( - // color: MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // color: MihColors.secondary(), // ), displayAppointmentList( mzansiProfileProvider, @@ -401,21 +370,15 @@ class _PatientAccessRequestState extends State { SpeedDialChild( child: Icon( Icons.add, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), label: "Add Appointment", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { addAppointmentWindow( mzansiProfileProvider, mihCalendarProvider, width); @@ -477,6 +440,7 @@ class _PatientAccessRequestState extends State { Widget build(BuildContext context) { double screenWidth = MediaQuery.of(context).size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(screenWidth), ); diff --git a/mih_ui/lib/mih_packages/mih_authentication/mih_auth_forgot_password.dart b/mih_ui/lib/mih_packages/mih_authentication/mih_auth_forgot_password.dart index 5ed9cad9..3e02452d 100644 --- a/mih_ui/lib/mih_packages/mih_authentication/mih_auth_forgot_password.dart +++ b/mih_ui/lib/mih_packages/mih_authentication/mih_auth_forgot_password.dart @@ -1,8 +1,6 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_packages/mih_authentication/package_tools/mih_forgot_password.dart'; class MihAuthForgotPassword extends StatefulWidget { @@ -13,7 +11,7 @@ class MihAuthForgotPassword extends StatefulWidget { } class _MihAuthForgotPasswordState extends State { - int _selcetedIndex = 0; + int _selectedIndex = 0; late final MihForgotPassword _forgotPassword; @override @@ -25,14 +23,14 @@ class _MihAuthForgotPasswordState extends State { @override Widget build(BuildContext context) { return MihPackage( - appActionButton: getAction(), - appTools: getTools(), - appToolTitles: ["Forgot Password"], - appBody: getToolBody(), - selectedbodyIndex: _selcetedIndex, + packageActionButton: getAction(), + packageTools: getTools(), + packageToolTitles: ["Forgot Password"], + packageToolBodies: getToolBody(), + selectedBodyIndex: _selectedIndex, onIndexChange: (newValue) { setState(() { - _selcetedIndex = newValue; + _selectedIndex = newValue; }); }, ); @@ -56,12 +54,12 @@ class _MihAuthForgotPasswordState extends State { Map temp = {}; temp[const Icon(Icons.question_mark_rounded)] = () { setState(() { - _selcetedIndex = 0; + _selectedIndex = 0; }); }; return MihPackageTools( tools: temp, - selcetedIndex: _selcetedIndex, + selectedIndex: _selectedIndex, ); } diff --git a/mih_ui/lib/mih_packages/mih_authentication/mih_auth_password_reset.dart b/mih_ui/lib/mih_packages/mih_authentication/mih_auth_password_reset.dart index a458cbd3..b1aa8dbf 100644 --- a/mih_ui/lib/mih_packages/mih_authentication/mih_auth_password_reset.dart +++ b/mih_ui/lib/mih_packages/mih_authentication/mih_auth_password_reset.dart @@ -1,9 +1,6 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_packages/mih_authentication/package_tools/mih_reset_password.dart'; class MihAuthPasswordReset extends StatefulWidget { @@ -18,7 +15,7 @@ class MihAuthPasswordReset extends StatefulWidget { } class _MihAuthPasswordResetState extends State { - int _selcetedIndex = 0; + int _selectedIndex = 0; late final MihResetPassword _resetPassword; @override @@ -30,14 +27,14 @@ class _MihAuthPasswordResetState extends State { @override Widget build(BuildContext context) { return MihPackage( - appActionButton: getAction(), - appTools: getTools(), - appBody: getToolBody(), - appToolTitles: ["Reset Password"], - selectedbodyIndex: _selcetedIndex, + packageActionButton: getAction(), + packageTools: getTools(), + packageToolBodies: getToolBody(), + packageToolTitles: ["Reset Password"], + selectedBodyIndex: _selectedIndex, onIndexChange: (newValue) { setState(() { - _selcetedIndex = newValue; + _selectedIndex = newValue; }); }, ); @@ -64,12 +61,12 @@ class _MihAuthPasswordResetState extends State { Map temp = {}; temp[const Icon(Icons.password_rounded)] = () { setState(() { - _selcetedIndex = 0; + _selectedIndex = 0; }); }; return MihPackageTools( tools: temp, - selcetedIndex: _selcetedIndex, + selectedIndex: _selectedIndex, ); } diff --git a/mih_ui/lib/mih_packages/mih_authentication/mih_authentication.dart b/mih_ui/lib/mih_packages/mih_authentication/mih_authentication.dart index adbd4139..38503d7c 100644 --- a/mih_ui/lib/mih_packages/mih_authentication/mih_authentication.dart +++ b/mih_ui/lib/mih_packages/mih_authentication/mih_authentication.dart @@ -1,9 +1,6 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_authentication_provider.dart'; import 'package:mzansi_innovation_hub/mih_packages/mih_authentication/package_tools/mih_register.dart'; import 'package:mzansi_innovation_hub/mih_packages/mih_authentication/package_tools/mih_sign_in.dart'; @@ -30,11 +27,11 @@ class _MihAuthenticationState extends State { @override Widget build(BuildContext context) { return MihPackage( - appActionButton: getAction(), - appTools: getTools(), - appBody: getToolBody(), - appToolTitles: getToolTitle(), - selectedbodyIndex: context.watch().toolIndex, + packageActionButton: getAction(), + packageTools: getTools(), + packageToolBodies: getToolBody(), + packageToolTitles: getToolTitle(), + selectedBodyIndex: context.watch().toolIndex, onIndexChange: (newIndex) { context.read().setToolIndex(newIndex); }, @@ -66,7 +63,7 @@ class _MihAuthenticationState extends State { }; return MihPackageTools( tools: temp, - selcetedIndex: context.watch().toolIndex, + selectedIndex: context.watch().toolIndex, ); } diff --git a/mih_ui/lib/mih_packages/mih_authentication/package_tools/mih_forgot_password.dart b/mih_ui/lib/mih_packages/mih_authentication/package_tools/mih_forgot_password.dart index b4406da8..8b79139f 100644 --- a/mih_ui/lib/mih_packages/mih_authentication/package_tools/mih_forgot_password.dart +++ b/mih_ui/lib/mih_packages/mih_authentication/package_tools/mih_forgot_password.dart @@ -1,14 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_authentication_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; @@ -61,14 +55,12 @@ class _MihForgotPasswordState extends State { context.pop(); validateInput(); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), width: 300, child: Text( "Continue", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -91,14 +83,12 @@ class _MihForgotPasswordState extends State { extra: true, ); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), width: 300, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -125,6 +115,7 @@ class _MihForgotPasswordState extends State { Widget build(BuildContext context) { double screenWidth = MediaQuery.of(context).size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(screenWidth), ); @@ -156,8 +147,7 @@ class _MihForgotPasswordState extends State { Icon( Icons.lock, size: 100, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), //spacer const SizedBox(height: 10), @@ -167,8 +157,7 @@ class _MihForgotPasswordState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), const SizedBox(height: 25), @@ -176,10 +165,8 @@ class _MihForgotPasswordState extends State { formKey: _formKey, formFields: [ MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: emailController, multiLineInput: false, requiredText: true, @@ -200,16 +187,12 @@ class _MihForgotPasswordState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Reset Password", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/mih_authentication/package_tools/mih_register.dart b/mih_ui/lib/mih_packages/mih_authentication/package_tools/mih_register.dart index f6555b88..219c1687 100644 --- a/mih_ui/lib/mih_packages/mih_authentication/package_tools/mih_register.dart +++ b/mih_ui/lib/mih_packages/mih_authentication/package_tools/mih_register.dart @@ -3,16 +3,10 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_authentication_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_user_services.dart'; @@ -163,14 +157,12 @@ class _MihRegisterState extends State { onPressed: () { Navigator.of(context).pop(); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), width: 200, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 18, fontWeight: FontWeight.bold, ), @@ -185,6 +177,7 @@ class _MihRegisterState extends State { Widget build(BuildContext context) { double screenWidth = MediaQuery.of(context).size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(screenWidth), ); @@ -218,8 +211,7 @@ class _MihRegisterState extends State { Icon( Icons.lock, size: 100, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), //spacer const SizedBox(height: 10), @@ -229,8 +221,7 @@ class _MihRegisterState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), //spacer @@ -240,10 +231,8 @@ class _MihRegisterState extends State { formFields: [ //email input MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: emailController, multiLineInput: false, requiredText: true, @@ -257,10 +246,8 @@ class _MihRegisterState extends State { const SizedBox(height: 10), //password input MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: passwordController, multiLineInput: false, requiredText: true, @@ -274,10 +261,8 @@ class _MihRegisterState extends State { //spacer const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: confirmPasswordController, multiLineInput: false, requiredText: true, @@ -306,16 +291,12 @@ class _MihRegisterState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Create New Account", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -327,16 +308,12 @@ class _MihRegisterState extends State { .read() .setToolIndex(0); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.secondary(), width: 300, child: Text( "I have an account", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/mih_authentication/package_tools/mih_reset_password.dart b/mih_ui/lib/mih_packages/mih_authentication/package_tools/mih_reset_password.dart index 72fe56e2..d0f1ff8f 100644 --- a/mih_ui/lib/mih_packages/mih_authentication/package_tools/mih_reset_password.dart +++ b/mih_ui/lib/mih_packages/mih_authentication/package_tools/mih_reset_password.dart @@ -1,14 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_authentication_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; @@ -63,15 +57,13 @@ class _MihResetPasswordState extends State { extra: true, ); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), elevation: 10, width: 300, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -86,6 +78,7 @@ class _MihResetPasswordState extends State { Widget build(BuildContext context) { double screenWidth = MediaQuery.of(context).size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(screenWidth), ); @@ -120,8 +113,7 @@ class _MihResetPasswordState extends State { Icon( Icons.lock, size: 100, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), //spacer const SizedBox(height: 10), @@ -131,8 +123,7 @@ class _MihResetPasswordState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), //spacer @@ -141,10 +132,8 @@ class _MihResetPasswordState extends State { formKey: _formKey, formFields: [ MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: passwordController, multiLineInput: false, requiredText: true, @@ -158,10 +147,8 @@ class _MihResetPasswordState extends State { //spacer const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: confirmPasswordController, multiLineInput: false, requiredText: true, @@ -184,16 +171,12 @@ class _MihResetPasswordState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Reset Password", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/mih_authentication/package_tools/mih_sign_in.dart b/mih_ui/lib/mih_packages/mih_authentication/package_tools/mih_sign_in.dart index 1e64837d..8328417f 100644 --- a/mih_ui/lib/mih_packages/mih_authentication/package_tools/mih_sign_in.dart +++ b/mih_ui/lib/mih_packages/mih_authentication/package_tools/mih_sign_in.dart @@ -1,16 +1,10 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tile.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_authentication_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_authentication_services.dart'; @@ -80,15 +74,15 @@ class _MihSignInState extends State { MihAlertServices().inputErrorAlert(context); } }, - appName: "Patient", - appIcon: Icon( + packageName: "Patient", + packageIcon: Icon( Icons.perm_identity_rounded, color: getPrim(), size: 200, ), iconSize: 200, textColor: getPrim(), - authenticateUser: false, + // authenticateUser: false, )); tileList.add(MihPackageTile( onTap: () { @@ -102,15 +96,15 @@ class _MihSignInState extends State { MihAlertServices().inputErrorAlert(context); } }, - appName: "Doctor", - appIcon: Icon( + packageName: "Doctor", + packageIcon: Icon( Icons.medical_services, color: getPrim(), size: 200, ), iconSize: 200, textColor: getPrim(), - authenticateUser: false, + // authenticateUser: false, )); //if (AppEnviroment.getEnv() == "Dev") { tileList.add(MihPackageTile( @@ -125,15 +119,15 @@ class _MihSignInState extends State { MihAlertServices().inputErrorAlert(context); } }, - appName: "Business", - appIcon: Icon( + packageName: "Business", + packageIcon: Icon( Icons.business, color: getPrim(), size: 200, ), iconSize: 200, textColor: getPrim(), - authenticateUser: false, + // authenticateUser: false, )); tileList.add(MihPackageTile( onTap: () { @@ -147,27 +141,25 @@ class _MihSignInState extends State { MihAlertServices().inputErrorAlert(context); } }, - appName: "Test", - appIcon: Icon( + packageName: "Test", + packageIcon: Icon( Icons.warning_amber_rounded, color: getPrim(), size: 200, ), iconSize: 200, textColor: getPrim(), - authenticateUser: false, + // authenticateUser: false, )); //} } Color getPrim() { - return MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + return MihColors.secondary(); } Color getSec() { - return MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + return MihColors.primary(); } @override @@ -182,6 +174,7 @@ class _MihSignInState extends State { Widget build(BuildContext context) { double screenWidth = MediaQuery.of(context).size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(screenWidth), ); @@ -228,16 +221,12 @@ class _MihSignInState extends State { onPressed: () { MihInstallServices().installMihTrigger(context); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 150, child: Text( "Install MIH", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -251,8 +240,7 @@ class _MihSignInState extends State { Icon( Icons.lock, size: 100, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), //spacer const SizedBox(height: 10), @@ -262,8 +250,7 @@ class _MihSignInState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), //spacer @@ -272,12 +259,8 @@ class _MihSignInState extends State { formKey: _formKey, formFields: [ MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: emailController, multiLineInput: false, requiredText: true, @@ -291,12 +274,8 @@ class _MihSignInState extends State { const SizedBox(height: 10), //password input MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: passwordController, multiLineInput: false, requiredText: true, @@ -328,11 +307,7 @@ class _MihSignInState extends State { 'Forgot Password?', style: TextStyle( fontSize: 15, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.secondary(), fontWeight: FontWeight.bold, ), ), @@ -359,18 +334,12 @@ class _MihSignInState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Sign In", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -382,18 +351,12 @@ class _MihSignInState extends State { .read() .setToolIndex(1); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.secondary(), width: 300, child: Text( "Create New Account", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -430,11 +393,7 @@ class _MihSignInState extends State { style: TextStyle( fontWeight: FontWeight.bold, fontSize: 15, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark")), + color: MihColors.secondary()), ), onTap: () { setState(() { @@ -481,11 +440,7 @@ class _MihSignInState extends State { "NB: These accounts are used for test purposes. Please do not store personal information on these profiles.", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.red(), fontSize: 15.0, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/mih_file_viewer/components/mih_print_prevew.dart b/mih_ui/lib/mih_packages/mih_file_viewer/components/mih_print_prevew.dart index 4b241eae..7ccbc972 100644 --- a/mih_ui/lib/mih_packages/mih_file_viewer/components/mih_print_prevew.dart +++ b/mih_ui/lib/mih_packages/mih_file_viewer/components/mih_print_prevew.dart @@ -1,9 +1,8 @@ import 'package:flutter/material.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; import 'package:pdf/pdf.dart'; import 'package:printing/printing.dart'; -import '../../../mih_package_components/mih_loading_circle.dart'; class MIHPrintPreview extends StatefulWidget { final PrintPreviewArguments arguments; diff --git a/mih_ui/lib/mih_packages/mih_file_viewer/mih_fle_viewer.dart b/mih_ui/lib/mih_packages/mih_file_viewer/mih_fle_viewer.dart index 5432ca7a..19ee777c 100644 --- a/mih_ui/lib/mih_packages/mih_file_viewer/mih_fle_viewer.dart +++ b/mih_ui/lib/mih_packages/mih_file_viewer/mih_fle_viewer.dart @@ -1,8 +1,6 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_file_viewer_provider.dart'; import 'package:mzansi_innovation_hub/mih_packages/mih_file_viewer/package_tools/mih_expanded_file_view.dart'; import 'package:provider/provider.dart'; @@ -21,11 +19,11 @@ class _MihFleViewerState extends State { builder: (BuildContext context, MihFileViewerProvider fileViewerProvider, Widget? child) { return MihPackage( - appActionButton: getAction(), - appTools: getTools(), - appBody: getToolBody(), - appToolTitles: getToolTitle(), - selectedbodyIndex: fileViewerProvider.toolIndex, + packageActionButton: getAction(), + packageTools: getTools(), + packageToolBodies: getToolBody(), + packageToolTitles: getToolTitle(), + selectedBodyIndex: fileViewerProvider.toolIndex, onIndexChange: (newIndex) { fileViewerProvider.setToolIndex(newIndex); }, @@ -59,7 +57,7 @@ class _MihFleViewerState extends State { }; return MihPackageTools( tools: temp, - selcetedIndex: context.watch().toolIndex, + selectedIndex: context.watch().toolIndex, ); } diff --git a/mih_ui/lib/mih_packages/mih_file_viewer/package_tools/mih_expanded_file_view.dart b/mih_ui/lib/mih_packages/mih_file_viewer/package_tools/mih_expanded_file_view.dart index d1fcdb70..14beaa06 100644 --- a/mih_ui/lib/mih_packages/mih_file_viewer/package_tools/mih_expanded_file_view.dart +++ b/mih_ui/lib/mih_packages/mih_file_viewer/package_tools/mih_expanded_file_view.dart @@ -2,11 +2,8 @@ import 'dart:async'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_file_viewer_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:provider/provider.dart'; import 'package:syncfusion_flutter_core/theme.dart'; import 'package:syncfusion_flutter_pdfviewer/pdfviewer.dart'; @@ -56,6 +53,7 @@ class _MihExpandedFileViewState extends State { double width = size.width; double height = size.height; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(width, height), ); @@ -75,9 +73,7 @@ class _MihExpandedFileViewState extends State { height: height - 70, child: SfPdfViewerTheme( data: SfPdfViewerThemeData( - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + backgroundColor: MihColors.primary(), ), child: SfPdfViewer.network( fileViewerProvider.fileLink, @@ -111,8 +107,7 @@ class _MihExpandedFileViewState extends State { child: Material( elevation: 10, shadowColor: Colors.black, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), borderRadius: BorderRadius.circular(25.0), child: Container( decoration: BoxDecoration( @@ -138,9 +133,7 @@ class _MihExpandedFileViewState extends State { }, icon: Icon( Icons.arrow_back, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), ), if (isPDF) @@ -149,9 +142,7 @@ class _MihExpandedFileViewState extends State { style: TextStyle( fontSize: 20, fontWeight: FontWeight.bold, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), ), if (isPDF) @@ -169,9 +160,7 @@ class _MihExpandedFileViewState extends State { }, icon: Icon( Icons.arrow_forward, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), ), if (isPDF) @@ -194,9 +183,7 @@ class _MihExpandedFileViewState extends State { }, icon: Icon( Icons.zoom_in, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), ), if (isPDF) @@ -221,9 +208,7 @@ class _MihExpandedFileViewState extends State { }, icon: Icon( Icons.zoom_out, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), ), // IconButton( @@ -234,7 +219,7 @@ class _MihExpandedFileViewState extends State { // }, // icon: Icon( // Icons.print, - // color: MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // color: MihColors.secondary(), // ), // ), IconButton( @@ -252,9 +237,7 @@ class _MihExpandedFileViewState extends State { }, icon: Icon( Icons.download, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), ), ], diff --git a/mih_ui/lib/mih_packages/mih_home/components/mih_app_drawer.dart b/mih_ui/lib/mih_packages/mih_home/components/mih_app_drawer.dart index 71ec53f7..3c524a78 100644 --- a/mih_ui/lib/mih_packages/mih_home/components/mih_app_drawer.dart +++ b/mih_ui/lib/mih_packages/mih_home/components/mih_app_drawer.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_providers/about_mih_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_access_controlls_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_authentication_provider.dart'; @@ -14,9 +14,7 @@ import 'package:mzansi_innovation_hub/mih_providers/mzansi_directory_provider.da import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_wallet_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:provider/provider.dart'; -import '../../../main.dart'; import 'package:supertokens_flutter/supertokens.dart'; class MIHAppDrawer extends StatefulWidget { @@ -83,10 +81,8 @@ class _MIHAppDrawerState extends State { fileNameController: proPicController, onChange: (_) {}, userSelectedfile: null, - frameColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - backgroundColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + frameColor: MihColors.primary(), + backgroundColor: MihColors.secondary(), ), ); } @@ -111,7 +107,7 @@ class _MIHAppDrawerState extends State { MzansiProfileProvider mzansiProfileProvider, Widget? child) { return SafeArea( child: Drawer( - //backgroundColor: MihColors.getPrimaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + //backgroundColor: MihColors.primary(), child: LayoutBuilder( builder: (BuildContext context, BoxConstraints constraints) { return Stack( @@ -124,9 +120,7 @@ class _MIHAppDrawerState extends State { children: [ DrawerHeader( decoration: BoxDecoration( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), child: SizedBox( // height: 300, @@ -143,11 +137,7 @@ class _MIHAppDrawerState extends State { "Setup Business", style: TextStyle( fontWeight: FontWeight.bold, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), ), ), ), @@ -157,11 +147,7 @@ class _MIHAppDrawerState extends State { "${mzansiProfileProvider.user!.fname} ${mzansiProfileProvider.user!.lname}", style: TextStyle( fontWeight: FontWeight.bold, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), ), ), ), @@ -172,11 +158,7 @@ class _MIHAppDrawerState extends State { style: TextStyle( fontSize: 12, fontWeight: FontWeight.bold, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), ), ), ), @@ -187,11 +169,7 @@ class _MIHAppDrawerState extends State { style: TextStyle( fontSize: 12, fontWeight: FontWeight.bold, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), ), ), ), @@ -201,11 +179,7 @@ class _MIHAppDrawerState extends State { style: TextStyle( fontSize: 10, fontWeight: FontWeight.bold, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), ), ), ], @@ -219,7 +193,7 @@ class _MIHAppDrawerState extends State { // Icon( // Icons.home_outlined, // color: - // MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // MihColors.secondary(), // ), // const SizedBox(width: 25.0), // Text( @@ -249,22 +223,14 @@ class _MIHAppDrawerState extends State { children: [ Icon( Icons.policy, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.secondary(), ), const SizedBox(width: 25.0), Text( "Privacy Policy", style: TextStyle( //fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.secondary(), ), ), ], @@ -288,22 +254,14 @@ class _MIHAppDrawerState extends State { children: [ Icon( Icons.design_services_rounded, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.secondary(), ), const SizedBox(width: 25.0), Text( "Terms of Service", style: TextStyle( //fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.secondary(), ), ), ], @@ -327,22 +285,14 @@ class _MIHAppDrawerState extends State { children: [ Icon( Icons.logout, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.secondary(), ), const SizedBox(width: 25.0), Text( "Sign Out", style: TextStyle( //fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.secondary(), ), ), ], @@ -395,9 +345,7 @@ class _MIHAppDrawerState extends State { }, child: Icon( MihIcons.mihLogo, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), ), // IconButton( @@ -417,7 +365,7 @@ class _MIHAppDrawerState extends State { // }, // icon: Icon( // Icons.light_mode, - // color: MihColors.getPrimaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // color: MihColors.primary(), // size: 35, // ), // ), diff --git a/mih_ui/lib/mih_packages/mih_home/mih_home.dart b/mih_ui/lib/mih_packages/mih_home/mih_home.dart index aaa59ed2..e99a5261 100644 --- a/mih_ui/lib/mih_packages/mih_home/mih_home.dart +++ b/mih_ui/lib/mih_packages/mih_home/mih_home.dart @@ -143,8 +143,8 @@ class _MihHomeState extends State { Icon( Icons.policy, size: 150, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark", + color: MihColors.secondary( + , ), ), const SizedBox(height: 10), @@ -152,8 +152,8 @@ class _MihHomeState extends State { "Welcome to the MIH App", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark", + color: MihColors.secondary( + , ), fontSize: 30, fontWeight: FontWeight.bold, @@ -164,8 +164,8 @@ class _MihHomeState extends State { "To keep using the MIH app, please take a moment to review and accept our Policies. Our agreements helps us keep things running smoothly and securely.", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark", + color: MihColors.secondary( + , ), fontSize: 18, fontWeight: FontWeight.normal, @@ -189,17 +189,15 @@ class _MihHomeState extends State { context.goNamed("aboutMih", extra: mzansiProfileProvider.personalHome); }, - buttonColor: MihColors.getOrangeColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.orange( + ), elevation: 10, width: 300, child: Text( "Privacy Policy", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary( + ), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -214,17 +212,15 @@ class _MihHomeState extends State { context.goNamed("aboutMih", extra: mzansiProfileProvider.personalHome); }, - buttonColor: MihColors.getYellowColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.yellow( + ), elevation: 10, width: 300, child: Text( "Terms of Service", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary( + ), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -236,17 +232,15 @@ class _MihHomeState extends State { KenLogger.success("Date Time Now: $now"); createOrUpdateAccpetance(mzansiProfileProvider); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green( + ), elevation: 10, width: 300, child: Text( "Accept", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary( + ), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -308,13 +302,13 @@ class _MihHomeState extends State { child: SizedBox( height: MediaQuery.of(context).size.height, child: MihPackage( - appActionButton: getAction(), - appTools: getTools(mzansiProfileProvider, + packageActionButton: getAction(), + packageTools: getTools(mzansiProfileProvider, mzansiProfileProvider.user!.type != "personal"), - appBody: getToolBody(mzansiProfileProvider), - appToolTitles: getToolTitle(), + packageToolBodies: getToolBody(mzansiProfileProvider), + packageToolTitles: getToolTitle(), actionDrawer: getActionDrawer(), - selectedbodyIndex: + selectedBodyIndex: mzansiProfileProvider.personalHome ? 0 : 1, onIndexChange: (newValue) { mzansiProfileProvider.setPersonalHome(newValue == 0); @@ -358,10 +352,10 @@ class _MihHomeState extends State { fileNameController: null, userSelectedfile: null, // frameColor: frameColor, - frameColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + frameColor: MihColors.secondary( + ), + backgroundColor: MihColors.primary( + ), onChange: (_) {}, ), ), @@ -395,7 +389,7 @@ class _MihHomeState extends State { } return MihPackageTools( tools: temp, - selcetedIndex: mzansiProfileProvider.personalHome ? 0 : 1, + selectedIndex: mzansiProfileProvider.personalHome ? 0 : 1, ); } diff --git a/mih_ui/lib/mih_packages/mih_home/mih_home_error.dart b/mih_ui/lib/mih_packages/mih_home/mih_home_error.dart index 05f05368..5e00c901 100644 --- a/mih_ui/lib/mih_packages/mih_home/mih_home_error.dart +++ b/mih_ui/lib/mih_packages/mih_home/mih_home_error.dart @@ -1,12 +1,7 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; class MihHomeError extends StatefulWidget { final String errorMessage; @@ -20,21 +15,21 @@ class MihHomeError extends StatefulWidget { } class _MihHomeErrorState extends State { - int _selcetedIndex = 0; + int _selectedIndex = 0; @override Widget build(BuildContext context) { return MihPackage( - appActionButton: getErrorAction(), - appTools: getErrorTools(), - appToolTitles: ["Connection Error"], - appBody: getErrorToolBody(widget.errorMessage), - selectedbodyIndex: _selcetedIndex, + packageActionButton: getErrorAction(), + packageTools: getErrorTools(), + packageToolTitles: ["Connection Error"], + packageToolBodies: getErrorToolBody(widget.errorMessage), + selectedBodyIndex: _selectedIndex, onIndexChange: (newValue) { setState(() { - _selcetedIndex = newValue; + _selectedIndex = newValue; }); - //print("Index: $_selcetedIndex"); + //print("Index: $_selectedIndex"); }, ); } @@ -56,18 +51,19 @@ class _MihHomeErrorState extends State { Map temp = {}; temp[const Icon(Icons.power_off_outlined)] = () { setState(() { - _selcetedIndex = 0; + _selectedIndex = 0; }); }; return MihPackageTools( tools: temp, - selcetedIndex: _selcetedIndex, + selectedIndex: _selectedIndex, ); } List getErrorToolBody(String error) { List toolBodies = [ MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: true, bodyItem: Column( mainAxisAlignment: MainAxisAlignment.start, @@ -76,8 +72,7 @@ class _MihHomeErrorState extends State { "Connection Error", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 35, fontWeight: FontWeight.bold, ), @@ -85,8 +80,7 @@ class _MihHomeErrorState extends State { Icon( Icons.power_off_outlined, size: 150, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), SizedBox( width: 500, @@ -94,8 +88,7 @@ class _MihHomeErrorState extends State { "Looks like we ran into an issue getting your data.\nPlease check you internet connection and try again.", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -109,14 +102,12 @@ class _MihHomeErrorState extends State { extra: true, ); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Refresh", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -132,9 +123,7 @@ class _MihHomeErrorState extends State { "Error: $error", textAlign: TextAlign.left, style: TextStyle( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.red(), fontSize: 15, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/mih_home/mih_route_error.dart b/mih_ui/lib/mih_packages/mih_home/mih_route_error.dart index 51a541c6..dd75390b 100644 --- a/mih_ui/lib/mih_packages/mih_home/mih_route_error.dart +++ b/mih_ui/lib/mih_packages/mih_home/mih_route_error.dart @@ -1,13 +1,6 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; class MihRouteError extends StatefulWidget { const MihRouteError({ @@ -19,21 +12,21 @@ class MihRouteError extends StatefulWidget { } class _MihRouteErrorState extends State { - int _selcetedIndex = 0; + int _selectedIndex = 0; @override Widget build(BuildContext context) { return MihPackage( - appActionButton: getErrorAction(), - appTools: getErrorTools(), - appToolTitles: ["Invalid Path"], - appBody: getErrorToolBody(), - selectedbodyIndex: _selcetedIndex, + packageActionButton: getErrorAction(), + packageTools: getErrorTools(), + packageToolTitles: ["Invalid Path"], + packageToolBodies: getErrorToolBody(), + selectedBodyIndex: _selectedIndex, onIndexChange: (newValue) { setState(() { - _selcetedIndex = newValue; + _selectedIndex = newValue; }); - //print("Index: $_selcetedIndex"); + //print("Index: $_selectedIndex"); }, ); } @@ -55,18 +48,19 @@ class _MihRouteErrorState extends State { Map temp = {}; temp[const Icon(Icons.link_off_rounded)] = () { setState(() { - _selcetedIndex = 0; + _selectedIndex = 0; }); }; return MihPackageTools( tools: temp, - selcetedIndex: _selcetedIndex, + selectedIndex: _selectedIndex, ); } List getErrorToolBody() { List toolBodies = [ MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: true, bodyItem: Column( mainAxisAlignment: MainAxisAlignment.start, @@ -75,8 +69,7 @@ class _MihRouteErrorState extends State { "Oops! Wrong Turn.", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 35, fontWeight: FontWeight.bold, ), @@ -84,8 +77,7 @@ class _MihRouteErrorState extends State { Icon( Icons.link_off_rounded, size: 150, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), SizedBox( width: 700, @@ -93,8 +85,7 @@ class _MihRouteErrorState extends State { "It looks like you've taken a wrong turn and ended up on a package that doesn't exist within the MIH App.\n\nDon't worry, getting back is easy. Just click the button below or the MIH Logo to return to the correct path.", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.w500, ), @@ -108,14 +99,12 @@ class _MihRouteErrorState extends State { extra: true, ); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Back to MIH", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -131,7 +120,7 @@ class _MihRouteErrorState extends State { // "Error: $error", // textAlign: TextAlign.left, // style: TextStyle( - // color: MihColors.getRedColor( + // color: MihColors.red( // MzansiInnovationHub.of(context)!.theme.mode == // "Dark"), // fontSize: 15, diff --git a/mih_ui/lib/mih_packages/mih_home/package_tools/mih_business_home.dart b/mih_ui/lib/mih_packages/mih_home/package_tools/mih_business_home.dart index d0155b07..2e8dda43 100644 --- a/mih_ui/lib/mih_packages/mih_home/package_tools/mih_business_home.dart +++ b/mih_ui/lib/mih_packages/mih_home/package_tools/mih_business_home.dart @@ -1,12 +1,9 @@ import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_search_bar.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_ai_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_packages/about_mih/package_tile/about_mih_tile.dart'; import 'package:mzansi_innovation_hub/mih_packages/calculator/package_tiles/mih_calculator_tile.dart'; import 'package:mzansi_innovation_hub/mih_packages/calendar/package_tiles/mzansi_calendar_tile.dart'; @@ -191,6 +188,7 @@ class _MihBusinessHomeState extends State final double width = size.width; final double height = size.height; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(width, height), ); @@ -213,10 +211,8 @@ class _MihBusinessHomeState extends State hintText: "Ask Mzansi", prefixIcon: Icons.search, prefixAltIcon: MihIcons.mzansiAi, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - hintColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + hintColor: MihColors.primary(), onPrefixIconTap: () { mzansiAiProvider.ollamaProvider.resetChat(); if (searchController.text.isNotEmpty) { @@ -262,9 +258,7 @@ class _MihBusinessHomeState extends State Icon( MihIcons.mzansiAi, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( @@ -274,9 +268,7 @@ class _MihBusinessHomeState extends State style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ], diff --git a/mih_ui/lib/mih_packages/mih_home/package_tools/mih_personal_home.dart b/mih_ui/lib/mih_packages/mih_home/package_tools/mih_personal_home.dart index b1e74f8a..5098a4cf 100644 --- a/mih_ui/lib/mih_packages/mih_home/package_tools/mih_personal_home.dart +++ b/mih_ui/lib/mih_packages/mih_home/package_tools/mih_personal_home.dart @@ -1,12 +1,9 @@ import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_package_components/Example/package_tiles/test_package_tile.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_search_bar.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_ai_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_packages/about_mih/package_tile/about_mih_tile.dart'; import 'package:mzansi_innovation_hub/mih_packages/access_review/package_tile/mih_access_tile.dart'; import 'package:mzansi_innovation_hub/mih_packages/calculator/package_tiles/mih_calculator_tile.dart'; @@ -213,6 +210,7 @@ class _MihPersonalHomeState extends State final double height = size.height; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(width, height), ); @@ -233,10 +231,8 @@ class _MihPersonalHomeState extends State hintText: "Ask Mzansi", prefixIcon: Icons.search, prefixAltIcon: MihIcons.mzansiAi, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - hintColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + hintColor: MihColors.primary(), onPrefixIconTap: () { mzansiAiProvider.ollamaProvider.resetChat(); if (searchController.text.isNotEmpty) { @@ -282,9 +278,7 @@ class _MihPersonalHomeState extends State Icon( MihIcons.mzansiAi, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( @@ -294,9 +288,7 @@ class _MihPersonalHomeState extends State style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ], diff --git a/mih_ui/lib/mih_packages/mine_sweeper/builders/build_minesweeper_leaderboard_list.dart b/mih_ui/lib/mih_packages/mine_sweeper/builders/build_minesweeper_leaderboard_list.dart index 2b9ed288..7132ae42 100644 --- a/mih_ui/lib/mih_packages/mine_sweeper/builders/build_minesweeper_leaderboard_list.dart +++ b/mih_ui/lib/mih_packages/mine_sweeper/builders/build_minesweeper_leaderboard_list.dart @@ -1,11 +1,9 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_mine_sweeper_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:provider/provider.dart'; class BuildMinesweeperLeaderboardList extends StatefulWidget { @@ -21,17 +19,13 @@ class _BuildMinesweeperLeaderboardListState Color getMedalColor(int index) { switch (index) { case (0): - return MihColors.getGoldColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + return MihColors.gold(); case (1): - return MihColors.getSilverColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + return MihColors.silver(); case (2): - return MihColors.getBronze( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + return MihColors.bronze(); default: - return MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + return MihColors.secondary(); } } @@ -44,8 +38,7 @@ class _BuildMinesweeperLeaderboardListState return ListView.separated( separatorBuilder: (BuildContext context, index) { return Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ); }, itemCount: mineSweeperProvider.leaderboard!.length, @@ -84,21 +77,13 @@ class _BuildMinesweeperLeaderboardListState ? Icon( MihIcons.mihRing, size: 80, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.secondary(), ) : imageFile == null ? Icon( MihIcons.iDontKnow, size: 80, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.secondary(), ) : MihCircleAvatar( key: UniqueKey(), @@ -109,11 +94,7 @@ class _BuildMinesweeperLeaderboardListState fileNameController: null, userSelectedfile: null, frameColor: getMedalColor(index), - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + backgroundColor: MihColors.primary(), onChange: () {}, ), const SizedBox(width: 10), diff --git a/mih_ui/lib/mih_packages/mine_sweeper/builders/build_my_scoreboard_list.dart b/mih_ui/lib/mih_packages/mine_sweeper/builders/build_my_scoreboard_list.dart index 59f7f3a4..eeeebc90 100644 --- a/mih_ui/lib/mih_packages/mine_sweeper/builders/build_my_scoreboard_list.dart +++ b/mih_ui/lib/mih_packages/mine_sweeper/builders/build_my_scoreboard_list.dart @@ -1,8 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_mine_sweeper_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:provider/provider.dart'; class BuildMyScoreBoardList extends StatefulWidget { @@ -18,17 +17,13 @@ class _BuildMinesweeperLeaderboardListState Color getMedalColor(int index) { switch (index) { case (0): - return MihColors.getGoldColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + return MihColors.gold(); case (1): - return MihColors.getSilverColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + return MihColors.silver(); case (2): - return MihColors.getBronze( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + return MihColors.bronze(); default: - return MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + return MihColors.secondary(); } } @@ -41,8 +36,7 @@ class _BuildMinesweeperLeaderboardListState return ListView.separated( separatorBuilder: (BuildContext context, index) { return Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ); }, itemCount: mineSweeperProvider.myScoreboard!.length, diff --git a/mih_ui/lib/mih_packages/mine_sweeper/components/leaderboard_user_ranking.dart b/mih_ui/lib/mih_packages/mine_sweeper/components/leaderboard_user_ranking.dart index 338189b7..73d82d6d 100644 --- a/mih_ui/lib/mih_packages/mine_sweeper/components/leaderboard_user_ranking.dart +++ b/mih_ui/lib/mih_packages/mine_sweeper/components/leaderboard_user_ranking.dart @@ -1,8 +1,7 @@ import 'package:flutter/material.dart'; import 'package:ken_logger/ken_logger.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:redacted/redacted.dart'; class LeaderboardUserRanking extends StatelessWidget { @@ -54,10 +53,8 @@ class LeaderboardUserRanking extends StatelessWidget { editable: false, fileNameController: null, userSelectedfile: null, - frameColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + frameColor: MihColors.secondary(), + backgroundColor: MihColors.primary(), onChange: () {}, ), ], @@ -67,16 +64,14 @@ class LeaderboardUserRanking extends StatelessWidget { style: TextStyle( fontSize: 20, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ).redacted(context: context, redact: isLoading), subtitle: Text( "Score: $gameScore\nTime: $gameTime", style: TextStyle( fontSize: 18, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ).redacted(context: context, redact: isLoading), ); diff --git a/mih_ui/lib/mih_packages/mine_sweeper/components/mih_mine_sweeper_start_game_window.dart b/mih_ui/lib/mih_packages/mine_sweeper/components/mih_mine_sweeper_start_game_window.dart index 5e2ed861..730d39a0 100644 --- a/mih_ui/lib/mih_packages/mine_sweeper/components/mih_mine_sweeper_start_game_window.dart +++ b/mih_ui/lib/mih_packages/mine_sweeper/components/mih_mine_sweeper_start_game_window.dart @@ -1,12 +1,7 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_dropdwn_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_mine_sweeper_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:provider/provider.dart'; class MihMineSweeperStartGameWindow extends StatefulWidget { @@ -132,9 +127,7 @@ class _MihMineSweeperStartGameWindowState Text( getModeConfig(), style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -147,16 +140,12 @@ class _MihMineSweeperStartGameWindowState context.pop(); widget.onPressed?.call(); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Start Game", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/mine_sweeper/components/mine_tile.dart b/mih_ui/lib/mih_packages/mine_sweeper/components/mine_tile.dart index d7d00a44..61919b4c 100644 --- a/mih_ui/lib/mih_packages/mine_sweeper/components/mine_tile.dart +++ b/mih_ui/lib/mih_packages/mine_sweeper/components/mine_tile.dart @@ -1,8 +1,6 @@ import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_packages/mine_sweeper/components/board_square.dart'; class MineTile extends StatelessWidget { @@ -21,9 +19,7 @@ class MineTile extends StatelessWidget { if (square.isFlagged) { return Icon( Icons.flag, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark", - ), + color: MihColors.red(), ); } @@ -56,33 +52,23 @@ class MineTile extends StatelessWidget { // Choose colors based on standard Minesweeper appearance switch (bombsAround) { case 1: - return MihColors.getBluishPurpleColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark", - ); + return MihColors.bluishPurple(); // return Colors.blue; case 2: - return MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark", - ); + return MihColors.green(); // return Colors.green; case 3: - return MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark", - ); + return MihColors.red(); // return Colors.red; case 4: - return MihColors.getPurpleColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark", - ); + return MihColors.purple(); // return Colors.purple; case 5: - return MihColors.getOrangeColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark", - ); + return MihColors.orange(); // return Colors.brown; default: - // return MihColors.getBluishPurpleColor( - // MzansiInnovationHub.of(context)!.theme.mode == "Dark", + // return MihColors.bluishPurple( + // , // ); return Colors.black; } @@ -95,13 +81,7 @@ class MineTile extends StatelessWidget { child: MihButton( onPressed: onTap, onLongPressed: onLongPress, - buttonColor: square.isOpened - ? MihColors.getGreyColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark", - ) - : MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark", - ), + buttonColor: square.isOpened ? MihColors.grey() : MihColors.secondary(), width: 50, height: 50, borderRadius: 3, diff --git a/mih_ui/lib/mih_packages/mine_sweeper/mih_mine_sweeper.dart b/mih_ui/lib/mih_packages/mine_sweeper/mih_mine_sweeper.dart index c259798c..b9314ee3 100644 --- a/mih_ui/lib/mih_packages/mine_sweeper/mih_mine_sweeper.dart +++ b/mih_ui/lib/mih_packages/mine_sweeper/mih_mine_sweeper.dart @@ -1,10 +1,7 @@ import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_banner_ad_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_mine_sweeper_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; @@ -70,11 +67,11 @@ class _MihMineSweeperState extends State { ); } return MihPackage( - appActionButton: getAction(), - appTools: getTools(), - appToolTitles: getToolTitle(), - appBody: getToolBody(), - selectedbodyIndex: context.watch().toolIndex, + packageActionButton: getAction(), + packageTools: getTools(), + packageToolTitles: getToolTitle(), + packageToolBodies: getToolBody(), + selectedBodyIndex: context.watch().toolIndex, onIndexChange: (newIndex) { context.read().setToolIndex(newIndex); }, @@ -116,7 +113,7 @@ class _MihMineSweeperState extends State { }; return MihPackageTools( tools: temp, - selcetedIndex: context.watch().toolIndex, + selectedIndex: context.watch().toolIndex, ); } diff --git a/mih_ui/lib/mih_packages/mine_sweeper/package_tiles/mih_mine_sweeper_tile.dart b/mih_ui/lib/mih_packages/mine_sweeper/package_tiles/mih_mine_sweeper_tile.dart index 7171697d..366a650a 100644 --- a/mih_ui/lib/mih_packages/mine_sweeper/package_tiles/mih_mine_sweeper_tile.dart +++ b/mih_ui/lib/mih_packages/mine_sweeper/package_tiles/mih_mine_sweeper_tile.dart @@ -1,9 +1,6 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tile.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; class MihMineSweeperTile extends StatefulWidget { final double packageSize; @@ -25,16 +22,14 @@ class _MihMineSweeperTileState extends State { "mihMinesweeper", ); }, - appName: "Minesweeper", - appIcon: Icon( + packageName: "Minesweeper", + packageIcon: Icon( MihIcons.mineSweeper, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), // size: widget.packageSize, ), iconSize: widget.packageSize, - textColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + textColor: MihColors.secondary(), ); } } diff --git a/mih_ui/lib/mih_packages/mine_sweeper/package_tools/mih_mine_sweeper_leader_board.dart b/mih_ui/lib/mih_packages/mine_sweeper/package_tools/mih_mine_sweeper_leader_board.dart index d2865b2a..920f2768 100644 --- a/mih_ui/lib/mih_packages/mine_sweeper/package_tools/mih_mine_sweeper_leader_board.dart +++ b/mih_ui/lib/mih_packages/mine_sweeper/package_tools/mih_mine_sweeper_leader_board.dart @@ -1,13 +1,8 @@ import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:ken_logger/ken_logger.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_dropdwn_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_mine_sweeper_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_packages/mine_sweeper/builders/build_minesweeper_leaderboard_list.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_minesweeper_services.dart'; @@ -74,6 +69,7 @@ class _MihMineSweeperLeaderBoardState extends State { refreshLeaderBoard(mineSweeperProvider, filterController.text); }, child: MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(width), ), @@ -136,9 +132,7 @@ class _MihMineSweeperLeaderBoardState extends State { Icon( MihIcons.mineSweeper, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( @@ -148,9 +142,7 @@ class _MihMineSweeperLeaderBoardState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), const SizedBox(height: 25), @@ -161,11 +153,7 @@ class _MihMineSweeperLeaderBoardState extends State { style: TextStyle( fontSize: 20, fontWeight: FontWeight.normal, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.secondary(), ), children: [ TextSpan(text: "Press "), @@ -174,11 +162,7 @@ class _MihMineSweeperLeaderBoardState extends State { child: Icon( FontAwesomeIcons.bomb, size: 20, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.secondary(), ), ), TextSpan(text: " and start a new game"), diff --git a/mih_ui/lib/mih_packages/mine_sweeper/package_tools/mine_sweeper_game.dart b/mih_ui/lib/mih_packages/mine_sweeper/package_tools/mine_sweeper_game.dart index 78ea28b9..0d785f14 100644 --- a/mih_ui/lib/mih_packages/mine_sweeper/package_tools/mine_sweeper_game.dart +++ b/mih_ui/lib/mih_packages/mine_sweeper/package_tools/mine_sweeper_game.dart @@ -6,18 +6,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_banner_ad.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_floating_menu.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_mine_sweeper_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_packages/mine_sweeper/components/board_square.dart'; import 'package:mzansi_innovation_hub/mih_packages/mine_sweeper/components/mih_mine_sweeper_start_game_window.dart'; import 'package:mzansi_innovation_hub/mih_packages/mine_sweeper/components/mine_tile.dart'; @@ -317,21 +309,13 @@ class _MineSweeperGameState extends State { String mode = mihMineSweeperProvider.difficulty; switch (mode) { case "Very Easy": - return MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark", - ); + return MihColors.green(); case "Easy": - return MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark", - ); + return MihColors.green(); case "Intermediate": - return MihColors.getOrangeColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark", - ); + return MihColors.orange(); case "Hard": - return MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark", - ); + return MihColors.red(); default: return null; } @@ -346,15 +330,13 @@ class _MineSweeperGameState extends State { fullscreen: false, windowTitle: null, onWindowTapClose: null, - backgroundColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + backgroundColor: MihColors.red(), windowBody: Column( children: [ const SizedBox(height: 10), Icon( FontAwesomeIcons.bomb, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), size: 125, ), const SizedBox(height: 10), @@ -362,8 +344,7 @@ class _MineSweeperGameState extends State { "Better Luck Next Time", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -374,8 +355,7 @@ class _MineSweeperGameState extends State { "Your lost this game of MIH Minesweeper!!!", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -387,8 +367,7 @@ class _MineSweeperGameState extends State { textAlign: TextAlign.center, style: TextStyle( fontSize: 18, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), const SizedBox(height: 20), @@ -404,15 +383,12 @@ class _MineSweeperGameState extends State { context.pop(); showStartGameWindow(mihMineSweeperProvider); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), width: 300, child: Text( "New Game", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -422,15 +398,12 @@ class _MineSweeperGameState extends State { onPressed: () { context.pop(); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), width: 300, child: Text( "View Board", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -441,15 +414,12 @@ class _MineSweeperGameState extends State { context.pop(); mihMineSweeperProvider.setToolIndex(1); }, - buttonColor: MihColors.getGoldColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.gold(), width: 300, child: Text( "Leader Board", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -473,15 +443,13 @@ class _MineSweeperGameState extends State { fullscreen: false, windowTitle: null, onWindowTapClose: null, - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), windowBody: Column( children: [ const SizedBox(height: 10), Icon( Icons.celebration, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), size: 150, ), const SizedBox(height: 10), @@ -489,8 +457,7 @@ class _MineSweeperGameState extends State { "Congratulations", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -501,8 +468,7 @@ class _MineSweeperGameState extends State { textAlign: TextAlign.center, style: TextStyle( fontSize: 20, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), ), const SizedBox(height: 10), @@ -510,8 +476,7 @@ class _MineSweeperGameState extends State { "Time Taken: ${_formatTime().replaceAll("00:", "")}", style: TextStyle( fontSize: 20, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), ), const SizedBox(height: 10), @@ -519,8 +484,7 @@ class _MineSweeperGameState extends State { "Score: ${calculateGameScore(mihMineSweeperProvider)}", style: TextStyle( fontSize: 20, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), ), const SizedBox(height: 20), @@ -536,15 +500,12 @@ class _MineSweeperGameState extends State { context.pop(); showStartGameWindow(mihMineSweeperProvider); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), width: 300, child: Text( "New Game", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -554,15 +515,12 @@ class _MineSweeperGameState extends State { onPressed: () { context.pop(); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), width: 300, child: Text( "View Board", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -574,15 +532,12 @@ class _MineSweeperGameState extends State { context.pop(); mihMineSweeperProvider.setToolIndex(1); }, - buttonColor: MihColors.getGoldColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.gold(), width: 300, child: Text( "Leader Board", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -612,6 +567,7 @@ class _MineSweeperGameState extends State { @override Widget build(BuildContext context) { return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(), ); @@ -642,11 +598,7 @@ class _MineSweeperGameState extends State { Icon( MihIcons.mineSweeper, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( @@ -656,11 +608,7 @@ class _MineSweeperGameState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.secondary(), ), ), const SizedBox(height: 25), @@ -671,11 +619,7 @@ class _MineSweeperGameState extends State { style: TextStyle( fontSize: 20, fontWeight: FontWeight.normal, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.secondary(), ), children: [ TextSpan(text: "Press "), @@ -685,11 +629,7 @@ class _MineSweeperGameState extends State { child: Icon( Icons.menu, size: 20, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.secondary(), ), ), TextSpan( @@ -803,23 +743,15 @@ class _MineSweeperGameState extends State { SpeedDialChild( child: Icon( Icons.rule_rounded, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), label: "Learn how to play", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + backgroundColor: MihColors.green(), onTap: () { mihMineSweeperProvider.setToolIndex(3); }, @@ -827,23 +759,15 @@ class _MineSweeperGameState extends State { SpeedDialChild( child: Icon( Icons.add, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), label: "Start New Game", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + backgroundColor: MihColors.green(), onTap: () { showStartGameWindow(mihMineSweeperProvider); }, diff --git a/mih_ui/lib/mih_packages/mine_sweeper/package_tools/mine_sweeper_quick_start_guide.dart b/mih_ui/lib/mih_packages/mine_sweeper/package_tools/mine_sweeper_quick_start_guide.dart index 5dcd790b..54d24661 100644 --- a/mih_ui/lib/mih_packages/mine_sweeper/package_tools/mine_sweeper_quick_start_guide.dart +++ b/mih_ui/lib/mih_packages/mine_sweeper/package_tools/mine_sweeper_quick_start_guide.dart @@ -1,8 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; class MineSweeperQuickStartGuide extends StatefulWidget { const MineSweeperQuickStartGuide({super.key}); @@ -21,8 +18,7 @@ class _MineSweeperQuickStartGuideState Widget sectionOne() { return Container( decoration: BoxDecoration( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode != "Darl"), + color: MihColors.secondary(), borderRadius: BorderRadius.circular(15), ), child: Padding( @@ -36,8 +32,7 @@ class _MineSweeperQuickStartGuideState style: TextStyle( fontSize: titleSize, fontWeight: FontWeight.bold, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), ), const SizedBox(height: 8), @@ -48,9 +43,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: 'Quick Tap (or Click): This is the Dig action.', style: TextStyle( - color: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode != - "Dark"), + color: MihColors.green(), fontWeight: FontWeight.bold, fontSize: subtitleSize, ), @@ -69,9 +62,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: '• Goal:', style: TextStyle( - color: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode != - "Dark"), + color: MihColors.green(), fontWeight: FontWeight.bold, fontSize: pointsSize, ), @@ -79,9 +70,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: ' To uncover a square and see a number clue.', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.normal, fontSize: pointsSize, ), @@ -102,9 +91,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: '• Risk:', style: TextStyle( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != - "Dark"), + color: MihColors.red(), fontWeight: FontWeight.bold, fontSize: pointsSize, ), @@ -112,9 +99,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: ' If you click a mine, the game ends!', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.normal, fontSize: pointsSize, ), @@ -133,9 +118,7 @@ class _MineSweeperQuickStartGuideState text: 'Tap and Hold (or Long Press): This is the Flag action (🚩).', style: TextStyle( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != - "Dark"), + color: MihColors.red(), fontWeight: FontWeight.bold, fontSize: subtitleSize, ), @@ -154,9 +137,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: '• Goal:', style: TextStyle( - color: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode != - "Dark"), + color: MihColors.green(), fontWeight: FontWeight.bold, fontSize: pointsSize, ), @@ -164,9 +145,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: ' To safely mark a square that you are', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.normal, fontSize: pointsSize, ), @@ -174,9 +153,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: ' certain', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, fontSize: pointsSize, ), @@ -184,9 +161,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: ' is a mine.', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.normal, fontSize: pointsSize, ), @@ -207,9 +182,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: '• Risk:', style: TextStyle( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != - "Dark"), + color: MihColors.red(), fontWeight: FontWeight.bold, fontSize: pointsSize, ), @@ -218,9 +191,7 @@ class _MineSweeperQuickStartGuideState text: ' Accidental placement of flags will cause confusion.', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.normal, fontSize: pointsSize, ), @@ -241,9 +212,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: '• Benefit:', style: TextStyle( - color: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode != - "Dark"), + color: MihColors.green(), fontWeight: FontWeight.bold, fontSize: pointsSize, ), @@ -252,9 +221,7 @@ class _MineSweeperQuickStartGuideState text: ' You cannot accidentally click a square that is flagged.', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.normal, fontSize: pointsSize, ), @@ -273,8 +240,7 @@ class _MineSweeperQuickStartGuideState Widget sectionTwo() { return Container( decoration: BoxDecoration( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode != "Darl"), + color: MihColors.secondary(), borderRadius: BorderRadius.circular(15), ), child: Padding( @@ -288,8 +254,7 @@ class _MineSweeperQuickStartGuideState style: TextStyle( fontSize: titleSize, fontWeight: FontWeight.bold, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), ), const SizedBox(height: 8), @@ -301,9 +266,7 @@ class _MineSweeperQuickStartGuideState text: 'The number tells you exactly how many mines are touching that square (including sides and corners).', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.normal, fontSize: subtitleSize, ), @@ -322,9 +285,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: "• If you see a Blank Space (a '0'):", style: TextStyle( - color: MihColors.getOrangeColor( - MzansiInnovationHub.of(context)!.theme.mode != - "Dark"), + color: MihColors.orange(), fontWeight: FontWeight.bold, fontSize: pointsSize, ), @@ -332,9 +293,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: " Zero (0) ", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, fontSize: pointsSize, ), @@ -343,9 +302,7 @@ class _MineSweeperQuickStartGuideState text: ' mines are touching it. All surrounding squares are safe, and the game will open them for you automatically.', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.normal, fontSize: pointsSize, ), @@ -366,9 +323,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: "• If you see a '1':", style: TextStyle( - color: MihColors.getOrangeColor( - MzansiInnovationHub.of(context)!.theme.mode != - "Dark"), + color: MihColors.orange(), fontWeight: FontWeight.bold, fontSize: pointsSize, ), @@ -376,9 +331,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: ' Only ', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.normal, fontSize: pointsSize, ), @@ -386,9 +339,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: 'one', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, fontSize: pointsSize, ), @@ -397,9 +348,7 @@ class _MineSweeperQuickStartGuideState text: ' mine is touching this square. You must find and flag that single mine.', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.normal, fontSize: pointsSize, ), @@ -420,9 +369,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: "• If you see a '3':", style: TextStyle( - color: MihColors.getOrangeColor( - MzansiInnovationHub.of(context)!.theme.mode != - "Dark"), + color: MihColors.orange(), fontWeight: FontWeight.bold, fontSize: pointsSize, ), @@ -430,9 +377,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: " Three ", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, fontSize: pointsSize, ), @@ -441,9 +386,7 @@ class _MineSweeperQuickStartGuideState text: 'mines are touching this square. You must find and flag all three.', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.normal, fontSize: pointsSize, ), @@ -462,8 +405,7 @@ class _MineSweeperQuickStartGuideState Widget sectionThree() { return Container( decoration: BoxDecoration( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode != "Darl"), + color: MihColors.secondary(), borderRadius: BorderRadius.circular(15), ), child: Padding( @@ -477,8 +419,7 @@ class _MineSweeperQuickStartGuideState style: TextStyle( fontSize: titleSize, fontWeight: FontWeight.bold, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), ), const SizedBox(height: 8), @@ -490,9 +431,7 @@ class _MineSweeperQuickStartGuideState text: 'The game is won by uncovering every single safe square and correctly flagging all the mines. Use this two-step loop to clear the board:', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.normal, fontSize: subtitleSize, ), @@ -507,9 +446,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: 'A. Find the Mines (Where to Flag 🚩)', style: TextStyle( - color: MihColors.getPurpleColor( - MzansiInnovationHub.of(context)!.theme.mode != - "Dark"), + color: MihColors.purple(), fontWeight: FontWeight.bold, fontSize: subtitleSize, ), @@ -528,9 +465,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: '• Goal:', style: TextStyle( - color: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode != - "Dark"), + color: MihColors.green(), fontWeight: FontWeight.bold, fontSize: pointsSize, ), @@ -539,9 +474,7 @@ class _MineSweeperQuickStartGuideState text: ' Look for a number that only has one choice for a mine. e.g. If a \'1\' is touching only one hidden square, that hidden square', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.normal, fontSize: pointsSize, ), @@ -549,9 +482,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: ' must ', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, fontSize: pointsSize, ), @@ -559,9 +490,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: 'be the mine.', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.normal, fontSize: pointsSize, ), @@ -582,9 +511,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: '• Action:', style: TextStyle( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != - "Dark"), + color: MihColors.red(), fontWeight: FontWeight.bold, fontSize: pointsSize, ), @@ -592,9 +519,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: ' Tap and Hold to place a', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.normal, fontSize: pointsSize, ), @@ -602,9 +527,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: ' Flag ', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, fontSize: pointsSize, ), @@ -612,9 +535,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: 'on the square you are sure is a mine.', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.normal, fontSize: pointsSize, ), @@ -632,9 +553,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: 'B. Find the Safe Squares (Where to Dig)', style: TextStyle( - color: MihColors.getPurpleColor( - MzansiInnovationHub.of(context)!.theme.mode != - "Dark"), + color: MihColors.purple(), fontWeight: FontWeight.bold, fontSize: subtitleSize, ), @@ -653,9 +572,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: '• Goal:', style: TextStyle( - color: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode != - "Dark"), + color: MihColors.green(), fontWeight: FontWeight.bold, fontSize: pointsSize, ), @@ -664,9 +581,7 @@ class _MineSweeperQuickStartGuideState text: ' Look for a number that has been \'satisfied\' by your flags. e.g. You see a \'2\' and you have already placed two 🚩 flags touching it. The \'2\' is satisfied.', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.normal, fontSize: pointsSize, ), @@ -687,9 +602,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: '• Action:', style: TextStyle( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != - "Dark"), + color: MihColors.red(), fontWeight: FontWeight.bold, fontSize: pointsSize, ), @@ -698,9 +611,7 @@ class _MineSweeperQuickStartGuideState text: ' Quick Tap any of the remaining hidden squares touching that \'satisfied\' number. They', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.normal, fontSize: pointsSize, ), @@ -708,9 +619,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: ' must be safe ', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, fontSize: pointsSize, ), @@ -719,9 +628,7 @@ class _MineSweeperQuickStartGuideState text: 'because the mine requirement has already been met.', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.normal, fontSize: pointsSize, ), @@ -740,8 +647,7 @@ class _MineSweeperQuickStartGuideState Widget sectionFour() { return Container( decoration: BoxDecoration( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode != "Darl"), + color: MihColors.secondary(), borderRadius: BorderRadius.circular(15), ), child: Padding( @@ -755,8 +661,7 @@ class _MineSweeperQuickStartGuideState style: TextStyle( fontSize: titleSize, fontWeight: FontWeight.bold, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), ), const SizedBox(height: 8), @@ -770,9 +675,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: "• Start on the Edges and Corners: ", style: TextStyle( - color: MihColors.getBronze( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.bronze(), fontWeight: FontWeight.bold, fontSize: pointsSize, ), @@ -781,9 +684,7 @@ class _MineSweeperQuickStartGuideState text: 'Numbers on the edge or corner of the board are easier to solve because they have fewer surrounding squares to check.', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.normal, fontSize: pointsSize, ), @@ -804,9 +705,7 @@ class _MineSweeperQuickStartGuideState TextSpan( text: "• Don't Guess: ", style: TextStyle( - color: MihColors.getBronze( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.bronze(), fontWeight: FontWeight.bold, fontSize: pointsSize, ), @@ -815,9 +714,7 @@ class _MineSweeperQuickStartGuideState text: 'If you are down to two squares and either one could be the mine, look somewhere else on the board for a guaranteed, safe move.', style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.normal, fontSize: pointsSize, ), @@ -838,6 +735,7 @@ class _MineSweeperQuickStartGuideState final Size size = MediaQuery.sizeOf(context); final double width = size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(width), ); diff --git a/mih_ui/lib/mih_packages/mine_sweeper/package_tools/my_score_board.dart b/mih_ui/lib/mih_packages/mine_sweeper/package_tools/my_score_board.dart index 25433358..c0adf641 100644 --- a/mih_ui/lib/mih_packages/mine_sweeper/package_tools/my_score_board.dart +++ b/mih_ui/lib/mih_packages/mine_sweeper/package_tools/my_score_board.dart @@ -1,15 +1,10 @@ import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:ken_logger/ken_logger.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_dropdwn_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_mine_sweeper_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_packages/mine_sweeper/builders/build_my_scoreboard_list.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_minesweeper_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; @@ -64,6 +59,7 @@ class _MihMineSweeperLeaderBoardState extends State { refreshLeaderBoard(mineSweeperProvider, filterController.text); }, child: MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(width), ), @@ -91,10 +87,8 @@ class _MihMineSweeperLeaderBoardState extends State { editable: false, fileNameController: null, userSelectedfile: null, - frameColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + frameColor: MihColors.secondary(), + backgroundColor: MihColors.primary(), onChange: (selectedImage) {}, key: ValueKey(profileProvider.userProfilePicUrl), ), @@ -142,9 +136,7 @@ class _MihMineSweeperLeaderBoardState extends State { Icon( MihIcons.mineSweeper, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( @@ -154,9 +146,7 @@ class _MihMineSweeperLeaderBoardState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), const SizedBox(height: 25), @@ -167,11 +157,7 @@ class _MihMineSweeperLeaderBoardState extends State { style: TextStyle( fontSize: 20, fontWeight: FontWeight.normal, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.secondary(), ), children: [ TextSpan(text: "Press "), @@ -180,11 +166,7 @@ class _MihMineSweeperLeaderBoardState extends State { child: Icon( FontAwesomeIcons.bomb, size: 20, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.secondary(), ), ), TextSpan(text: " and start a new game"), diff --git a/mih_ui/lib/mih_packages/mzansi_ai/mzansi_ai.dart b/mih_ui/lib/mih_packages/mzansi_ai/mzansi_ai.dart index 9d7de91d..ac3386a3 100644 --- a/mih_ui/lib/mih_packages/mzansi_ai/mzansi_ai.dart +++ b/mih_ui/lib/mih_packages/mzansi_ai/mzansi_ai.dart @@ -1,8 +1,5 @@ import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_ai_provider.dart'; import 'package:flutter/material.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; @@ -58,11 +55,11 @@ class _MzansiAiState extends State { ); } return MihPackage( - appActionButton: getAction(), - appTools: getTools(), - appBody: getToolBody(), - appToolTitles: getToolTitle(), - selectedbodyIndex: context.watch().toolIndex, + packageActionButton: getAction(), + packageTools: getTools(), + packageToolBodies: getToolBody(), + packageToolTitles: getToolTitle(), + selectedBodyIndex: context.watch().toolIndex, onIndexChange: (newValue) { context.read().setToolIndex(newValue); }, @@ -92,7 +89,7 @@ class _MzansiAiState extends State { }; return MihPackageTools( tools: temp, - selcetedIndex: context.watch().toolIndex, + selectedIndex: context.watch().toolIndex, ); } diff --git a/mih_ui/lib/mih_packages/mzansi_ai/package_tiles/mzansi_ai_tile.dart b/mih_ui/lib/mih_packages/mzansi_ai/package_tiles/mzansi_ai_tile.dart index 47c94016..858a756c 100644 --- a/mih_ui/lib/mih_packages/mzansi_ai/package_tiles/mzansi_ai_tile.dart +++ b/mih_ui/lib/mih_packages/mzansi_ai/package_tiles/mzansi_ai_tile.dart @@ -1,9 +1,6 @@ import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tile.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; class MzansiAiTile extends StatefulWidget { final double packageSize; @@ -33,16 +30,14 @@ class _MzansiAiTileState extends State { // ), // ); }, - appName: "Mzansi AI", - appIcon: Icon( + packageName: "Mzansi AI", + packageIcon: Icon( MihIcons.mzansiAi, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), // size: widget.packageSize, ), iconSize: widget.packageSize, - textColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + textColor: MihColors.secondary(), ); } } diff --git a/mih_ui/lib/mih_packages/mzansi_ai/package_tools/mih_ai_chat.dart b/mih_ui/lib/mih_packages/mzansi_ai/package_tools/mih_ai_chat.dart index 7cb268fc..16d71fb3 100644 --- a/mih_ui/lib/mih_packages/mzansi_ai/package_tools/mih_ai_chat.dart +++ b/mih_ui/lib/mih_packages/mzansi_ai/package_tools/mih_ai_chat.dart @@ -8,12 +8,9 @@ import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:flutter_tts/flutter_tts.dart'; import 'package:intl/intl.dart'; import 'package:ken_logger/ken_logger.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_floating_menu.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_ai_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:provider/provider.dart'; @@ -40,8 +37,7 @@ class _MihAiChatState extends State with WidgetsBindingObserver { Icon( MihIcons.mzansiAi, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( @@ -51,8 +47,7 @@ class _MihAiChatState extends State with WidgetsBindingObserver { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), const SizedBox(height: 25), @@ -63,8 +58,7 @@ class _MihAiChatState extends State with WidgetsBindingObserver { style: TextStyle( fontSize: 20, fontWeight: FontWeight.normal, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), children: [ TextSpan( @@ -81,8 +75,7 @@ class _MihAiChatState extends State with WidgetsBindingObserver { style: TextStyle( fontSize: 20, fontWeight: FontWeight.normal, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), children: [ TextSpan(text: "Press "), @@ -91,9 +84,7 @@ class _MihAiChatState extends State with WidgetsBindingObserver { child: Icon( Icons.menu, size: 20, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), TextSpan(text: " to start a new chat or read last message"), @@ -338,13 +329,13 @@ class _MihAiChatState extends State with WidgetsBindingObserver { // onPressed: () { // saveHistory(profileProvider, aiProvider); // }, - // buttonColor: MihColors.getGreenColor( - // MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // buttonColor: MihColors.green( + // ), // child: Text( // "View History as json", // style: TextStyle( - // color: MihColors.getPrimaryColor( - // MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // color: MihColors.primary( + // ), // ), // ), // ), @@ -363,16 +354,11 @@ class _MihAiChatState extends State with WidgetsBindingObserver { stopTTS(aiProvider); } }, - buttonColor: !aiProvider.ttsOn - ? MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark") - : MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: + !aiProvider.ttsOn ? MihColors.green() : MihColors.red(), child: Icon( !aiProvider.ttsOn ? Icons.volume_up : Icons.volume_off, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), ), ), @@ -385,21 +371,15 @@ class _MihAiChatState extends State with WidgetsBindingObserver { SpeedDialChild( child: Icon( Icons.refresh, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), label: "New Chat", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { resetChat(aiProvider); }, diff --git a/mih_ui/lib/mih_packages/mzansi_directory/builders/build_business_search_resultsList.dart b/mih_ui/lib/mih_packages/mzansi_directory/builders/build_business_search_resultsList.dart index 0861cf7b..377b2c4a 100644 --- a/mih_ui/lib/mih_packages/mzansi_directory/builders/build_business_search_resultsList.dart +++ b/mih_ui/lib/mih_packages/mzansi_directory/builders/build_business_search_resultsList.dart @@ -1,11 +1,10 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_business_profile_preview.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_directory_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:provider/provider.dart'; class BuildBusinessSearchResultsList extends StatefulWidget { @@ -33,14 +32,12 @@ class _BuildBusinessSearchResultsListState itemCount: widget.businessList.length, separatorBuilder: (BuildContext context, index) { return Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ); }, itemBuilder: (context, index) { return Material( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), child: InkWell( onTap: () { directoryProvider.setSelectedBusiness( @@ -50,9 +47,7 @@ class _BuildBusinessSearchResultsListState 'businessProfileView', ); }, - splashColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark") - .withOpacity(0.2), + splashColor: MihColors.secondary().withOpacity(0.2), borderRadius: BorderRadius.circular(15), child: Padding( padding: EdgeInsetsGeometry.symmetric( diff --git a/mih_ui/lib/mih_packages/mzansi_directory/builders/build_favourite_businesses_list.dart b/mih_ui/lib/mih_packages/mzansi_directory/builders/build_favourite_businesses_list.dart index 74fa0c35..0ddeca0a 100644 --- a/mih_ui/lib/mih_packages/mzansi_directory/builders/build_favourite_businesses_list.dart +++ b/mih_ui/lib/mih_packages/mzansi_directory/builders/build_favourite_businesses_list.dart @@ -1,11 +1,10 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_business_profile_preview.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_directory_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:provider/provider.dart'; class BuildFavouriteBusinessesList extends StatefulWidget { @@ -44,8 +43,7 @@ class _BuildFavouriteBusinessesListState return const SizedBox(); // Or a placeholder if a business couldn't be loaded } return Material( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), child: InkWell( onTap: () { directoryProvider.setSelectedBusiness( @@ -55,9 +53,7 @@ class _BuildFavouriteBusinessesListState 'businessProfileView', ); }, - splashColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark") - .withOpacity(0.2), + splashColor: MihColors.secondary().withOpacity(0.2), borderRadius: BorderRadius.circular(15), child: Padding( padding: EdgeInsets.symmetric( diff --git a/mih_ui/lib/mih_packages/mzansi_directory/builders/build_user_search_results_list.dart b/mih_ui/lib/mih_packages/mzansi_directory/builders/build_user_search_results_list.dart index 2d50b15e..451e5c3b 100644 --- a/mih_ui/lib/mih_packages/mzansi_directory/builders/build_user_search_results_list.dart +++ b/mih_ui/lib/mih_packages/mzansi_directory/builders/build_user_search_results_list.dart @@ -1,11 +1,10 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_personal_profile_preview.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_directory_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:provider/provider.dart'; class BuildUserSearchResultsList extends StatefulWidget { @@ -33,14 +32,12 @@ class _BuildUserSearchResultsListState itemCount: widget.userList.length, separatorBuilder: (BuildContext context, index) { return Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ); }, itemBuilder: (context, index) { return Material( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), child: InkWell( onTap: () { directoryProvider.setSelectedUser( @@ -49,9 +46,7 @@ class _BuildUserSearchResultsListState 'mzansiProfileView', ); }, - splashColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark") - .withOpacity(0.2), + splashColor: MihColors.secondary().withOpacity(0.2), borderRadius: BorderRadius.circular(15), child: Padding( padding: EdgeInsetsGeometry.symmetric( diff --git a/mih_ui/lib/mih_packages/mzansi_directory/mzansi_directory.dart b/mih_ui/lib/mih_packages/mzansi_directory/mzansi_directory.dart index 207eb19b..0618248c 100644 --- a/mih_ui/lib/mih_packages/mzansi_directory/mzansi_directory.dart +++ b/mih_ui/lib/mih_packages/mzansi_directory/mzansi_directory.dart @@ -1,10 +1,7 @@ import 'package:flutter/material.dart'; import 'package:geolocator/geolocator.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_directory_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_directory/package_tools/mih_favourite_businesses.dart'; @@ -74,11 +71,11 @@ class _MzansiDirectoryState extends State { ); } return MihPackage( - appActionButton: getAction(), - appTools: getTools(), - appBody: getToolBody(), - appToolTitles: getToolTitle(), - selectedbodyIndex: directoryProvider.toolIndex, + packageActionButton: getAction(), + packageTools: getTools(), + packageToolBodies: getToolBody(), + packageToolTitles: getToolTitle(), + selectedBodyIndex: directoryProvider.toolIndex, onIndexChange: (newValue) { directoryProvider.setToolIndex(newValue); }, @@ -121,7 +118,7 @@ class _MzansiDirectoryState extends State { }; return MihPackageTools( tools: temp, - selcetedIndex: context.watch().toolIndex, + selectedIndex: context.watch().toolIndex, ); } diff --git a/mih_ui/lib/mih_packages/mzansi_directory/package_tiles/mzansi_directory_tile.dart b/mih_ui/lib/mih_packages/mzansi_directory/package_tiles/mzansi_directory_tile.dart index aeb5b6f4..ac2e0ad9 100644 --- a/mih_ui/lib/mih_packages/mzansi_directory/package_tiles/mzansi_directory_tile.dart +++ b/mih_ui/lib/mih_packages/mzansi_directory/package_tiles/mzansi_directory_tile.dart @@ -1,9 +1,6 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tile.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; class MzansiDirectoryTile extends StatefulWidget { final double packageSize; @@ -32,16 +29,14 @@ class _MzansiDirectoryTileState extends State { // ), // ); }, - appName: "Mzansi Directory", - appIcon: Icon( + packageName: "Mzansi Directory", + packageIcon: Icon( MihIcons.mzansiDirectory, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), // size: widget.packageSize, ), iconSize: widget.packageSize, - textColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + textColor: MihColors.secondary(), ); } } diff --git a/mih_ui/lib/mih_packages/mzansi_directory/package_tools/mih_contacts.dart b/mih_ui/lib/mih_packages/mzansi_directory/package_tools/mih_contacts.dart index 4814d109..07846953 100644 --- a/mih_ui/lib/mih_packages/mzansi_directory/package_tools/mih_contacts.dart +++ b/mih_ui/lib/mih_packages/mzansi_directory/package_tools/mih_contacts.dart @@ -1,9 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_search_bar.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; class MihContacts extends StatefulWidget { const MihContacts({super.key}); @@ -21,6 +17,7 @@ class _MihContactsState extends State { final Size size = MediaQuery.sizeOf(context); final double width = size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(width), ); @@ -37,10 +34,8 @@ class _MihContactsState extends State { controller: contactSearchController, hintText: "Search Contacts", prefixIcon: Icons.search, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - hintColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + hintColor: MihColors.primary(), onPrefixIconTap: () {}, searchFocusNode: searchFocusNode, ), diff --git a/mih_ui/lib/mih_packages/mzansi_directory/package_tools/mih_favourite_businesses.dart b/mih_ui/lib/mih_packages/mzansi_directory/package_tools/mih_favourite_businesses.dart index cff989f5..f93195a0 100644 --- a/mih_ui/lib/mih_packages/mzansi_directory/package_tools/mih_favourite_businesses.dart +++ b/mih_ui/lib/mih_packages/mzansi_directory/package_tools/mih_favourite_businesses.dart @@ -1,13 +1,8 @@ import 'dart:async'; import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_search_bar.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_directory_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_directory/builders/build_favourite_businesses_list.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_business_details_services.dart'; @@ -107,6 +102,7 @@ class _MihFavouriteBusinessesState extends State { final Size size = MediaQuery.sizeOf(context); final double width = size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(width), ); @@ -130,10 +126,8 @@ class _MihFavouriteBusinessesState extends State { controller: businessSearchController, hintText: "Search Businesses", prefixIcon: Icons.search, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - hintColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + hintColor: MihColors.primary(), onPrefixIconTap: () {}, searchFocusNode: searchFocusNode, ), @@ -151,9 +145,7 @@ class _MihFavouriteBusinessesState extends State { Icon( MihIcons.iDontKnow, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( @@ -163,9 +155,7 @@ class _MihFavouriteBusinessesState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ], @@ -182,9 +172,7 @@ class _MihFavouriteBusinessesState extends State { Icon( MihIcons.businessProfile, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( @@ -194,11 +182,7 @@ class _MihFavouriteBusinessesState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.secondary(), ), ), const SizedBox(height: 25), @@ -209,11 +193,7 @@ class _MihFavouriteBusinessesState extends State { style: TextStyle( fontSize: 20, fontWeight: FontWeight.normal, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.secondary(), ), children: [ TextSpan(text: "Use the mzansi search"), diff --git a/mih_ui/lib/mih_packages/mzansi_directory/package_tools/mih_search_mzansi.dart b/mih_ui/lib/mih_packages/mzansi_directory/package_tools/mih_search_mzansi.dart index 2fa17e2b..e87509f5 100644 --- a/mih_ui/lib/mih_packages/mzansi_directory/package_tools/mih_search_mzansi.dart +++ b/mih_ui/lib/mih_packages/mzansi_directory/package_tools/mih_search_mzansi.dart @@ -1,18 +1,10 @@ import 'package:flutter/material.dart'; import 'package:ken_logger/ken_logger.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_dropdwn_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_search_bar.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_directory_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_directory/builders/build_business_search_resultsList.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_directory/builders/build_user_search_results_list.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; @@ -151,6 +143,7 @@ class _MihSearchMzansiState extends State { final Size size = MediaQuery.sizeOf(context); final double width = size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(width), ); @@ -190,18 +183,12 @@ class _MihSearchMzansiState extends State { icon: Icon( Icons.swap_horiz_rounded, size: 35, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), ), ], - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - hintColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + hintColor: MihColors.primary(), onPrefixIconTap: () { searchPressed(profileProvider, directoryProvider); }, @@ -231,9 +218,7 @@ class _MihSearchMzansiState extends State { ? Icons.filter_list_rounded : Icons.filter_list_off_rounded, size: 35, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), @@ -280,18 +265,12 @@ class _MihSearchMzansiState extends State { ); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), elevation: 10, child: Text( "Search", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -337,8 +316,7 @@ class _MihSearchMzansiState extends State { Icon( MihIcons.iDontKnow, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 25), Text( @@ -348,8 +326,7 @@ class _MihSearchMzansiState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), ], @@ -369,8 +346,7 @@ class _MihSearchMzansiState extends State { Icon( MihIcons.businessProfile, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( @@ -380,8 +356,7 @@ class _MihSearchMzansiState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), const SizedBox(height: 25), @@ -392,9 +367,7 @@ class _MihSearchMzansiState extends State { style: TextStyle( fontSize: 20, fontWeight: FontWeight.normal, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), children: [ TextSpan(text: "Press "), @@ -403,9 +376,7 @@ class _MihSearchMzansiState extends State { child: Icon( Icons.swap_horiz_rounded, size: 20, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), TextSpan(text: " to search for people of Mzansi"), @@ -421,9 +392,7 @@ class _MihSearchMzansiState extends State { style: TextStyle( fontSize: 20, fontWeight: FontWeight.normal, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), children: [ TextSpan(text: "Press "), @@ -432,9 +401,7 @@ class _MihSearchMzansiState extends State { child: Icon( Icons.filter_list_rounded, size: 20, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), TextSpan(text: " to filter business types"), @@ -450,10 +417,7 @@ class _MihSearchMzansiState extends State { return Center( child: Text( "Error pulling Patients Data\n/users/search/${directoryProvider.searchTerm}", - style: TextStyle( - fontSize: 25, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark")), + style: TextStyle(fontSize: 25, color: MihColors.red()), textAlign: TextAlign.center, ), ); @@ -485,8 +449,7 @@ class _MihSearchMzansiState extends State { Icon( MihIcons.personalProfile, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( @@ -496,8 +459,7 @@ class _MihSearchMzansiState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), const SizedBox(height: 25), @@ -508,9 +470,7 @@ class _MihSearchMzansiState extends State { style: TextStyle( fontSize: 20, fontWeight: FontWeight.normal, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), children: [ TextSpan(text: "Press "), @@ -519,9 +479,7 @@ class _MihSearchMzansiState extends State { child: Icon( Icons.swap_horiz_rounded, size: 20, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), TextSpan(text: " to search for businesses of Mzansi"), @@ -543,8 +501,7 @@ class _MihSearchMzansiState extends State { Icon( MihIcons.iDontKnow, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( @@ -554,8 +511,7 @@ class _MihSearchMzansiState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), ], @@ -565,10 +521,7 @@ class _MihSearchMzansiState extends State { return Center( child: Text( "Error pulling Patients Data\n/users/search/${directoryProvider.searchTerm}", - style: TextStyle( - fontSize: 25, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark")), + style: TextStyle(fontSize: 25, color: MihColors.red()), textAlign: TextAlign.center, ), ); diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/builders/build_employee_list.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/builders/build_employee_list.dart index b15b6d4f..cdeb207e 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/builders/build_employee_list.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/builders/build_employee_list.dart @@ -1,7 +1,6 @@ -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/business_employee.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/components/mih_edit_employee_details_window.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:flutter/material.dart'; @@ -37,8 +36,7 @@ class _BuildEmployeeListState extends State { return ListView.separated( separatorBuilder: (BuildContext context, index) { return Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ); }, itemCount: mzansiProfileProvider.employeeList!.length, @@ -58,8 +56,7 @@ class _BuildEmployeeListState extends State { subtitle: Text( "${mzansiProfileProvider.employeeList![index].username}\n${mzansiProfileProvider.employeeList![index].email}\nAccess: ${mzansiProfileProvider.employeeList![index].access}", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), onTap: () { diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/builders/build_user_list.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/builders/build_user_list.dart index 73e5ecea..ed1104cc 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/builders/build_user_list.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/builders/build_user_list.dart @@ -1,6 +1,5 @@ -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/components/mih_add_employee_window.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:flutter/material.dart'; @@ -44,8 +43,7 @@ class _BuildUserListState extends State { return ListView.separated( separatorBuilder: (BuildContext context, index) { return Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ); }, itemCount: profileProvider.userSearchResults.length, @@ -61,8 +59,7 @@ class _BuildUserListState extends State { subtitle: Text( "Email: ${hideEmail(profileProvider.userSearchResults[index].email)}", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), onTap: () { diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/busines_profile.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/busines_profile.dart index 36510f89..83dcacf9 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/busines_profile.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/busines_profile.dart @@ -1,9 +1,6 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_details.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_qr_code.dart'; @@ -74,11 +71,11 @@ class _BusinesProfileState extends State { ); } return MihPackage( - appActionButton: getAction(), - appTools: getTools(), - appToolTitles: getToolTitle(), - appBody: getToolBody(), - selectedbodyIndex: mzansiProfileProvider.businessIndex, + packageActionButton: getAction(), + packageTools: getTools(), + packageToolTitles: getToolTitle(), + packageToolBodies: getToolBody(), + selectedBodyIndex: mzansiProfileProvider.businessIndex, onIndexChange: (newIndex) { mzansiProfileProvider.setBusinessIndex(newIndex); }, @@ -129,7 +126,7 @@ class _BusinesProfileState extends State { }; return MihPackageTools( tools: temp, - selcetedIndex: context.watch().businessIndex, + selectedIndex: context.watch().businessIndex, ); } diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_add_bookmark_alert.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_add_bookmark_alert.dart index cee5eb0c..603b399a 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_add_bookmark_alert.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_add_bookmark_alert.dart @@ -1,13 +1,9 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_directory_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_business_details_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart'; @@ -94,15 +90,13 @@ class _MihAddBookmarkAlertState extends State { context.pop(); context.pop(); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), elevation: 10, width: 300, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -122,22 +116,19 @@ class _MihAddBookmarkAlertState extends State { fullscreen: false, windowTitle: null, onWindowTapClose: null, - backgroundColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.secondary(), windowBody: Column( children: [ Icon( Icons.warning_rounded, size: 150, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), Text( "Bookmark Business", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -146,8 +137,7 @@ class _MihAddBookmarkAlertState extends State { Text( "Are you sure you want to save ${widget.business.Name} to your Mzansi Directory?", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 18, ), ), @@ -164,14 +154,11 @@ class _MihAddBookmarkAlertState extends State { onPressed: () async { Navigator.of(context).pop(); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.red(), child: Text( "Cancel", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -182,14 +169,11 @@ class _MihAddBookmarkAlertState extends State { onPressed: () { addBookmark(profileProvider, widget.business.business_id); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), child: Text( "Bookmark Business", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_add_employee_window.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_add_employee_window.dart index b0f7e02d..1190b531 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_add_employee_window.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_add_employee_window.dart @@ -1,14 +1,9 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_dropdwn_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_business_employee_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; @@ -58,15 +53,13 @@ class _MihAddEmployeeWindowState extends State { context.pop(); context.pop(); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), elevation: 10, width: 300, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -120,12 +113,8 @@ class _MihAddEmployeeWindowState extends State { formKey: _formKey, formFields: [ MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: usernameController, multiLineInput: false, requiredText: true, @@ -134,12 +123,8 @@ class _MihAddEmployeeWindowState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: emailController, multiLineInput: false, requiredText: true, @@ -172,16 +157,12 @@ class _MihAddEmployeeWindowState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Add", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_delete_bookmark_alert.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_delete_bookmark_alert.dart index e2c7f100..5ef7e8c5 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_delete_bookmark_alert.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_delete_bookmark_alert.dart @@ -1,12 +1,8 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/bookmarked_business.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_directory_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; @@ -98,15 +94,13 @@ class _MihDeleteBookmarkAlertState extends State { context.pop(); context.pop(); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), elevation: 10, width: 300, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -123,22 +117,19 @@ class _MihDeleteBookmarkAlertState extends State { fullscreen: false, windowTitle: null, onWindowTapClose: null, - backgroundColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.secondary(), windowBody: Column( children: [ Icon( Icons.warning_rounded, size: 150, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), Text( "Remove Bookmark", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -147,8 +138,7 @@ class _MihDeleteBookmarkAlertState extends State { Text( "Are you sure you want to remove ${widget.business.Name} from your Mzansi Directory?", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 18, ), ), @@ -165,13 +155,11 @@ class _MihDeleteBookmarkAlertState extends State { onPressed: () async { Navigator.of(context).pop(); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), child: Text( "Cancel", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -184,13 +172,11 @@ class _MihDeleteBookmarkAlertState extends State { deleteBookmark( widget.bookmarkBusiness!.idbookmarked_businesses); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.red(), child: Text( "Remove Business", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_edit_employee_details_window.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_edit_employee_details_window.dart index fe454a62..3dcc430e 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_edit_employee_details_window.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_edit_employee_details_window.dart @@ -1,15 +1,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_objects/business_employee.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_dropdwn_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_business_employee_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; @@ -87,15 +82,13 @@ class _MihEditEmployeeDetailsWindowState context.pop(); context.pop(); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), elevation: 10, width: 300, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -145,19 +138,15 @@ class _MihEditEmployeeDetailsWindowState SpeedDialChild( child: Icon( Icons.delete, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Delete Employee", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { showDeleteWarning(); }, @@ -177,12 +166,8 @@ class _MihEditEmployeeDetailsWindowState formKey: _formKey, formFields: [ MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: fnameController, multiLineInput: false, requiredText: true, @@ -191,12 +176,8 @@ class _MihEditEmployeeDetailsWindowState ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: lnameController, multiLineInput: false, requiredText: true, @@ -205,12 +186,8 @@ class _MihEditEmployeeDetailsWindowState ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: titleController, multiLineInput: false, requiredText: true, @@ -243,16 +220,12 @@ class _MihEditEmployeeDetailsWindowState MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Update", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_review_business_window.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_review_business_window.dart index 4b1d22cd..2ca4986c 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_review_business_window.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_review_business_window.dart @@ -2,18 +2,12 @@ import 'package:custom_rating_bar/custom_rating_bar.dart'; import 'package:flutter/material.dart'; import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; import 'package:mzansi_innovation_hub/mih_objects/business_review.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_directory_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_business_details_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_directory_services.dart'; @@ -90,13 +84,11 @@ class _MihReviewBusinessWindowState extends State { } }); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), child: Text( "Delete", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -107,13 +99,11 @@ class _MihReviewBusinessWindowState extends State { onPressed: () { context.pop(); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), child: Text( "Cancel", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -126,11 +116,9 @@ class _MihReviewBusinessWindowState extends State { Color getMissionVisionLimitColor(int limit) { if (_counter.value <= limit) { - return MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + return MihColors.secondary(); } else { - return MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + return MihColors.red(); } } @@ -220,15 +208,13 @@ class _MihReviewBusinessWindowState extends State { context.pop(); widget.onSuccessDismissPressed!.call(); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), elevation: 10, width: 300, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -294,21 +280,15 @@ class _MihReviewBusinessWindowState extends State { SpeedDialChild( child: Icon( Icons.delete, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), label: "Delete Review", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { showDeleteReviewAlert(directoryProvider); }, @@ -337,9 +317,7 @@ class _MihReviewBusinessWindowState extends State { "Business Rating", textAlign: TextAlign.left, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 18, fontWeight: FontWeight.bold, ), @@ -354,18 +332,12 @@ class _MihReviewBusinessWindowState extends State { filledIcon: Icons.star, emptyIcon: Icons.star_border, halfFilledIcon: Icons.star_half, - filledColor: MihColors.getYellowColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + filledColor: MihColors.yellow(), // filledColor: MzansiInnovationHub.of(context)! // .theme // .secondaryColor(), - emptyColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - halfFilledColor: MihColors.getYellowColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + emptyColor: MihColors.secondary(), + halfFilledColor: MihColors.yellow(), // MzansiInnovationHub.of(context)! // .theme // .secondaryColor(), @@ -381,15 +353,9 @@ class _MihReviewBusinessWindowState extends State { filledIcon: Icons.star, emptyIcon: Icons.star_border, halfFilledIcon: Icons.star_half, - filledColor: MihColors.getYellowColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - emptyColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - halfFilledColor: MihColors.getYellowColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + filledColor: MihColors.yellow(), + emptyColor: MihColors.secondary(), + halfFilledColor: MihColors.yellow(), isHalfAllowed: true, initialRating: widget.businessReview != null ? double.parse(_reviewScoreController.text) @@ -411,12 +377,8 @@ class _MihReviewBusinessWindowState extends State { visible: widget.readOnly, child: MihTextFormField( // width: 200, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _reviewReviewerController, multiLineInput: false, requiredText: true, @@ -430,12 +392,8 @@ class _MihReviewBusinessWindowState extends State { const SizedBox(height: 10), MihTextFormField( // width: 200, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _reviewTitleController, multiLineInput: false, requiredText: true, @@ -449,12 +407,8 @@ class _MihReviewBusinessWindowState extends State { const SizedBox(height: 10), MihTextFormField( height: 250, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _reviewDescriptionController, multiLineInput: true, requiredText: widget.readOnly, @@ -517,20 +471,14 @@ class _MihReviewBusinessWindowState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( widget.businessReview != null ? "Update Review" : "Add Review", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_update_business_details_window.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_update_business_details_window.dart index 80f294ec..340417e2 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_update_business_details_window.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_update_business_details_window.dart @@ -3,16 +3,10 @@ import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:ken_logger/ken_logger.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_business_details_services.dart'; @@ -98,11 +92,9 @@ class _MihUpdateBusinessDetailsWindowState Color getMissionVisionLimitColor(int limit) { if (_counter.value <= limit) { - return MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + return MihColors.secondary(); } else { - return MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + return MihColors.red(); } } @@ -275,12 +267,8 @@ class _MihUpdateBusinessDetailsWindowState editable: true, fileNameController: fileNameController, userSelectedfile: newSelectedLogoPic, - frameColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + frameColor: MihColors.secondary(), + backgroundColor: MihColors.primary(), onChange: (selectedfile) { setState(() { newSelectedLogoPic = selectedfile; @@ -291,12 +279,8 @@ class _MihUpdateBusinessDetailsWindowState Visibility( visible: false, child: MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: fileNameController, multiLineInput: false, requiredText: true, @@ -306,12 +290,8 @@ class _MihUpdateBusinessDetailsWindowState ), const SizedBox(height: 20), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: nameController, multiLineInput: false, requiredText: true, @@ -322,12 +302,8 @@ class _MihUpdateBusinessDetailsWindowState ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: typeController, multiLineInput: false, requiredText: true, @@ -339,12 +315,8 @@ class _MihUpdateBusinessDetailsWindowState ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: emailController, multiLineInput: false, requiredText: true, @@ -382,30 +354,13 @@ class _MihUpdateBusinessDetailsWindowState initialSelection: countryCodeController.text, showDropDownButton: false, pickerStyle: PickerStyle.bottomSheet, - dialogBackgroundColor: - MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - barrierColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + dialogBackgroundColor: MihColors.primary(), + barrierColor: MihColors.primary(), ), Expanded( child: MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: contactController, numberMode: true, multiLineInput: false, @@ -422,12 +377,8 @@ class _MihUpdateBusinessDetailsWindowState const SizedBox(height: 10), MihTextFormField( height: 250, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: missionVisionController, multiLineInput: true, requiredText: true, @@ -469,12 +420,8 @@ class _MihUpdateBusinessDetailsWindowState ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: websiteController, multiLineInput: false, requiredText: false, @@ -486,12 +433,8 @@ class _MihUpdateBusinessDetailsWindowState ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: regController, multiLineInput: false, requiredText: false, @@ -503,12 +446,8 @@ class _MihUpdateBusinessDetailsWindowState ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: practiceNoController, multiLineInput: false, requiredText: false, @@ -519,12 +458,8 @@ class _MihUpdateBusinessDetailsWindowState ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: vatNoController, multiLineInput: false, requiredText: false, @@ -540,16 +475,8 @@ class _MihUpdateBusinessDetailsWindowState children: [ Flexible( child: MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: locationController, multiLineInput: false, requiredText: true, @@ -581,20 +508,12 @@ class _MihUpdateBusinessDetailsWindowState context.pop(); }); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + buttonColor: MihColors.secondary(), width: 100, child: Text( "Set", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -612,18 +531,12 @@ class _MihUpdateBusinessDetailsWindowState MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Update", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -647,9 +560,7 @@ class _MihUpdateBusinessDetailsWindowState MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 100, height: 25, child: Text( @@ -657,9 +568,7 @@ class _MihUpdateBusinessDetailsWindowState ? "Setup Profile" : "Update", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 15, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_update_my_business_user_details.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_update_my_business_user_details.dart index 7217dbc7..1667f334 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_update_my_business_user_details.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/components/mih_update_my_business_user_details.dart @@ -1,15 +1,10 @@ import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_image_display.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart'; @@ -146,10 +141,10 @@ class _MihUpdateMyBusinessUserDetailsState // editable: false, // fileNameController: fileNameController, // userSelectedfile: userPicFile, - // frameColor: MihColors.getSecondaryColor( + // frameColor: MihColors.secondary( // MzansiInnovationHub.of(context)!.theme.mode == // "Dark"), - // backgroundColor: MihColors.getPrimaryColor( + // backgroundColor: MihColors.primary( // MzansiInnovationHub.of(context)!.theme.mode == // "Dark"), // onChange: (_) {}, @@ -158,12 +153,8 @@ class _MihUpdateMyBusinessUserDetailsState Visibility( visible: false, child: MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: fileNameController, multiLineInput: false, requiredText: true, @@ -173,12 +164,8 @@ class _MihUpdateMyBusinessUserDetailsState ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: titleTextController, multiLineInput: false, requiredText: true, @@ -190,12 +177,8 @@ class _MihUpdateMyBusinessUserDetailsState ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: fnameController, multiLineInput: false, requiredText: true, @@ -207,12 +190,8 @@ class _MihUpdateMyBusinessUserDetailsState ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: lnameController, multiLineInput: false, requiredText: true, @@ -224,12 +203,8 @@ class _MihUpdateMyBusinessUserDetailsState ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: accessController, multiLineInput: false, requiredText: true, @@ -272,12 +247,8 @@ class _MihUpdateMyBusinessUserDetailsState Visibility( visible: false, child: MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: fileNameController, multiLineInput: false, requiredText: true, @@ -295,18 +266,12 @@ class _MihUpdateMyBusinessUserDetailsState MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Update", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -329,16 +294,13 @@ class _MihUpdateMyBusinessUserDetailsState MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), width: 100, height: 25, child: Text( "Update", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 15, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/mzansi_business_profile_view.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/mzansi_business_profile_view.dart index df8a9795..64dc9f46 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/mzansi_business_profile_view.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/mzansi_business_profile_view.dart @@ -1,10 +1,7 @@ import 'package:go_router/go_router.dart'; import 'package:ken_logger/ken_logger.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_directory_provider.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_details_view.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_qr_code.dart'; @@ -27,7 +24,7 @@ class MzansiBusinessProfileView extends StatefulWidget { } class _MzansiBusinessProfileViewState extends State { - int _selcetedIndex = 0; + int _selectedIndex = 0; late final MihBusinessDetailsView _businessDetailsView; late final MihBusinessReviews _businessReviews; late final MihBusinessQrCode _businessQrCode; @@ -77,14 +74,14 @@ class _MzansiBusinessProfileViewState extends State { ); } else { return MihPackage( - appActionButton: getAction(), - appTools: getTools(), - appBody: getToolBody(directoryProvider), - appToolTitles: getToolTitle(), - selectedbodyIndex: _selcetedIndex, + packageActionButton: getAction(), + packageTools: getTools(), + packageToolBodies: getToolBody(directoryProvider), + packageToolTitles: getToolTitle(), + selectedBodyIndex: _selectedIndex, onIndexChange: (newValue) { setState(() { - _selcetedIndex = newValue; + _selectedIndex = newValue; }); }, ); @@ -117,22 +114,22 @@ class _MzansiBusinessProfileViewState extends State { Map temp = {}; temp[const Icon(Icons.business)] = () { setState(() { - _selcetedIndex = 0; + _selectedIndex = 0; }); }; temp[const Icon(Icons.star_rate_rounded)] = () { setState(() { - _selcetedIndex = 1; + _selectedIndex = 1; }); }; temp[const Icon(Icons.qr_code_rounded)] = () { setState(() { - _selcetedIndex = 2; + _selectedIndex = 2; }); }; return MihPackageTools( tools: temp, - selcetedIndex: _selcetedIndex, + selectedIndex: _selectedIndex, ); } diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/mzansi_set_up_business_profile.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/mzansi_set_up_business_profile.dart index 852ae249..9b8b2e42 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/mzansi_set_up_business_profile.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/mzansi_set_up_business_profile.dart @@ -1,8 +1,6 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_details_set_up.dart'; import 'package:provider/provider.dart'; @@ -28,11 +26,11 @@ class _MzansiSetUpBusinessProfileState @override Widget build(BuildContext context) { return MihPackage( - appActionButton: getAction(), - appTools: getTools(), - appBody: getToolBody(), - appToolTitles: getToolTitle(), - selectedbodyIndex: context.watch().businessIndex, + packageActionButton: getAction(), + packageTools: getTools(), + packageToolBodies: getToolBody(), + packageToolTitles: getToolTitle(), + selectedBodyIndex: context.watch().businessIndex, onIndexChange: (newIndex) { context.read().setBusinessIndex(newIndex); }, @@ -60,7 +58,7 @@ class _MzansiSetUpBusinessProfileState }; return MihPackageTools( tools: temp, - selcetedIndex: context.watch().businessIndex, + selectedIndex: context.watch().businessIndex, ); } diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tiles/mzansi_business_profile_tile.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tiles/mzansi_business_profile_tile.dart index d9a26e98..6556b07a 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tiles/mzansi_business_profile_tile.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tiles/mzansi_business_profile_tile.dart @@ -1,9 +1,6 @@ import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tile.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; class MzansiBusinessProfileTile extends StatefulWidget { final double packageSize; @@ -30,16 +27,14 @@ class _MzansiBusinessProfileTileState extends State { // arguments: widget.arguments, // ); }, - appName: "Business Profile", - appIcon: Icon( + packageName: "Business Profile", + packageIcon: Icon( MihIcons.businessProfile, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), // size: widget.packageSize, ), iconSize: widget.packageSize, - textColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + textColor: MihColors.secondary(), ); } } diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tiles/mzansi_setup_business_profile_tile.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tiles/mzansi_setup_business_profile_tile.dart index 470bd19b..a813d7ff 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tiles/mzansi_setup_business_profile_tile.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tiles/mzansi_setup_business_profile_tile.dart @@ -1,10 +1,7 @@ import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tile.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:flutter/material.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:provider/provider.dart'; class MzansiSetupBusinessProfileTile extends StatefulWidget { @@ -36,15 +33,13 @@ class _MzansiSetupBusinessProfileTileState // arguments: widget.signedInUser, // ); }, - appName: "Set Up Business", - appIcon: Icon( + packageName: "Set Up Business", + packageIcon: Icon( MihIcons.businessSetup, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), iconSize: widget.packageSize, - textColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + textColor: MihColors.secondary(), ); } } diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_details.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_details.dart index 9b5df943..a254feea 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_details.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_details.dart @@ -1,14 +1,11 @@ import 'package:custom_rating_bar/custom_rating_bar.dart'; import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_business_info_card_v2.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/components/mih_update_business_details_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.dart'; import 'package:provider/provider.dart'; @@ -48,6 +45,7 @@ class _MihBusinessDetailsState extends State { Widget build(BuildContext context) { double screenWidth = MediaQuery.of(context).size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, innerHorizontalPadding: 10, bodyItem: getBody(screenWidth, context), @@ -81,12 +79,8 @@ class _MihBusinessDetailsState extends State { editable: false, fileNameController: fileNameController, userSelectedfile: newSelectedLogoPic, - frameColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + frameColor: MihColors.secondary(), + backgroundColor: MihColors.primary(), onChange: (selectedfile) { setState(() { newSelectedLogoPic = selectedfile; @@ -102,18 +96,12 @@ class _MihBusinessDetailsState extends State { editBizProfileWindow( mzansiProfileProvider, width); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 35, height: 35, child: Icon( Icons.edit, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), ), ), ), @@ -126,9 +114,7 @@ class _MihBusinessDetailsState extends State { style: TextStyle( fontSize: 35, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), @@ -138,9 +124,7 @@ class _MihBusinessDetailsState extends State { style: TextStyle( fontSize: 20, fontWeight: FontWeight.w600, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), @@ -150,17 +134,11 @@ class _MihBusinessDetailsState extends State { filledIcon: Icons.star, emptyIcon: Icons.star_border, halfFilledIcon: Icons.star_half, - filledColor: MihColors.getYellowColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - // MihColors.getPrimaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - emptyColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - halfFilledColor: MihColors.getYellowColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - // MihColors.getPrimaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + filledColor: MihColors.yellow(), + // MihColors.primary(), + emptyColor: MihColors.secondary(), + halfFilledColor: MihColors.yellow(), + // MihColors.primary(), isHalfAllowed: true, initialRating: mzansiProfileProvider .business!.rating.isNotEmpty @@ -181,9 +159,7 @@ class _MihBusinessDetailsState extends State { style: TextStyle( fontSize: 15, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_details_set_up.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_details_set_up.dart index 9564774e..21b29618 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_details_set_up.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_details_set_up.dart @@ -4,16 +4,11 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:go_router/go_router.dart'; import 'package:http/http.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_image_display.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_business_details_services.dart'; @@ -174,11 +169,9 @@ class _MihBusinessDetailsSetUpState extends State { Color getMissionVisionLimitColor(int limit) { if (_counter.value <= limit) { - return MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + return MihColors.secondary(); } else { - return MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + return MihColors.red(); } } @@ -202,15 +195,13 @@ class _MihBusinessDetailsSetUpState extends State { extra: stayOnPersonalSide, ); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), elevation: 10, width: 300, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -279,6 +270,7 @@ class _MihBusinessDetailsSetUpState extends State { Widget build(BuildContext context) { double screenWidth = MediaQuery.of(context).size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(screenWidth), ); @@ -316,10 +308,7 @@ class _MihBusinessDetailsSetUpState extends State { fontSize: 25, ), ), - Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark")), + Divider(color: MihColors.secondary()), const SizedBox(height: 10.0), MihForm( formKey: _formKey, @@ -334,12 +323,8 @@ class _MihBusinessDetailsSetUpState extends State { editable: true, fileNameController: logoFileNameController, userSelectedfile: newSelectedLogoPic, - frameColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + frameColor: MihColors.secondary(), + backgroundColor: MihColors.primary(), onChange: (selectedfile) { setState(() { newSelectedLogoPic = selectedfile; @@ -349,12 +334,8 @@ class _MihBusinessDetailsSetUpState extends State { ), const SizedBox(height: 20), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: nameController, multiLineInput: false, requiredText: true, @@ -365,12 +346,8 @@ class _MihBusinessDetailsSetUpState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: typeController, multiLineInput: false, requiredText: true, @@ -382,12 +359,8 @@ class _MihBusinessDetailsSetUpState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: emailController, multiLineInput: false, requiredText: true, @@ -424,21 +397,13 @@ class _MihBusinessDetailsSetUpState extends State { initialSelection: countryCodeController.text, showDropDownButton: false, pickerStyle: PickerStyle.bottomSheet, - dialogBackgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - barrierColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + dialogBackgroundColor: MihColors.primary(), + barrierColor: MihColors.primary(), ), Expanded( child: MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: contactController, numberMode: true, multiLineInput: false, @@ -454,12 +419,8 @@ class _MihBusinessDetailsSetUpState extends State { const SizedBox(height: 10.0), MihTextFormField( height: 250, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: missionVisionController, multiLineInput: true, requiredText: true, @@ -501,12 +462,8 @@ class _MihBusinessDetailsSetUpState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: websiteController, multiLineInput: false, requiredText: false, @@ -519,12 +476,8 @@ class _MihBusinessDetailsSetUpState extends State { const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: regController, multiLineInput: false, requiredText: false, @@ -536,12 +489,8 @@ class _MihBusinessDetailsSetUpState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: practiceNoController, multiLineInput: false, requiredText: false, @@ -553,12 +502,8 @@ class _MihBusinessDetailsSetUpState extends State { const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: vatNoController, multiLineInput: false, requiredText: false, @@ -574,12 +519,8 @@ class _MihBusinessDetailsSetUpState extends State { children: [ Flexible( child: MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: locationController, multiLineInput: false, requiredText: true, @@ -610,18 +551,12 @@ class _MihBusinessDetailsSetUpState extends State { Navigator.of(context).pop(); }); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.secondary(), width: 100, child: Text( "Set", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -640,18 +575,11 @@ class _MihBusinessDetailsSetUpState extends State { ), ), ), - Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark")), + Divider(color: MihColors.secondary()), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: titleController, multiLineInput: false, requiredText: true, @@ -673,12 +601,8 @@ class _MihBusinessDetailsSetUpState extends State { // ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: fnameController, multiLineInput: false, requiredText: true, @@ -690,12 +614,8 @@ class _MihBusinessDetailsSetUpState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: lnameController, multiLineInput: false, requiredText: true, @@ -707,12 +627,8 @@ class _MihBusinessDetailsSetUpState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: accessController, multiLineInput: false, requiredText: true, @@ -761,16 +677,12 @@ class _MihBusinessDetailsSetUpState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Set Up Buasiness", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_details_view.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_details_view.dart index 5663c9d7..e2d8a6e6 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_details_view.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_details_view.dart @@ -2,14 +2,11 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:custom_rating_bar/custom_rating_bar.dart'; import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_business_info_card_v2.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_directory_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.dart'; import 'package:provider/provider.dart'; @@ -44,6 +41,7 @@ class _MihBusinessDetailsViewState extends State { Widget build(BuildContext context) { double screenWidth = MediaQuery.of(context).size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, innerHorizontalPadding: 10, bodyItem: getBody(screenWidth, context), @@ -81,36 +79,22 @@ class _MihBusinessDetailsViewState extends State { editable: false, fileNameController: TextEditingController(), userSelectedfile: file, - frameColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + frameColor: MihColors.secondary(), + backgroundColor: MihColors.primary(), onChange: () {}, ); } else { return Icon( MihIcons.iDontKnow, size: profilePictureWidth, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.secondary(), ); } } else { return Icon( MihIcons.mihRing, size: profilePictureWidth, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ); } }), @@ -122,9 +106,9 @@ class _MihBusinessDetailsViewState extends State { // fileNameController: fileNameController, // userSelectedfile: imageFile, // frameColor: - // MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // MihColors.secondary(), // backgroundColor: - // MihColors.getPrimaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // MihColors.primary(), // onChange: (selectedfile) { // setState(() { // imageFile = selectedfile; @@ -138,9 +122,7 @@ class _MihBusinessDetailsViewState extends State { style: TextStyle( fontSize: 35, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), @@ -150,9 +132,7 @@ class _MihBusinessDetailsViewState extends State { style: TextStyle( fontSize: 20, fontWeight: FontWeight.w600, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), @@ -162,17 +142,11 @@ class _MihBusinessDetailsViewState extends State { filledIcon: Icons.star, emptyIcon: Icons.star_border, halfFilledIcon: Icons.star_half, - filledColor: MihColors.getYellowColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - // MihColors.getPrimaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - emptyColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - halfFilledColor: MihColors.getYellowColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - // MihColors.getPrimaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + filledColor: MihColors.yellow(), + // MihColors.primary(), + emptyColor: MihColors.secondary(), + halfFilledColor: MihColors.yellow(), + // MihColors.primary(), isHalfAllowed: true, initialRating: directoryProvider.selectedBusiness!.rating.isNotEmpty @@ -195,9 +169,7 @@ class _MihBusinessDetailsViewState extends State { style: TextStyle( fontSize: 15, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_qr_code.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_qr_code.dart index ab1142fa..491040e6 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_qr_code.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_qr_code.dart @@ -8,19 +8,12 @@ import 'package:flutter/material.dart'; import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:go_router/go_router.dart'; import 'package:ken_logger/ken_logger.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_floating_menu.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.dart'; import 'package:provider/provider.dart'; import 'package:screenshot/screenshot.dart'; @@ -56,17 +49,11 @@ class _MihBusinessQrCodeState extends State { } String getQrCodeData(int qrSize) { - String color = MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark") - .toARGB32() - .toRadixString(16) - .substring(2, 8); + String color = + MihColors.primary().toARGB32().toRadixString(16).substring(2, 8); // KenLogger.warning(color); - String bgColor = MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark") - .toARGB32() - .toRadixString(16) - .substring(2, 8); + String bgColor = + MihColors.secondary().toARGB32().toRadixString(16).substring(2, 8); // KenLogger.warning(bgColor); String encodedData = Uri.encodeComponent("$qrCodedata${business.business_id}"); @@ -138,15 +125,13 @@ class _MihBusinessQrCodeState extends State { Icon( MihIcons.mihLogo, size: 100, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), Text( "Let's Get Started", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -155,8 +140,7 @@ class _MihBusinessQrCodeState extends State { Text( "Ready to dive in to the world of MIH?\nSign in or create a free MIH account to unlock all the powerful features of the MIH app. It's quick and easy!", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 15, ), ), @@ -169,16 +153,13 @@ class _MihBusinessQrCodeState extends State { extra: true, ); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), elevation: 10, width: 300, child: Text( "Sign In/ Create Account", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -196,16 +177,13 @@ class _MihBusinessQrCodeState extends State { return Screenshot( controller: screenshotController, child: Material( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark") - .withValues(alpha: 0.6), + color: MihColors.secondary().withValues(alpha: 0.6), borderRadius: BorderRadius.circular(25), elevation: 10, shadowColor: Colors.black, child: Container( decoration: BoxDecoration( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), borderRadius: BorderRadius.circular(20), ), child: Padding( @@ -230,30 +208,22 @@ class _MihBusinessQrCodeState extends State { editable: false, fileNameController: TextEditingController(), userSelectedfile: file, - frameColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - backgroundColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + frameColor: MihColors.primary(), + backgroundColor: MihColors.secondary(), onChange: () {}, ); } else { return Icon( MihIcons.iDontKnow, size: profilePictureWidth, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ); } } else { return Icon( MihIcons.mihRing, size: profilePictureWidth, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ); } }, @@ -264,9 +234,7 @@ class _MihBusinessQrCodeState extends State { style: TextStyle( fontSize: 35, fontWeight: FontWeight.bold, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), ), ), @@ -276,9 +244,7 @@ class _MihBusinessQrCodeState extends State { style: TextStyle( fontSize: 20, fontWeight: FontWeight.w600, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), ), ), @@ -292,9 +258,7 @@ class _MihBusinessQrCodeState extends State { style: TextStyle( fontSize: 15, fontWeight: FontWeight.w600, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), ), ), @@ -302,9 +266,7 @@ class _MihBusinessQrCodeState extends State { Icon( MihIcons.mihLogo, size: 20, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), ], ), @@ -328,9 +290,7 @@ class _MihBusinessQrCodeState extends State { style: TextStyle( fontSize: 30, fontWeight: FontWeight.bold, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), ), ), @@ -373,6 +333,7 @@ class _MihBusinessQrCodeState extends State { Widget build(BuildContext context) { Size screenSize = MediaQuery.of(context).size; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, innerHorizontalPadding: 10, bodyItem: getBody(screenSize, context), @@ -410,19 +371,15 @@ class _MihBusinessQrCodeState extends State { SpeedDialChild( child: Icon( Icons.download_rounded, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Download QR Code", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { downloadQrCode(); }, @@ -430,19 +387,15 @@ class _MihBusinessQrCodeState extends State { SpeedDialChild( child: Icon( Icons.share_rounded, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Share Business", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { shareMIHLink( context, diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_reviews.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_reviews.dart index 66be859f..222f8296 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_reviews.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_reviews.dart @@ -1,12 +1,9 @@ import 'package:custom_rating_bar/custom_rating_bar.dart'; import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; import 'package:mzansi_innovation_hub/mih_objects/business_review.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/components/mih_review_business_window.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_directory_services.dart'; import 'package:provider/provider.dart'; @@ -84,17 +81,13 @@ class _MihBusinessReviewsState extends State { child: Icon( MihIcons.mihRing, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), Icon( Icons.star_rate_rounded, size: 150, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ], ), @@ -106,9 +99,7 @@ class _MihBusinessReviewsState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), // const SizedBox(height: 10), @@ -150,7 +141,7 @@ class _MihBusinessReviewsState extends State { // Icons.star_rate_rounded, // size: 150, // color: - // MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // MihColors.secondary(), // ), // Text( // "No reviews yet, be the first the review\n${widget.business.Name}", @@ -178,23 +169,17 @@ class _MihBusinessReviewsState extends State { filledIcon: Icons.star, emptyIcon: Icons.star_border, halfFilledIcon: Icons.star_half, - filledColor: MihColors.getYellowColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - // MihColors.getPrimaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - emptyColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - halfFilledColor: MihColors.getYellowColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - // MihColors.getPrimaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + filledColor: MihColors.yellow(), + // MihColors.primary(), + emptyColor: MihColors.secondary(), + halfFilledColor: MihColors.yellow(), + // MihColors.primary(), // filledColor: - // MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // MihColors.secondary(), // emptyColor: - // MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // MihColors.secondary(), // halfFilledColor: - // MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // MihColors.secondary(), isHalfAllowed: true, initialRating: double.parse(reviews[index].rating_score), maxRating: 5, diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_user_search.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_user_search.dart index 024fe46b..61bbacdb 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_user_search.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_business_user_search.dart @@ -1,10 +1,6 @@ -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_search_bar.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/builders/build_user_list.dart'; import 'package:flutter/material.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_user_services.dart'; @@ -52,8 +48,7 @@ class _MihBusinessUserSearchState extends State { Icon( MihIcons.iDontKnow, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( @@ -63,8 +58,7 @@ class _MihBusinessUserSearchState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), ], @@ -80,8 +74,7 @@ class _MihBusinessUserSearchState extends State { Icon( MihIcons.personalProfile, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( @@ -91,8 +84,7 @@ class _MihBusinessUserSearchState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), const SizedBox(height: 25), @@ -103,8 +95,7 @@ class _MihBusinessUserSearchState extends State { style: TextStyle( fontSize: 20, fontWeight: FontWeight.normal, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), children: [ TextSpan( @@ -133,7 +124,7 @@ class _MihBusinessUserSearchState extends State { // "Enter Username or Email to search", // style: TextStyle( // fontSize: 25, - // color: MihColors.getGreyColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark")), + // color: MihColors.grey()), // textAlign: TextAlign.center, // ), // ); @@ -156,6 +147,7 @@ class _MihBusinessUserSearchState extends State { final Size size = MediaQuery.sizeOf(context); final double width = size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, innerHorizontalPadding: 10, bodyItem: getBody(width), @@ -176,10 +168,8 @@ class _MihBusinessUserSearchState extends State { controller: searchController, hintText: "Search Users", prefixIcon: Icons.search, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - hintColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + hintColor: MihColors.primary(), onPrefixIconTap: () { submitUserForm(profileProvider); }, diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_my_business_team.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_my_business_team.dart index 330a4db4..e7accde6 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_my_business_team.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_my_business_team.dart @@ -1,8 +1,5 @@ -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_objects/business_employee.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/builders/build_employee_list.dart'; import 'package:flutter/material.dart'; @@ -35,10 +32,7 @@ class _MihMyBusinessTeamState extends State { return Center( child: Text( "", - style: TextStyle( - fontSize: 25, - color: MihColors.getGreyColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark")), + style: TextStyle(fontSize: 25, color: MihColors.grey()), textAlign: TextAlign.center, ), ); @@ -56,6 +50,7 @@ class _MihMyBusinessTeamState extends State { @override Widget build(BuildContext context) { return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(), ); diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_my_business_user.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_my_business_user.dart index db4e2235..85adc026 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_my_business_user.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/package_tools/mih_my_business_user.dart @@ -2,16 +2,12 @@ import 'dart:ui'; import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_image_display.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/components/mih_update_my_business_user_details.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; import 'package:provider/provider.dart'; class MihMyBusinessUser extends StatefulWidget { @@ -56,29 +52,24 @@ class _MihMyBusinessUserState extends State { TextStyle titleStyle = TextStyle( fontSize: 30, fontWeight: FontWeight.bold, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ); TextStyle subtitleStyle = TextStyle( fontSize: 20, fontWeight: FontWeight.normal, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ); TextStyle subtitleHeadingStyle = TextStyle( fontSize: 20, fontWeight: FontWeight.bold, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ); return MihPackageWindow( fullscreen: false, windowTitle: "Employee Info Card", onWindowTapClose: null, - backgroundColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - foregroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.secondary(), + foregroundColor: MihColors.primary(), windowBody: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, @@ -162,6 +153,7 @@ class _MihMyBusinessUserState extends State { Widget build(BuildContext context) { double screenWidth = MediaQuery.of(context).size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, innerHorizontalPadding: 10, bodyItem: getBody(screenWidth), @@ -193,12 +185,8 @@ class _MihMyBusinessUserState extends State { editable: false, fileNameController: fileNameController, userSelectedfile: userPicFile, - frameColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + frameColor: MihColors.secondary(), + backgroundColor: MihColors.primary(), onChange: (_) {}, ), Positioned( @@ -209,18 +197,12 @@ class _MihMyBusinessUserState extends State { editBizUserProfileWindow( mzansiProfileProvider, width); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 35, height: 35, child: Icon( Icons.edit, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), ), ), ), @@ -289,16 +271,13 @@ class _MihMyBusinessUserState extends State { !mzansiProfileProvider.hideBusinessUserDetails); }, buttonColor: mzansiProfileProvider.hideBusinessUserDetails - ? MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark") - : MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + ? MihColors.green() + : MihColors.red(), child: Icon( mzansiProfileProvider.hideBusinessUserDetails ? Icons.visibility : Icons.visibility_off, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), ), ), diff --git a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/components/mih_edit_personal_profile_window.dart b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/components/mih_edit_personal_profile_window.dart index 5fb60204..1e9a095e 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/components/mih_edit_personal_profile_window.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/components/mih_edit_personal_profile_window.dart @@ -2,16 +2,10 @@ import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:ken_logger/ken_logger.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_toggle.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart'; @@ -150,11 +144,9 @@ class _MihEditPersonalProfileWindowState Color getPurposeLimitColor(int limit) { if (_counter.value <= limit) { - return MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + return MihColors.secondary(); } else { - return MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + return MihColors.red(); } } @@ -176,15 +168,13 @@ class _MihEditPersonalProfileWindowState context.pop(); } }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), elevation: 10, width: 300, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -211,15 +201,13 @@ class _MihEditPersonalProfileWindowState Icon( MihIcons.businessSetup, size: 150, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), Text( "Setup Business Profile?", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -228,8 +216,7 @@ class _MihEditPersonalProfileWindowState Text( "It looks like this is the first time activating your business account. Would you like to set up your business now or would you like to do it later?", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 15, fontWeight: FontWeight.bold, ), @@ -250,17 +237,13 @@ class _MihEditPersonalProfileWindowState extra: profileProvider.user, ); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), elevation: 10, width: 300, child: Text( "Setup Business", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -272,17 +255,13 @@ class _MihEditPersonalProfileWindowState context.pop(); context.pop(); }, - buttonColor: MihColors.getOrangeColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.orange(), elevation: 10, width: 300, child: Text( "Setup Later", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -347,12 +326,8 @@ class _MihEditPersonalProfileWindowState editable: true, fileNameController: proPicController, userSelectedfile: newSelectedProPic, - frameColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + frameColor: MihColors.secondary(), + backgroundColor: MihColors.primary(), onChange: (selectedImage) { setState(() { newSelectedProPic = selectedImage; @@ -364,12 +339,8 @@ class _MihEditPersonalProfileWindowState Visibility( visible: false, child: MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: proPicController, multiLineInput: false, requiredText: true, @@ -379,12 +350,8 @@ class _MihEditPersonalProfileWindowState ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: usernameController, multiLineInput: false, requiredText: true, @@ -396,12 +363,8 @@ class _MihEditPersonalProfileWindowState ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: fnameController, multiLineInput: false, requiredText: true, @@ -412,12 +375,8 @@ class _MihEditPersonalProfileWindowState ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: lnameController, multiLineInput: false, requiredText: true, @@ -429,12 +388,8 @@ class _MihEditPersonalProfileWindowState const SizedBox(height: 10.0), MihTextFormField( height: 250, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: purposeController, multiLineInput: true, requiredText: true, @@ -478,12 +433,8 @@ class _MihEditPersonalProfileWindowState MihToggle( hintText: "Activate Business Account", initialPostion: businessUser, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - secondaryFillColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + secondaryFillColor: MihColors.primary(), onChange: (value) { setState(() { businessUser = value; @@ -502,20 +453,14 @@ class _MihEditPersonalProfileWindowState MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( mzansiProfileProvider.user!.username.isEmpty ? "Setup Profile" : "Update", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -538,8 +483,7 @@ class _MihEditPersonalProfileWindowState MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), width: 100, height: 25, child: Text( @@ -547,9 +491,7 @@ class _MihEditPersonalProfileWindowState ? "Setup Profile" : "Update", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 15, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile.dart b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile.dart index f51b7947..dd0a7a6c 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile.dart @@ -1,8 +1,5 @@ import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_profile.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_settings.dart'; @@ -61,11 +58,11 @@ class _MzansiProfileState extends State { ); } return MihPackage( - appActionButton: getAction(), - appTools: getTools(), - appBody: getToolBody(), - appToolTitles: getToolTitle(), - selectedbodyIndex: profileProvider.personalIndex, + packageActionButton: getAction(), + packageTools: getTools(), + packageToolBodies: getToolBody(), + packageToolTitles: getToolTitle(), + selectedBodyIndex: profileProvider.personalIndex, onIndexChange: (newIndex) { profileProvider.setPersonalIndex(newIndex); }, @@ -101,7 +98,7 @@ class _MzansiProfileState extends State { }; return MihPackageTools( tools: temp, - selcetedIndex: context.watch().personalIndex, + selectedIndex: context.watch().personalIndex, ); } diff --git a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile_view.dart b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile_view.dart index e58de9e8..cf01f5e8 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile_view.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile_view.dart @@ -1,7 +1,5 @@ import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_profile_view.dart'; import 'package:flutter/material.dart'; @@ -15,7 +13,7 @@ class MzansiProfileView extends StatefulWidget { } class _MzansiProfileViewState extends State { - int _selcetedIndex = 0; + int _selectedIndex = 0; late final MihPersonalProfileView _personalProfileView; @override @@ -27,14 +25,14 @@ class _MzansiProfileViewState extends State { @override Widget build(BuildContext context) { return MihPackage( - appActionButton: getAction(), - appTools: getTools(), - appBody: getToolBody(), - appToolTitles: getToolTitle(), - selectedbodyIndex: _selcetedIndex, + packageActionButton: getAction(), + packageTools: getTools(), + packageToolBodies: getToolBody(), + packageToolTitles: getToolTitle(), + selectedBodyIndex: _selectedIndex, onIndexChange: (newValue) { setState(() { - _selcetedIndex = newValue; + _selectedIndex = newValue; }); }, ); @@ -55,12 +53,12 @@ class _MzansiProfileViewState extends State { Map temp = {}; temp[const Icon(Icons.person)] = () { setState(() { - _selcetedIndex = 0; + _selectedIndex = 0; }); }; return MihPackageTools( tools: temp, - selcetedIndex: _selcetedIndex, + selectedIndex: _selectedIndex, ); } diff --git a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tiles/mzansi_profile_tile.dart b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tiles/mzansi_profile_tile.dart index 7fd9045a..9753de43 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tiles/mzansi_profile_tile.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tiles/mzansi_profile_tile.dart @@ -1,9 +1,6 @@ import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tile.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; class MzansiProfileTile extends StatefulWidget { final double packageSize; @@ -27,16 +24,14 @@ class _MzansiProfileTileState extends State { 'mzansiProfileManage', ); }, - appName: "Mzansi Profile", - appIcon: Icon( + packageName: "Mzansi Profile", + packageIcon: Icon( MihIcons.mihLogo, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), // size: widget.packageSize, ), iconSize: widget.packageSize, - textColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + textColor: MihColors.secondary(), ); } } diff --git a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tiles/mzansi_setup_profile_tile.dart b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tiles/mzansi_setup_profile_tile.dart index 678b5299..1f407176 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tiles/mzansi_setup_profile_tile.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tiles/mzansi_setup_profile_tile.dart @@ -1,9 +1,6 @@ import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tile.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; class MzansiSetupProfileTile extends StatefulWidget { final double packageSize; @@ -26,16 +23,14 @@ class _MzansiSetupProfileTileState extends State { 'mzansiProfileManage', ); }, - appName: "Set Up Profile", - appIcon: Icon( + packageName: "Set Up Profile", + packageIcon: Icon( MihIcons.profileSetup, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), // size: widget.packageSize, ), iconSize: widget.packageSize, - textColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + textColor: MihColors.secondary(), ); } } diff --git a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_profile.dart b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_profile.dart index 622a3adc..e5fa8e94 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_profile.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_profile.dart @@ -1,15 +1,10 @@ import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_objects/profile_link.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -// import 'package:mzansi_innovation_hub/mih_package_components/mih_profile_links.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/personal_profile/components/mih_edit_personal_profile_window.dart'; import 'package:provider/provider.dart'; @@ -130,6 +125,7 @@ class _MihPersonalProfileState extends State { Widget build(BuildContext context) { double screenWidth = MediaQuery.of(context).size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(screenWidth), ); @@ -164,12 +160,8 @@ class _MihPersonalProfileState extends State { editable: false, fileNameController: proPicController, userSelectedfile: newSelectedProPic, - frameColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + frameColor: MihColors.secondary(), + backgroundColor: MihColors.primary(), onChange: (selectedImage) { setState(() { newSelectedProPic = selectedImage; @@ -184,16 +176,12 @@ class _MihPersonalProfileState extends State { onPressed: () { editProfileWindow(width); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 35, height: 35, child: Icon( Icons.edit, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), ), ), @@ -208,9 +196,7 @@ class _MihPersonalProfileState extends State { style: TextStyle( fontSize: 35, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), @@ -222,9 +208,7 @@ class _MihPersonalProfileState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), @@ -236,9 +220,7 @@ class _MihPersonalProfileState extends State { style: TextStyle( fontSize: 15, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), @@ -254,9 +236,7 @@ class _MihPersonalProfileState extends State { style: TextStyle( fontSize: 15, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), @@ -277,14 +257,14 @@ class _MihPersonalProfileState extends State { // onPressed: () { // editProfileWindow(width); // }, - // buttonColor: MihColors.getGreenColor( + // buttonColor: MihColors.green( // MzansiInnovationHub.of(context)!.theme.mode == // "Dark"), // width: 35, // height: 35, // child: Icon( // Icons.link, - // color: MihColors.getPrimaryColor( + // color: MihColors.primary( // MzansiInnovationHub.of(context)!.theme.mode == // "Dark"), // ), diff --git a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_profile_view.dart b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_profile_view.dart index 1b39d6fa..8f9102b2 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_profile_view.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_profile_view.dart @@ -1,11 +1,8 @@ import 'package:cached_network_image/cached_network_image.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_directory_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.dart'; import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; @@ -42,6 +39,7 @@ class _MihPersonalProfileViewState extends State { Widget build(BuildContext context) { double screenWidth = MediaQuery.of(context).size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, innerHorizontalPadding: 10, bodyItem: getBody(screenWidth), @@ -78,30 +76,22 @@ class _MihPersonalProfileViewState extends State { editable: false, fileNameController: TextEditingController(), userSelectedfile: file, - frameColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + frameColor: MihColors.secondary(), + backgroundColor: MihColors.primary(), onChange: () {}, ); } else { return Icon( MihIcons.iDontKnow, size: profilePictureWidth, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ); } } else { return Icon( MihIcons.mihRing, size: profilePictureWidth, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ); } }), @@ -113,9 +103,7 @@ class _MihPersonalProfileViewState extends State { style: TextStyle( fontSize: 35, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), @@ -127,9 +115,7 @@ class _MihPersonalProfileViewState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), @@ -139,9 +125,7 @@ class _MihPersonalProfileViewState extends State { style: TextStyle( fontSize: 15, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), @@ -157,9 +141,7 @@ class _MihPersonalProfileViewState extends State { style: TextStyle( fontSize: 15, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), diff --git a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_settings.dart b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_settings.dart index aff6f1b3..eaf88bcb 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_settings.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_settings.dart @@ -1,11 +1,7 @@ -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_user_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:provider/provider.dart'; @@ -26,6 +22,7 @@ class _MihPersonalSettingsState extends State { builder: (BuildContext context, MzansiProfileProvider mzansiProfileProvider, Widget? child) { return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, innerHorizontalPadding: 10, bodyItem: getBody(mzansiProfileProvider), @@ -44,14 +41,12 @@ class _MihPersonalSettingsState extends State { onPressed: () { MihUserServices.deleteAccount(mzansiProfileProvider, context); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), width: 300, child: Text( "Delete", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -61,14 +56,12 @@ class _MihPersonalSettingsState extends State { onPressed: () { Navigator.pop(context); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Cancel", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -87,8 +80,7 @@ class _MihPersonalSettingsState extends State { Center( child: FaIcon( FontAwesomeIcons.trashCan, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), size: 150, ), ), @@ -99,8 +91,7 @@ class _MihPersonalSettingsState extends State { style: TextStyle( fontSize: 18, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), const SizedBox(height: 10.0), @@ -108,14 +99,12 @@ class _MihPersonalSettingsState extends State { onPressed: () { deleteAccountPopUp(mzansiProfileProvider, context); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.red(), width: 300, child: Text( "Delete Account", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart b/mih_ui/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart index b75bb179..5fc235dd 100644 --- a/mih_ui/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart +++ b/mih_ui/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart @@ -4,19 +4,14 @@ import 'package:flutter/foundation.dart'; import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:go_router/go_router.dart'; import 'package:ken_logger/ken_logger.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_banner_ad.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_wallet_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_wallet_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; import 'package:mzansi_innovation_hub/mih_objects/loyalty_card.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_wallet/components/mih_card_display.dart'; import 'package:flutter/material.dart'; @@ -84,10 +79,8 @@ class _BuildLoyaltyCardListState extends State { formKey: _formKey, formFields: [ MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _nicknameController, multiLineInput: false, requiredText: false, @@ -101,12 +94,8 @@ class _BuildLoyaltyCardListState extends State { children: [ Flexible( child: MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _cardNumberController, multiLineInput: false, requiredText: true, @@ -122,16 +111,12 @@ class _BuildLoyaltyCardListState extends State { onPressed: () { openscanner(); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.secondary(), width: 100, child: Text( "Scan", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -171,16 +156,12 @@ class _BuildLoyaltyCardListState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Update", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -236,14 +217,12 @@ class _BuildLoyaltyCardListState extends State { onPressed: () async { context.pop(); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.red(), width: 300, child: Text( "Cancel", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -280,14 +259,12 @@ class _BuildLoyaltyCardListState extends State { MihAlertServices().internetConnectionAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Add", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -335,14 +312,12 @@ class _BuildLoyaltyCardListState extends State { MihAlertServices().internetConnectionAlert(context); } }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.red(), width: 300, child: Text( "Remove", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -352,14 +327,12 @@ class _BuildLoyaltyCardListState extends State { onPressed: () async { context.pop(); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Cancel", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -391,26 +364,21 @@ class _BuildLoyaltyCardListState extends State { child: widget.cardList[index].favourite == "" ? Icon( Icons.favorite, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ) : Icon( Icons.favorite_border, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: widget.cardList[index].favourite == "" ? "Add to Favourite" : "Remove from Favourite", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { if (widget.cardList[index].favourite == "") { addToFavCardWindow( @@ -432,19 +400,15 @@ class _BuildLoyaltyCardListState extends State { SpeedDialChild( child: Icon( Icons.edit, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Edit Card Details", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { setState(() { _cardNumberController.text = widget.cardList[index].card_number; @@ -462,19 +426,15 @@ class _BuildLoyaltyCardListState extends State { SpeedDialChild( child: Icon( Icons.delete, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Delete Card", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { deleteCardWindow( mzansiProfileProvider, @@ -517,7 +477,7 @@ class _BuildLoyaltyCardListState extends State { height: 75, // width: 300, child: BarcodeWidget( - //color: MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + //color: MihColors.secondary(), barcode: Barcode.code128(), backgroundColor: Colors.white, data: widget.cardList[index].card_number, @@ -540,7 +500,7 @@ class _BuildLoyaltyCardListState extends State { color: Colors.black, fontSize: 25, fontWeight: FontWeight.bold - //MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + //MihColors.secondary(), ), ), ], @@ -602,14 +562,12 @@ class _BuildLoyaltyCardListState extends State { await ScreenBrightness.instance .setSystemScreenBrightness(newBrightness); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), width: 300, child: Text( "Grant Permission", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -701,8 +659,7 @@ class _BuildLoyaltyCardListState extends State { Icon( MihIcons.iDontKnow, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( @@ -712,8 +669,7 @@ class _BuildLoyaltyCardListState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), ], @@ -729,8 +685,7 @@ class _BuildLoyaltyCardListState extends State { Icon( MihIcons.mzansiWallet, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( @@ -740,8 +695,7 @@ class _BuildLoyaltyCardListState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), const SizedBox(height: 25), @@ -752,9 +706,7 @@ class _BuildLoyaltyCardListState extends State { style: TextStyle( fontSize: 20, fontWeight: FontWeight.normal, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), children: [ TextSpan(text: "Press "), @@ -763,9 +715,7 @@ class _BuildLoyaltyCardListState extends State { child: Icon( Icons.menu, size: 20, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), TextSpan(text: " to add your first loyalty card"), @@ -787,8 +737,7 @@ class _BuildLoyaltyCardListState extends State { Icon( MihIcons.mzansiWallet, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( @@ -798,8 +747,7 @@ class _BuildLoyaltyCardListState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), const SizedBox(height: 25), @@ -810,9 +758,7 @@ class _BuildLoyaltyCardListState extends State { style: TextStyle( fontSize: 20, fontWeight: FontWeight.normal, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), children: [ TextSpan(text: "Press "), @@ -821,9 +767,7 @@ class _BuildLoyaltyCardListState extends State { child: Icon( Icons.menu, size: 20, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), TextSpan( diff --git a/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_add_card_window.dart b/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_add_card_window.dart index d006947a..ec7ae93d 100644 --- a/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_add_card_window.dart +++ b/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_add_card_window.dart @@ -1,15 +1,10 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:ken_logger/ken_logger.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_dropdwn_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_wallet_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_wallet/components/mih_card_display.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_wallet_services.dart'; @@ -168,12 +163,8 @@ class _MihAddCardWindowState extends State { ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _nicknameController, multiLineInput: false, requiredText: false, @@ -187,12 +178,8 @@ class _MihAddCardWindowState extends State { children: [ Flexible( child: MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _cardNumberController, multiLineInput: false, requiredText: true, @@ -212,16 +199,12 @@ class _MihAddCardWindowState extends State { _cardNumberController, // Use local controller ); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.secondary(), width: 100, child: Text( "Scan", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -266,16 +249,12 @@ class _MihAddCardWindowState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Add", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_barcode_scanner.dart b/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_barcode_scanner.dart index e889cd29..6b73d181 100644 --- a/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_barcode_scanner.dart +++ b/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_barcode_scanner.dart @@ -1,10 +1,8 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mobile_scanner/mobile_scanner.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; class MihBarcodeScanner extends StatefulWidget { final TextEditingController cardNumberController; @@ -107,9 +105,7 @@ class _MihBarcodeScannerState extends State decoration: BoxDecoration( border: Border.all( width: 5, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), @@ -127,17 +123,13 @@ class _MihBarcodeScannerState extends State _scannerController.stop(); context.pop(); }, - buttonColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.red(), width: 100, height: 50, child: Text( "Cancel", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/mzansi_wallet/mih_wallet.dart b/mih_ui/lib/mih_packages/mzansi_wallet/mih_wallet.dart index 88eebbdb..9083277e 100644 --- a/mih_ui/lib/mih_packages/mzansi_wallet/mih_wallet.dart +++ b/mih_ui/lib/mih_packages/mzansi_wallet/mih_wallet.dart @@ -1,8 +1,5 @@ import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_wallet_provider.dart'; import 'package:flutter/material.dart'; @@ -82,11 +79,11 @@ class _MihWalletState extends State { ); } return MihPackage( - appActionButton: getAction(), - appTools: getTools(), - appBody: getToolBody(), - appToolTitles: getToolTitle(), - selectedbodyIndex: walletProvider.toolIndex, + packageActionButton: getAction(), + packageTools: getTools(), + packageToolBodies: getToolBody(), + packageToolTitles: getToolTitle(), + selectedBodyIndex: walletProvider.toolIndex, onIndexChange: (newIndex) { walletProvider.setToolIndex(newIndex); }, @@ -118,7 +115,7 @@ class _MihWalletState extends State { }; return MihPackageTools( tools: temp, - selcetedIndex: context.watch().toolIndex, + selectedIndex: context.watch().toolIndex, ); } diff --git a/mih_ui/lib/mih_packages/mzansi_wallet/package_tiles/mih_wallet_tile.dart b/mih_ui/lib/mih_packages/mzansi_wallet/package_tiles/mih_wallet_tile.dart index 74a3951d..47d915eb 100644 --- a/mih_ui/lib/mih_packages/mzansi_wallet/package_tiles/mih_wallet_tile.dart +++ b/mih_ui/lib/mih_packages/mzansi_wallet/package_tiles/mih_wallet_tile.dart @@ -1,9 +1,6 @@ import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tile.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; class MihWalletTile extends StatefulWidget { final double packageSize; @@ -31,16 +28,14 @@ class _MihWalletTileState extends State { // arguments: WalletArguments(widget.signedInUser, 0), // ); }, - appName: "Mzansi Wallet", - appIcon: Icon( + packageName: "Mzansi Wallet", + packageIcon: Icon( MihIcons.mzansiWallet, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), // size: widget.packageSize, ), iconSize: widget.packageSize, - textColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + textColor: MihColors.secondary(), ); } } diff --git a/mih_ui/lib/mih_packages/mzansi_wallet/package_tools/mih_card_favourites.dart b/mih_ui/lib/mih_packages/mzansi_wallet/package_tools/mih_card_favourites.dart index 9e5a0f62..667fd64a 100644 --- a/mih_ui/lib/mih_packages/mzansi_wallet/package_tools/mih_card_favourites.dart +++ b/mih_ui/lib/mih_packages/mzansi_wallet/package_tools/mih_card_favourites.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_wallet_provider.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; import 'package:mzansi_innovation_hub/mih_objects/loyalty_card.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart'; import 'package:provider/provider.dart'; @@ -33,6 +33,7 @@ class _MihCardFavouritesState extends State { @override Widget build(BuildContext context) { return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(), ); diff --git a/mih_ui/lib/mih_packages/mzansi_wallet/package_tools/mih_cards.dart b/mih_ui/lib/mih_packages/mzansi_wallet/package_tools/mih_cards.dart index 3fa5eae6..bc10d4ad 100644 --- a/mih_ui/lib/mih_packages/mzansi_wallet/package_tools/mih_cards.dart +++ b/mih_ui/lib/mih_packages/mzansi_wallet/package_tools/mih_cards.dart @@ -1,11 +1,7 @@ import 'package:flutter_speed_dial/flutter_speed_dial.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_wallet_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_wallet/components/mih_add_card_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_floating_menu.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_search_bar.dart'; import 'package:mzansi_innovation_hub/mih_objects/loyalty_card.dart'; import 'package:mzansi_innovation_hub/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart'; import 'package:flutter/material.dart'; @@ -93,6 +89,7 @@ class _MihCardsState extends State { final Size size = MediaQuery.sizeOf(context); final double width = size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(width), ); @@ -119,10 +116,8 @@ class _MihCardsState extends State { hintText: "Search Cards", // prefixIcon: Icons.search, prefixIcon: Icons.search, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - hintColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + hintColor: MihColors.primary(), onPrefixIconTap: () { // print("Search Icon Pressed: ${cardSearchController.text}"); }, @@ -154,23 +149,15 @@ class _MihCardsState extends State { SpeedDialChild( child: Icon( Icons.add, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), label: "Add Loyalty Card", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + backgroundColor: MihColors.green(), onTap: () { addCardWindow(context, width); }, diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_manager/list_builders/build_mih_patient_search_list.dart b/mih_ui/lib/mih_packages/patient_manager/pat_manager/list_builders/build_mih_patient_search_list.dart index 10c97f4d..588869ad 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_manager/list_builders/build_mih_patient_search_list.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_manager/list_builders/build_mih_patient_search_list.dart @@ -1,16 +1,12 @@ import 'package:go_router/go_router.dart'; import 'package:ken_logger/ken_logger.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_access_controls_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_patient_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:flutter/material.dart'; @@ -138,10 +134,8 @@ class _BuildPatientsListState extends State { windowBody: Column( children: [ MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: idController, multiLineInput: false, requiredText: true, @@ -153,10 +147,8 @@ class _BuildPatientsListState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: fnameController, multiLineInput: false, requiredText: true, @@ -168,10 +160,8 @@ class _BuildPatientsListState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: lnameController, multiLineInput: false, requiredText: true, @@ -183,10 +173,8 @@ class _BuildPatientsListState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: accessStatusController, multiLineInput: false, requiredText: true, @@ -207,18 +195,14 @@ class _BuildPatientsListState extends State { "Important Notice: Requesting Patient Profile Access", style: TextStyle( fontWeight: FontWeight.bold, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.red(), ), ), Text( "You are about to request access to a patient's profile. Please be aware of the following important points:", style: TextStyle( fontWeight: FontWeight.normal, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.red(), ), ), SizedBox( @@ -227,9 +211,7 @@ class _BuildPatientsListState extends State { "1. Permanent Access: Once the patient accepts your access request, it will become permanent.", style: TextStyle( fontWeight: FontWeight.normal, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.red(), ), ), ), @@ -239,9 +221,7 @@ class _BuildPatientsListState extends State { "2. Shared Information: Any updates you make to the patient's profile will be visible to others who have access to the profile.", style: TextStyle( fontWeight: FontWeight.normal, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.red(), ), ), ), @@ -251,9 +231,7 @@ class _BuildPatientsListState extends State { "3. Irreversible Access: Once granted, you cannot revoke your access to the patient's profile.", style: TextStyle( fontWeight: FontWeight.normal, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.red(), ), ), ), @@ -261,9 +239,7 @@ class _BuildPatientsListState extends State { "By pressing the \"Request Access\" button you accept the above terms.\n", style: TextStyle( fontWeight: FontWeight.bold, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.red(), ), ), ], @@ -313,16 +289,12 @@ class _BuildPatientsListState extends State { ); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "View Profile", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -353,16 +325,12 @@ class _BuildPatientsListState extends State { refreshMyPatientList( profileProvider, patientManagerProvider); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Request Access", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -391,16 +359,12 @@ class _BuildPatientsListState extends State { refreshMyPatientList( profileProvider, patientManagerProvider); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Re-apply", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -438,8 +402,7 @@ class _BuildPatientsListState extends State { // "$firstLetterFName$fnameStar $firstLetterLName$lnameStar", "${patientManagerProvider.patientSearchResults[index].first_name} ${patientManagerProvider.patientSearchResults[index].last_name}", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), const SizedBox( @@ -447,8 +410,7 @@ class _BuildPatientsListState extends State { ), Icon( Icons.star_border_rounded, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ], ); @@ -457,8 +419,7 @@ class _BuildPatientsListState extends State { // "$firstLetterFName$fnameStar $firstLetterLName$lnameStar", "${patientManagerProvider.patientSearchResults[index].first_name} ${patientManagerProvider.patientSearchResults[index].last_name}", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ); } @@ -488,8 +449,7 @@ class _BuildPatientsListState extends State { subtitle: Text( "ID No.: $displayedIdNo\nMedical Aid No.: $medAidNoStar", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), onTap: () { @@ -505,8 +465,7 @@ class _BuildPatientsListState extends State { }, trailing: Icon( Icons.arrow_forward, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ); } else { @@ -515,8 +474,7 @@ class _BuildPatientsListState extends State { subtitle: Text( "ID No.: $displayedIdNo\nMedical Aid No.: $medAidNoStar", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), onTap: () { @@ -531,8 +489,7 @@ class _BuildPatientsListState extends State { }, trailing: Icon( Icons.add, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ); } @@ -560,8 +517,7 @@ class _BuildPatientsListState extends State { return ListView.separated( separatorBuilder: (BuildContext context, index) { return Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ); }, itemCount: patientManagerProvider.patientSearchResults.length, diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_manager/list_builders/build_my_patient_list_list.dart b/mih_ui/lib/mih_packages/patient_manager/pat_manager/list_builders/build_my_patient_list_list.dart index 14760a10..80f36c0b 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_manager/list_builders/build_my_patient_list_list.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_manager/list_builders/build_my_patient_list_list.dart @@ -1,20 +1,14 @@ import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_patient_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_calendar_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_user_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_date_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_time_field.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; @@ -84,15 +78,13 @@ class _BuildPatientsListState extends State { lnameController.clear(); }); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), elevation: 10, width: 300, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -144,10 +136,8 @@ class _BuildPatientsListState extends State { formKey: _formKey, formFields: [ MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: idController, multiLineInput: false, requiredText: true, @@ -159,10 +149,8 @@ class _BuildPatientsListState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: fnameController, multiLineInput: false, requiredText: true, @@ -174,10 +162,8 @@ class _BuildPatientsListState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: lnameController, multiLineInput: false, requiredText: true, @@ -221,16 +207,12 @@ class _BuildPatientsListState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Book Appointment", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -305,10 +287,8 @@ class _BuildPatientsListState extends State { child: Column( children: [ MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: idController, multiLineInput: false, requiredText: true, @@ -320,10 +300,8 @@ class _BuildPatientsListState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: fnameController, multiLineInput: false, requiredText: true, @@ -335,10 +313,8 @@ class _BuildPatientsListState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: lnameController, multiLineInput: false, requiredText: true, @@ -362,16 +338,12 @@ class _BuildPatientsListState extends State { appointmentPopUp(profileProvider, patientManagerProvider, index, width); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Book Appointment", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -387,16 +359,12 @@ class _BuildPatientsListState extends State { 'patientManagerPatient', ); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.secondary(), width: 300, child: Text( "View Medical Records", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -430,38 +398,28 @@ class _BuildPatientsListState extends State { firstName = patientManagerProvider.myPaitentList![index].fname; lastName = patientManagerProvider.myPaitentList![index].lname; accessWithColour = TextSpan( - text: "$access\n", - style: TextStyle( - color: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"))); + text: "$access\n", style: TextStyle(color: MihColors.green())); } else if (access == "PENDING") { firstName = "${patientManagerProvider.myPaitentList![index].fname[0]}********"; lastName = "${patientManagerProvider.myPaitentList![index].lname[0]}********"; accessWithColour = TextSpan( - text: "$access\n", - style: TextStyle( - color: MihColors.getGreyColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"))); + text: "$access\n", style: TextStyle(color: MihColors.grey())); } else { firstName = "${patientManagerProvider.myPaitentList![index].fname[0]}********"; lastName = "${patientManagerProvider.myPaitentList![index].lname[0]}********"; - accessWithColour = TextSpan( - text: "$access\n", - style: TextStyle( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"))); + accessWithColour = + TextSpan(text: "$access\n", style: TextStyle(color: MihColors.red())); } return ListTile( title: Text( "$firstName $lastName", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), subtitle: RichText( @@ -497,8 +455,7 @@ class _BuildPatientsListState extends State { }, trailing: Icon( Icons.arrow_forward, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ); } @@ -527,8 +484,7 @@ class _BuildPatientsListState extends State { return ListView.separated( separatorBuilder: (BuildContext context, index) { return Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ); }, itemCount: patientManagerProvider.myPaitentList!.length, diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_manager/package_tiles/pat_manager_tile.dart b/mih_ui/lib/mih_packages/patient_manager/pat_manager/package_tiles/pat_manager_tile.dart index 5179a99f..e037b3f8 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_manager/package_tiles/pat_manager_tile.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_manager/package_tiles/pat_manager_tile.dart @@ -1,10 +1,7 @@ import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tile.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; class PatManagerTile extends StatefulWidget { final PatManagerArguments arguments; @@ -33,16 +30,14 @@ class _PatManagerTileState extends State { // arguments: widget.arguments, // ); }, - appName: "Patient Manager", - appIcon: Icon( + packageName: "Patient Manager", + packageIcon: Icon( MihIcons.patientManager, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), // size: widget.packageSize, ), iconSize: widget.packageSize, - textColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + textColor: MihColors.secondary(), ); } } diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_manager/package_tools/mih_patient_search.dart b/mih_ui/lib/mih_packages/patient_manager/pat_manager/package_tools/mih_patient_search.dart index 1a1e3a50..48d5dfc8 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_manager/package_tools/mih_patient_search.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_manager/package_tools/mih_patient_search.dart @@ -1,10 +1,6 @@ -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_patient_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_search_bar.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_objects/patient_access.dart'; import 'package:mzansi_innovation_hub/mih_objects/patients.dart'; @@ -40,10 +36,8 @@ class _MihPatientSearchState extends State { controller: _mihPatientSearchController, hintText: "Search Patient ID/ Aid No.", prefixIcon: Icons.search, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - hintColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + hintColor: MihColors.primary(), onPrefixIconTap: () { submitPatientSearch(patientManagerProvider); }, @@ -94,8 +88,7 @@ class _MihPatientSearchState extends State { Icon( MihIcons.iDontKnow, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( @@ -105,8 +98,7 @@ class _MihPatientSearchState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), ], @@ -122,8 +114,7 @@ class _MihPatientSearchState extends State { Icon( MihIcons.patientProfile, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( @@ -133,8 +124,7 @@ class _MihPatientSearchState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), const SizedBox(height: 25), @@ -145,8 +135,7 @@ class _MihPatientSearchState extends State { style: TextStyle( fontSize: 20, fontWeight: FontWeight.normal, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), children: [ TextSpan( @@ -206,6 +195,7 @@ class _MihPatientSearchState extends State { final Size size = MediaQuery.sizeOf(context); final double width = size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, innerHorizontalPadding: 10, bodyItem: getPatientSearch(width), diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_manager/package_tools/my_patient_list.dart b/mih_ui/lib/mih_packages/patient_manager/pat_manager/package_tools/my_patient_list.dart index e1cbd787..64559db8 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_manager/package_tools/my_patient_list.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_manager/package_tools/my_patient_list.dart @@ -1,11 +1,7 @@ -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_patient_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_search_bar.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_objects/patient_access.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_manager/list_builders/build_my_patient_list_list.dart'; @@ -39,10 +35,8 @@ class _MyPatientListState extends State { controller: _myPatientSearchController, hintText: "Search Patient ID", prefixIcon: Icons.search, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - hintColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + hintColor: MihColors.primary(), onPrefixIconTap: () { setState(() async { _myPatientIdSearchString = _myPatientSearchController.text; @@ -78,8 +72,7 @@ class _MyPatientListState extends State { Icon( MihIcons.iDontKnow, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( @@ -89,8 +82,7 @@ class _MyPatientListState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), ], @@ -106,8 +98,7 @@ class _MyPatientListState extends State { Icon( MihIcons.patientProfile, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( @@ -117,8 +108,7 @@ class _MyPatientListState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), const SizedBox(height: 25), @@ -129,8 +119,7 @@ class _MyPatientListState extends State { style: TextStyle( fontSize: 20, fontWeight: FontWeight.normal, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), children: [ TextSpan(text: "Press "), @@ -139,9 +128,7 @@ class _MyPatientListState extends State { child: Icon( Icons.search, size: 20, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), TextSpan( @@ -162,7 +149,7 @@ class _MyPatientListState extends State { // "No Patients matching search", // style: TextStyle( // fontSize: 25, - // color: MihColors.getGreyColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark")), + // color: MihColors.grey()), // textAlign: TextAlign.center, // ), // ), @@ -210,6 +197,7 @@ class _MyPatientListState extends State { builder: (BuildContext context, MzansiProfileProvider profileProvider, PatientManagerProvider patientManagerProvider, Widget? child) { return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, innerHorizontalPadding: 10, bodyItem: diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_manager/package_tools/waiting_room.dart b/mih_ui/lib/mih_packages/patient_manager/pat_manager/package_tools/waiting_room.dart index d447f76c..b93eceee 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_manager/package_tools/waiting_room.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_manager/package_tools/waiting_room.dart @@ -1,24 +1,14 @@ import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_calendar_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_calendar_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_calendar.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_date_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_floating_menu.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_time_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_objects/appointment.dart'; import 'package:mzansi_innovation_hub/mih_packages/calendar/builder/build_appointment_list.dart'; @@ -82,7 +72,7 @@ class _WaitingRoomState extends State { }); }), // Divider( - // color: MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // color: MihColors.secondary(), // ), displayAppointmentList(mihCalendarProvider) ], @@ -97,21 +87,15 @@ class _WaitingRoomState extends State { SpeedDialChild( child: Icon( Icons.add, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), label: "Add Appointment", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { // addAppointmentWindow(); appointmentTypeSelection(profileProvider, @@ -151,8 +135,7 @@ class _WaitingRoomState extends State { Icon( MihIcons.calendar, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( @@ -162,8 +145,7 @@ class _WaitingRoomState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), const SizedBox(height: 25), @@ -174,8 +156,7 @@ class _WaitingRoomState extends State { style: TextStyle( fontSize: 20, fontWeight: FontWeight.normal, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), children: [ TextSpan(text: "Press "), @@ -184,9 +165,7 @@ class _WaitingRoomState extends State { child: Icon( Icons.menu, size: 20, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), TextSpan( @@ -209,7 +188,7 @@ class _WaitingRoomState extends State { // "No Appointments for $selectedDay", // style: TextStyle( // fontSize: 25, - // color: MihColors.getGreyColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // color: MihColors.grey(), // ), // textAlign: TextAlign.center, // softWrap: true, @@ -245,10 +224,7 @@ class _WaitingRoomState extends State { children: [ Text( question, - style: TextStyle( - fontSize: 20, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark")), + style: TextStyle(fontSize: 20, color: MihColors.secondary()), textAlign: TextAlign.left, ), const SizedBox(height: 15), @@ -257,14 +233,12 @@ class _WaitingRoomState extends State { patientManagerProvider.setPatientManagerIndex(1); context.pop(); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), width: 300, child: Text( "Existing Patient", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -276,14 +250,12 @@ class _WaitingRoomState extends State { patientManagerProvider.setPatientManagerIndex(2); context.pop(); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), width: 300, child: Text( "Existing MIH User", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -296,14 +268,12 @@ class _WaitingRoomState extends State { addAppointmentWindow( profileProvider, mihCalendarProvider, width); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), width: 300, child: Text( "Skeleton Appointment", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -344,12 +314,8 @@ class _WaitingRoomState extends State { formKey: _formKey, formFields: [ MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _appointmentTitleController, multiLineInput: false, requiredText: true, @@ -379,12 +345,8 @@ class _WaitingRoomState extends State { const SizedBox(height: 10), MihTextFormField( height: 250, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _appointmentDescriptionIDController, multiLineInput: true, requiredText: true, @@ -404,16 +366,12 @@ class _WaitingRoomState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Add", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -476,15 +434,13 @@ class _WaitingRoomState extends State { _appointmentDescriptionIDController.clear(); }); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), elevation: 10, width: 300, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -551,6 +507,7 @@ class _WaitingRoomState extends State { Widget build(BuildContext context) { double screenWidth = MediaQuery.of(context).size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBusinessAppointmentsTool(screenWidth), ); diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_manager/pat_manager.dart b/mih_ui/lib/mih_packages/patient_manager/pat_manager/pat_manager.dart index 0ac192b0..1afeea8e 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_manager/pat_manager.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_manager/pat_manager.dart @@ -1,8 +1,5 @@ import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_calendar_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; @@ -85,11 +82,11 @@ class _PatManagerState extends State { ); } return MihPackage( - appActionButton: getActionButton(), - appTools: getTools(), - appBody: getToolBody(), - appToolTitles: getToolTitle(), - selectedbodyIndex: + packageActionButton: getActionButton(), + packageTools: getTools(), + packageToolBodies: getToolBody(), + packageToolTitles: getToolTitle(), + selectedBodyIndex: context.watch().patientManagerIndex, onIndexChange: (newValue) { context @@ -135,7 +132,7 @@ class _PatManagerState extends State { }; return MihPackageTools( tools: temp, - selcetedIndex: + selectedIndex: context.watch().patientManagerIndex, ); } diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/components/claim_statement_window.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/components/claim_statement_window.dart index b70857df..47132ca3 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/components/claim_statement_window.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/components/claim_statement_window.dart @@ -1,19 +1,12 @@ +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_claim_statement_generation_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_icd10_code_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_date_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_radio_options.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_search_bar.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/icd10_code.dart.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_profile/components/icd10_search_window.dart'; @@ -88,10 +81,8 @@ class _ClaimStatementWindowState extends State { MihRadioOptions( controller: _docTypeController, hintText: "Document Type", - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - secondaryFillColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + secondaryFillColor: MihColors.primary(), requiredText: true, radioOptions: const ["Claim", "Statement"], ), @@ -103,16 +94,11 @@ class _ClaimStatementWindowState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), - Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark")), + Divider(color: MihColors.secondary()), const SizedBox(height: 10), MihDateField( controller: _serviceDateController, @@ -126,10 +112,8 @@ class _ClaimStatementWindowState extends State { MihRadioOptions( controller: _serviceDescController, hintText: "Serviced Description", - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - secondaryFillColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + secondaryFillColor: MihColors.primary(), requiredText: true, radioOptions: const [ "Consultation", @@ -154,16 +138,8 @@ class _ClaimStatementWindowState extends State { 'consultation_type_dropdown'), controller: _serviceDescOptionsController, hintText: "Consultation Type", - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - secondaryFillColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + fillColor: MihColors.secondary(), + secondaryFillColor: MihColors.primary(), requiredText: true, radioOptions: const [ "General Consultation", @@ -184,16 +160,8 @@ class _ClaimStatementWindowState extends State { MihTextFormField( key: const ValueKey( 'procedure_name_field'), // Added key - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _prcedureNameController, multiLineInput: false, requiredText: true, @@ -206,16 +174,8 @@ class _ClaimStatementWindowState extends State { MihTextFormField( key: const ValueKey( 'procedure_additional_info_field'), // Added key - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _proceedureAdditionalInfoController, multiLineInput: false, requiredText: true, @@ -235,16 +195,8 @@ class _ClaimStatementWindowState extends State { MihTextFormField( key: const ValueKey( 'other_service_description_field'), // Added key - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _serviceDescOptionsController, multiLineInput: false, requiredText: true, @@ -272,9 +224,7 @@ class _ClaimStatementWindowState extends State { style: TextStyle( fontSize: 18, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), )), ), const SizedBox(height: 4), @@ -282,12 +232,8 @@ class _ClaimStatementWindowState extends State { controller: _icd10CodeController, hintText: "ICD-10 Search", prefixIcon: Icons.search, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - hintColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + hintColor: MihColors.primary(), onPrefixIconTap: () { MIHIcd10CodeApis.getIcd10Codes( _icd10CodeController.text, context) @@ -304,10 +250,8 @@ class _ClaimStatementWindowState extends State { ), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _amountController, multiLineInput: false, requiredText: true, @@ -325,22 +269,15 @@ class _ClaimStatementWindowState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), - Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark")), + Divider(color: MihColors.secondary()), const SizedBox(height: 10), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: _preauthNoController, multiLineInput: false, requiredText: false, @@ -394,16 +331,12 @@ class _ClaimStatementWindowState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Generate", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/components/icd10_search_window.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/components/icd10_search_window.dart index 59d25a3b..c92764f0 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/components/icd10_search_window.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/components/icd10_search_window.dart @@ -1,8 +1,5 @@ -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; import 'package:mzansi_innovation_hub/mih_objects/icd10_code.dart.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_profile/list_builders/build_icd10_code_list.dart'; import 'package:flutter/material.dart'; @@ -25,10 +22,8 @@ class _ICD10SearchWindowState extends State { return Column( children: [ MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: widget.icd10CodeController, multiLineInput: false, requiredText: true, @@ -42,15 +37,12 @@ class _ICD10SearchWindowState extends State { Text( "Search for ICD-10 Codes", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 25, fontWeight: FontWeight.bold, ), ), - Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark")), + Divider(color: MihColors.secondary()), BuildICD10CodeList( icd10CodeController: widget.icd10CodeController, icd10codeList: widget.icd10codeList, diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/components/medicine_search.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/components/medicine_search.dart index ab3a5d0d..61c6ce6b 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/components/medicine_search.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/components/medicine_search.dart @@ -1,6 +1,5 @@ import 'dart:convert'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_objects/medicine.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_profile/list_builders/build_med_list.dart'; diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/components/mih_edit_patient_details_window.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/components/mih_edit_patient_details_window.dart index afbada89..87585aca 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/components/mih_edit_patient_details_window.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/components/mih_edit_patient_details_window.dart @@ -1,14 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_toggle.dart'; import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_patient_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; @@ -84,15 +79,13 @@ class _MihEditPatientDetailsWindowState context.pop(); context.pop(); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), elevation: 10, width: 300, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -124,22 +117,16 @@ class _MihEditPatientDetailsWindowState style: TextStyle( fontWeight: FontWeight.bold, fontSize: 25.0, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ], ), - Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark")), + Divider(color: MihColors.secondary()), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: idController, multiLineInput: false, requiredText: true, @@ -150,10 +137,8 @@ class _MihEditPatientDetailsWindowState ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: fnameController, multiLineInput: false, requiredText: true, @@ -165,10 +150,8 @@ class _MihEditPatientDetailsWindowState ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: lnameController, multiLineInput: false, requiredText: true, @@ -180,10 +163,8 @@ class _MihEditPatientDetailsWindowState ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: cellController, multiLineInput: false, requiredText: true, @@ -194,10 +175,8 @@ class _MihEditPatientDetailsWindowState ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: emailController, multiLineInput: false, requiredText: true, @@ -210,10 +189,8 @@ class _MihEditPatientDetailsWindowState const SizedBox(height: 10.0), MihTextFormField( height: 100, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: addressController, multiLineInput: true, requiredText: true, @@ -230,23 +207,17 @@ class _MihEditPatientDetailsWindowState style: TextStyle( fontWeight: FontWeight.bold, fontSize: 25.0, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), - Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark")), + Divider(color: MihColors.secondary()), const SizedBox(height: 10.0), MihToggle( hintText: "Medical Aid", initialPostion: medAidPosition, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - secondaryFillColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + secondaryFillColor: MihColors.primary(), onChange: (value) { if (value) { setState(() { @@ -272,12 +243,8 @@ class _MihEditPatientDetailsWindowState MihToggle( hintText: "Main Member", initialPostion: medMainMemberPosition, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - secondaryFillColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + secondaryFillColor: MihColors.primary(), onChange: (value) { if (value) { setState(() { @@ -294,12 +261,8 @@ class _MihEditPatientDetailsWindowState ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: medNoController, multiLineInput: false, requiredText: true, @@ -314,12 +277,8 @@ class _MihEditPatientDetailsWindowState ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: medAidCodeController, multiLineInput: false, requiredText: true, @@ -334,12 +293,8 @@ class _MihEditPatientDetailsWindowState ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: medNameController, multiLineInput: false, requiredText: true, @@ -354,12 +309,8 @@ class _MihEditPatientDetailsWindowState ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: medSchemeController, multiLineInput: false, requiredText: true, @@ -388,15 +339,12 @@ class _MihEditPatientDetailsWindowState MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Update", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/components/prescip_input.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/components/prescip_input.dart index cde00c8e..ebd1c9b8 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/components/prescip_input.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/components/prescip_input.dart @@ -1,15 +1,9 @@ import 'dart:convert'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_numeric_stepper.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_search_bar.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_profile/components/medicine_search.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; @@ -337,9 +331,7 @@ class _PrescripInputState extends State { style: TextStyle( fontSize: 18, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), @@ -348,10 +340,8 @@ class _PrescripInputState extends State { controller: widget.medicineController, hintText: "Search Medicine", prefixIcon: Icons.search, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - hintColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + hintColor: MihColors.primary(), onPrefixIconTap: () { getMedsPopUp(widget.medicineController); }, @@ -365,10 +355,8 @@ class _PrescripInputState extends State { const SizedBox(height: 10.0), MihNumericStepper( controller: widget.dosageController, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), hintText: "Dosage", requiredText: true, minValue: 1, @@ -378,10 +366,8 @@ class _PrescripInputState extends State { const SizedBox(height: 10.0), MihNumericStepper( controller: widget.timesDailyController, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), hintText: "Times Daily", requiredText: true, minValue: 1, @@ -391,10 +377,8 @@ class _PrescripInputState extends State { const SizedBox(height: 10.0), MihNumericStepper( controller: widget.noDaysController, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), hintText: "No. Days", requiredText: true, minValue: 1, @@ -404,10 +388,8 @@ class _PrescripInputState extends State { const SizedBox(height: 10.0), MihNumericStepper( controller: widget.noRepeatsController, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), hintText: "No.Repeats", requiredText: true, minValue: 0, @@ -436,14 +418,12 @@ class _PrescripInputState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), width: 300, child: Text( "Add", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -463,13 +443,9 @@ class _PrescripInputState extends State { width: 550, height: 325, decoration: BoxDecoration( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), borderRadius: BorderRadius.circular(25.0), - border: Border.all( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - width: 3.0), + border: Border.all(color: MihColors.secondary(), width: 3.0), ), child: ListView.separated( separatorBuilder: (BuildContext context, int index) { @@ -485,23 +461,20 @@ class _PrescripInputState extends State { title: Text( getPerscTitle(index), style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), subtitle: Text( getPerscSubtitle(index), style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), //onTap: () {}, trailing: IconButton( icon: Icon( Icons.delete_forever_outlined, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), onPressed: () { setState(() { @@ -523,14 +496,12 @@ class _PrescripInputState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Generate", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_claim_statement_files_list.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_claim_statement_files_list.dart index 115c6963..59e75895 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_claim_statement_files_list.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_claim_statement_files_list.dart @@ -3,15 +3,12 @@ import 'dart:async'; import 'package:fl_downloader/fl_downloader.dart'; import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_file_viewer_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_profile/list_builders/build_file_view.dart'; @@ -102,19 +99,15 @@ class _BuildClaimStatementFileListState SpeedDialChild( child: Icon( Icons.download, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Download", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { if (MzansiInnovationHub.of(context)!.theme.getPlatform() == "Web") { html.window.open(url, 'download'); @@ -128,19 +121,15 @@ class _BuildClaimStatementFileListState SpeedDialChild( child: Icon( Icons.print, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Print", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { printDocument(url, filePath); }, @@ -150,19 +139,15 @@ class _BuildClaimStatementFileListState SpeedDialChild( child: Icon( Icons.fullscreen, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Full Screen", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { context.pop(); context.pushNamed( @@ -178,19 +163,15 @@ class _BuildClaimStatementFileListState SpeedDialChild( child: Icon( Icons.delete, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Delete Document", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { // deleteFilePopUp(filePath, fileID); }, @@ -268,8 +249,7 @@ class _BuildClaimStatementFileListState return ListView.separated( separatorBuilder: (BuildContext context, int index) { return Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ); }, itemCount: patientManagerProvider.patientClaimsDocuments!.length, @@ -278,28 +258,25 @@ class _BuildClaimStatementFileListState leading: Icon( Icons.picture_as_pdf, size: 50, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.red(), ), title: Text( patientManagerProvider .patientClaimsDocuments![index].file_name, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), subtitle: Text( patientManagerProvider .patientClaimsDocuments![index].insert_date, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), // trailing: Icon( // Icons.arrow_forward, - // color: MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // color: MihColors.secondary(), // ), onTap: () async { MihFileViewerProvider fileViewerProvider = @@ -341,16 +318,12 @@ class _BuildClaimStatementFileListState Icon( MihIcons.mihRing, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), Icon( Icons.file_open_outlined, size: 110, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ], ), @@ -365,9 +338,7 @@ class _BuildClaimStatementFileListState style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), @@ -383,9 +354,7 @@ class _BuildClaimStatementFileListState style: TextStyle( fontSize: 20, fontWeight: FontWeight.normal, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), children: [ TextSpan(text: "Press "), @@ -394,9 +363,7 @@ class _BuildClaimStatementFileListState child: Icon( Icons.menu, size: 20, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), TextSpan(text: " to generate the first document"), diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_file_view.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_file_view.dart index e78add87..bff48e71 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_file_view.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_file_view.dart @@ -1,9 +1,7 @@ import 'dart:async'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:syncfusion_flutter_core/theme.dart'; import 'package:syncfusion_flutter_pdfviewer/pdfviewer.dart'; import 'package:http/http.dart' as http; @@ -118,8 +116,7 @@ class _BuildFileViewState extends State { height: 500, child: SfPdfViewerTheme( data: SfPdfViewerThemeData( - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.primary(), ), child: SfPdfViewer.network( widget.link, diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_files_list.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_files_list.dart index b491aa73..3df70904 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_files_list.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_files_list.dart @@ -5,15 +5,12 @@ import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:go_router/go_router.dart'; import 'package:ken_logger/ken_logger.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_file_viewer_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_profile/list_builders/build_file_view.dart'; @@ -95,19 +92,15 @@ class _BuildFilesListState extends State { SpeedDialChild( child: Icon( Icons.download, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Download", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { if (MzansiInnovationHub.of(context)!.theme.getPlatform() == "Web") { html.window.open(url, 'download'); @@ -122,19 +115,15 @@ class _BuildFilesListState extends State { SpeedDialChild( child: Icon( Icons.print, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Print", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { printDocument(url, filePath); }, @@ -145,19 +134,15 @@ class _BuildFilesListState extends State { SpeedDialChild( child: Icon( Icons.fullscreen, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Full Screen", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { context.pop(); context.pushNamed( @@ -172,19 +157,15 @@ class _BuildFilesListState extends State { SpeedDialChild( child: Icon( Icons.delete, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Delete Document", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { // deleteFilePopUp(filePath, fileID); }, @@ -225,43 +206,37 @@ class _BuildFilesListState extends State { return Icon( Icons.picture_as_pdf, size: 50, - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.red(), ); case ("jpeg"): return Icon( FontAwesomeIcons.image, size: 50, - color: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.green(), ); case ("jpg"): return Icon( FontAwesomeIcons.image, size: 50, - color: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.green(), ); case ("png"): return Icon( FontAwesomeIcons.image, size: 50, - color: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.green(), ); case ("gif"): return Icon( FontAwesomeIcons.image, size: 50, - color: MihColors.getOrangeColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.orange(), ); default: return Icon( Icons.image_not_supported, size: 50, - color: MihColors.getSilverColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.silver(), ); } } @@ -301,8 +276,7 @@ class _BuildFilesListState extends State { return ListView.separated( separatorBuilder: (BuildContext context, int index) { return Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ); }, itemCount: patientManagerProvider.patientDocuments!.length, @@ -318,20 +292,18 @@ class _BuildFilesListState extends State { title: Text( patientManagerProvider.patientDocuments![index].file_name, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), subtitle: Text( patientManagerProvider.patientDocuments![index].insert_date, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), // trailing: Icon( // Icons.arrow_forward, - // color: MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // color: MihColors.secondary(), // ), onTap: () async { MihFileViewerProvider fileViewerProvider = @@ -369,16 +341,12 @@ class _BuildFilesListState extends State { Icon( MihIcons.mihRing, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), Icon( Icons.file_present, size: 110, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ], ), @@ -390,8 +358,7 @@ class _BuildFilesListState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), const SizedBox(height: 25), @@ -402,9 +369,7 @@ class _BuildFilesListState extends State { style: TextStyle( fontSize: 20, fontWeight: FontWeight.normal, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), children: [ TextSpan(text: "Press "), @@ -413,9 +378,7 @@ class _BuildFilesListState extends State { child: Icon( Icons.menu, size: 20, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), TextSpan(text: " to add "), diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_icd10_code_list.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_icd10_code_list.dart index dfc7cf16..4f873414 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_icd10_code_list.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_icd10_code_list.dart @@ -1,5 +1,4 @@ -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_objects/icd10_code.dart.dart'; import 'package:flutter/material.dart'; @@ -30,8 +29,7 @@ class _BuildPatientsListState extends State { title: Text( title, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), subtitle: RichText( @@ -63,8 +61,7 @@ class _BuildPatientsListState extends State { shrinkWrap: true, separatorBuilder: (BuildContext context, index) { return Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ); }, itemCount: widget.icd10codeList.length, diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_med_list.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_med_list.dart index 235c4617..12ac9bc5 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_med_list.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_med_list.dart @@ -33,7 +33,7 @@ class _BuildMedicinesListState extends State { return ListView.separated( separatorBuilder: (BuildContext context, int index) { return Divider( - color: MihColors.getSecondaryColor( + color: MihColors.secondary( MzansiInnovationHub.of(context)!.theme.mode == "Dark"), ); }, @@ -44,14 +44,14 @@ class _BuildMedicinesListState extends State { title: Text( widget.medicines[index].name, style: TextStyle( - color: MihColors.getSecondaryColor( + color: MihColors.secondary( MzansiInnovationHub.of(context)!.theme.mode == "Dark"), ), ), subtitle: Text( "${widget.medicines[index].unit} - ${widget.medicines[index].form}", style: TextStyle( - color: MihColors.getSecondaryColor( + color: MihColors.secondary( MzansiInnovationHub.of(context)!.theme.mode == "Dark"), ), ), @@ -64,7 +64,7 @@ class _BuildMedicinesListState extends State { }, trailing: Icon( Icons.arrow_forward, - color: MihColors.getSecondaryColor( + color: MihColors.secondary( MzansiInnovationHub.of(context)!.theme.mode == "Dark"), ), ); diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_notes_list.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_notes_list.dart index 93cefa2d..2c7a2f51 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_notes_list.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_notes_list.dart @@ -1,13 +1,8 @@ import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_objects/notes.dart'; import 'package:flutter/material.dart'; @@ -58,15 +53,13 @@ class _BuildNotesListState extends State { context.pop(); context.pop(); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), elevation: 10, width: 300, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -113,19 +106,15 @@ class _BuildNotesListState extends State { SpeedDialChild( child: Icon( Icons.delete, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Delete Note", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { deletePatientPopUp( patientManagerProvider, selectednote.idpatient_notes); @@ -140,10 +129,8 @@ class _BuildNotesListState extends State { children: [ const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: businessNameController, multiLineInput: false, requiredText: true, @@ -152,10 +139,8 @@ class _BuildNotesListState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: userNameController, multiLineInput: false, requiredText: true, @@ -164,10 +149,8 @@ class _BuildNotesListState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: dateController, multiLineInput: false, requiredText: true, @@ -176,10 +159,8 @@ class _BuildNotesListState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: noteTitleController, multiLineInput: false, requiredText: true, @@ -189,10 +170,8 @@ class _BuildNotesListState extends State { const SizedBox(height: 10.0), MihTextFormField( height: 250, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: noteTextController, multiLineInput: true, requiredText: true, @@ -224,8 +203,7 @@ class _BuildNotesListState extends State { return ListView.separated( separatorBuilder: (BuildContext context, int index) { return Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ); }, itemCount: patientManagerProvider.consultationNotes!.length, @@ -239,27 +217,23 @@ class _BuildNotesListState extends State { leading: Icon( Icons.note, size: 50, - color: MihColors.getGoldColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.gold(), ), title: Text( "${patientManagerProvider.consultationNotes![index].note_name}\n${patientManagerProvider.consultationNotes![index].doc_office} - ${patientManagerProvider.consultationNotes![index].doctor}", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), subtitle: Text( "${patientManagerProvider.consultationNotes![index].insert_date}:\n$notePreview", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), ), //Text(widget.notes[index].note_text), trailing: Icon( Icons.arrow_forward, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), onTap: () { viewNotePopUp( @@ -286,16 +260,12 @@ class _BuildNotesListState extends State { Icon( MihIcons.mihRing, size: 165, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), Icon( Icons.article_outlined, size: 110, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ], ), @@ -311,9 +281,7 @@ class _BuildNotesListState extends State { style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), @@ -329,9 +297,7 @@ class _BuildNotesListState extends State { style: TextStyle( fontSize: 20, fontWeight: FontWeight.normal, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), children: [ TextSpan(text: "Press "), @@ -340,9 +306,7 @@ class _BuildNotesListState extends State { child: Icon( Icons.menu, size: 20, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), TextSpan(text: " to add the first note"), diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tiles/patient_profile_tile.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tiles/patient_profile_tile.dart index a7bc289a..76888c0f 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tiles/patient_profile_tile.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tiles/patient_profile_tile.dart @@ -1,9 +1,6 @@ import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tile.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; import 'package:provider/provider.dart'; @@ -23,23 +20,21 @@ class _PatientProfileTileState extends State { @override Widget build(BuildContext context) { return MihPackageTile( - authenticateUser: true, + // authenticateUser: true, onTap: () async { PatientManagerProvider patManProvider = context.read(); patManProvider.setPersonalMode(true); context.goNamed("patientProfile"); }, - appName: "Patient Profile", - appIcon: Icon( + packageName: "Patient Profile", + packageIcon: Icon( MihIcons.patientProfile, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), // size: widget.packageSize, ), iconSize: widget.packageSize, - textColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + textColor: MihColors.secondary(), ); } } diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_claim_or_statement.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_claim_or_statement.dart index c76e6bd7..ae2bf15d 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_claim_or_statement.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_claim_or_statement.dart @@ -1,10 +1,7 @@ import 'package:flutter_speed_dial/flutter_speed_dial.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_floating_menu.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_profile/components/claim_statement_window.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_profile/list_builders/build_claim_statement_files_list.dart'; import 'package:flutter/material.dart'; @@ -37,6 +34,7 @@ class _PatientClaimOrStatementState extends State { @override Widget build(BuildContext context) { return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(), ); @@ -61,23 +59,15 @@ class _PatientClaimOrStatementState extends State { SpeedDialChild( child: Icon( Icons.add, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), label: "Generate Claim/ Statement", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + backgroundColor: MihColors.green(), onTap: () { claimOrStatementWindow(); }, diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_consultation.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_consultation.dart index 7e784ef1..cae34056 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_consultation.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_consultation.dart @@ -1,19 +1,13 @@ import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:go_router/go_router.dart'; import 'package:ken_logger/ken_logger.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_patient_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_floating_menu.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_profile/list_builders/build_notes_list.dart'; import 'package:flutter/material.dart'; @@ -105,10 +99,8 @@ class _PatientConsultationState extends State { formKey: _formKey, formFields: [ MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: officeController, multiLineInput: false, requiredText: true, @@ -117,10 +109,8 @@ class _PatientConsultationState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: doctorController, multiLineInput: false, requiredText: true, @@ -129,10 +119,8 @@ class _PatientConsultationState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: dateController, multiLineInput: false, requiredText: true, @@ -141,10 +129,8 @@ class _PatientConsultationState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: titleController, multiLineInput: false, requiredText: true, @@ -156,10 +142,8 @@ class _PatientConsultationState extends State { const SizedBox(height: 10.0), MihTextFormField( height: 250, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: noteTextController, multiLineInput: true, requiredText: true, @@ -209,16 +193,12 @@ class _PatientConsultationState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Add Note", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -246,11 +226,9 @@ class _PatientConsultationState extends State { Color getNoteDetailLimitColor() { if (_counter.value <= 512) { - return MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + return MihColors.secondary(); } else { - return MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"); + return MihColors.red(); } } @@ -278,6 +256,7 @@ class _PatientConsultationState extends State { Widget build(BuildContext context) { double screenWidth = MediaQuery.of(context).size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(screenWidth), ); @@ -302,23 +281,15 @@ class _PatientConsultationState extends State { SpeedDialChild( child: Icon( Icons.add, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), label: "Add Note", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + backgroundColor: MihColors.green(), onTap: () { // addConsultationNotePopUp(); addNotePopUp( diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_documents.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_documents.dart index 6f65e00c..c8b83d01 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_documents.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_documents.dart @@ -1,21 +1,13 @@ import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_patient_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_date_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_floating_menu.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_profile/components/prescip_input.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_profile/list_builders/build_files_list.dart'; @@ -158,12 +150,8 @@ class _PatientDocumentsState extends State { children: [ Expanded( child: MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: selectedFileController, hintText: "Selected File", requiredText: true, @@ -192,15 +180,11 @@ class _PatientDocumentsState extends State { selectedFileController.text = selectedFile.name; }); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.secondary(), child: Text( "Attach", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -219,16 +203,12 @@ class _PatientDocumentsState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Add File", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -305,15 +285,12 @@ class _PatientDocumentsState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Generate", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -400,19 +377,15 @@ class _PatientDocumentsState extends State { SpeedDialChild( child: Icon( Icons.attach_file, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Attach Document", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { uploudFilePopUp(patientManagerProvider, width); }, @@ -431,19 +404,15 @@ class _PatientDocumentsState extends State { SpeedDialChild( child: Icon( Icons.attach_file, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Add Document", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { uploudFilePopUp(patientManagerProvider, width); }, @@ -451,19 +420,15 @@ class _PatientDocumentsState extends State { SpeedDialChild( child: Icon( Icons.sick_outlined, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Generate Medical Certificate", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { medCertPopUp(profileProvider, patientManagerProvider); }, @@ -471,19 +436,15 @@ class _PatientDocumentsState extends State { SpeedDialChild( child: Icon( Icons.medication, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), label: "Generate Prescription", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), onTap: () { prescritionPopUp(profileProvider, patientManagerProvider); }, @@ -504,15 +465,13 @@ class _PatientDocumentsState extends State { context.pop(); context.pop(); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), elevation: 10, width: 300, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -553,6 +512,7 @@ class _PatientDocumentsState extends State { Widget build(BuildContext context) { double screenWidth = MediaQuery.of(context).size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, bodyItem: getBody(screenWidth), ); diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_info.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_info.dart index 01a80abd..d16c0973 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_info.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_info.dart @@ -1,15 +1,9 @@ import 'package:flutter_speed_dial/flutter_speed_dial.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_floating_menu.dart'; import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_profile/components/mih_edit_patient_details_window.dart'; import 'package:provider/provider.dart'; @@ -45,29 +39,24 @@ class _PatientInfoState extends State { TextStyle titleStyle = TextStyle( fontSize: 30, fontWeight: FontWeight.bold, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ); TextStyle subtitleStyle = TextStyle( fontSize: 20, fontWeight: FontWeight.normal, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ); TextStyle subtitleHeadingStyle = TextStyle( fontSize: 20, fontWeight: FontWeight.bold, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ); return MihPackageWindow( fullscreen: false, windowTitle: "Patient Details Card", onWindowTapClose: null, - backgroundColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - foregroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.secondary(), + foregroundColor: MihColors.primary(), windowBody: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, @@ -160,29 +149,24 @@ class _PatientInfoState extends State { TextStyle titleStyle = TextStyle( fontSize: 30, fontWeight: FontWeight.bold, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ); TextStyle subtitleStyle = TextStyle( fontSize: 20, fontWeight: FontWeight.normal, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ); TextStyle subtitleHeadingStyle = TextStyle( fontSize: 20, fontWeight: FontWeight.bold, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ); return MihPackageWindow( fullscreen: false, windowTitle: "Medical Aid Card", onWindowTapClose: null, - backgroundColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - foregroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.secondary(), + foregroundColor: MihColors.primary(), windowBody: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, @@ -292,6 +276,7 @@ class _PatientInfoState extends State { Widget build(BuildContext context) { double screenWidth = MediaQuery.of(context).size.width; return MihPackageToolBody( + backgroundColor: MihColors.primary(), borderOn: false, innerHorizontalPadding: 10, bodyItem: getBody(screenWidth), @@ -318,10 +303,8 @@ class _PatientInfoState extends State { editable: false, fileNameController: null, userSelectedfile: null, - frameColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + frameColor: MihColors.secondary(), + backgroundColor: MihColors.primary(), onChange: () {}, ), const SizedBox(height: 10), @@ -344,16 +327,13 @@ class _PatientInfoState extends State { !patientManagerProvider.hidePatientDetails); }, buttonColor: patientManagerProvider.hidePatientDetails - ? MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark") - : MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + ? MihColors.green() + : MihColors.red(), child: Icon( patientManagerProvider.hidePatientDetails ? Icons.visibility : Icons.visibility_off, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), ), ), @@ -369,23 +349,15 @@ class _PatientInfoState extends State { SpeedDialChild( child: Icon( Icons.edit, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), ), label: "Edit Profile", - labelBackgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + labelBackgroundColor: MihColors.green(), labelStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontWeight: FontWeight.bold, ), - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + backgroundColor: MihColors.green(), onTap: () { showEditPatientWindow(); }, diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_setup_form.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_setup_form.dart index 5dda6ece..ce158c01 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_setup_form.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_setup_form.dart @@ -1,13 +1,9 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_text_form_field.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_toggle.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_patient_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; @@ -80,15 +76,13 @@ class _PatientSetupFormState extends State { 'patientProfile', ); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), elevation: 10, width: 300, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -132,25 +126,16 @@ class _PatientSetupFormState extends State { style: TextStyle( fontWeight: FontWeight.bold, fontSize: 25.0, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ], ), - Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark")), + Divider(color: MihColors.secondary()), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: idController, multiLineInput: false, requiredText: true, @@ -161,12 +146,8 @@ class _PatientSetupFormState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: fnameController, multiLineInput: false, requiredText: true, @@ -178,12 +159,8 @@ class _PatientSetupFormState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: lnameController, multiLineInput: false, requiredText: true, @@ -195,12 +172,8 @@ class _PatientSetupFormState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: cellController, multiLineInput: false, requiredText: true, @@ -211,12 +184,8 @@ class _PatientSetupFormState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: emailController, multiLineInput: false, requiredText: true, @@ -229,12 +198,8 @@ class _PatientSetupFormState extends State { const SizedBox(height: 10.0), MihTextFormField( height: 100, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: addressController, multiLineInput: true, requiredText: true, @@ -251,26 +216,17 @@ class _PatientSetupFormState extends State { style: TextStyle( fontWeight: FontWeight.bold, fontSize: 25.0, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), ), ), ), - Divider( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark")), + Divider(color: MihColors.secondary()), const SizedBox(height: 10.0), MihToggle( hintText: "Medical Aid", initialPostion: medAidPosition, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), - secondaryFillColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + fillColor: MihColors.secondary(), + secondaryFillColor: MihColors.primary(), onChange: (value) { if (value) { setState(() { @@ -297,16 +253,8 @@ class _PatientSetupFormState extends State { MihToggle( hintText: "Main Member", initialPostion: medMainMemberPosition, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - secondaryFillColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + fillColor: MihColors.secondary(), + secondaryFillColor: MihColors.primary(), onChange: (value) { if (value) { setState(() { @@ -323,16 +271,8 @@ class _PatientSetupFormState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: medNoController, multiLineInput: false, requiredText: true, @@ -347,16 +287,8 @@ class _PatientSetupFormState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: medAidCodeController, multiLineInput: false, requiredText: true, @@ -371,16 +303,8 @@ class _PatientSetupFormState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: medNameController, multiLineInput: false, requiredText: true, @@ -395,16 +319,8 @@ class _PatientSetupFormState extends State { ), const SizedBox(height: 10.0), MihTextFormField( - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), - inputColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"), + fillColor: MihColors.secondary(), + inputColor: MihColors.primary(), controller: medSchemeController, multiLineInput: false, requiredText: true, @@ -434,16 +350,12 @@ class _PatientSetupFormState extends State { MihAlertServices().inputErrorAlert(context); } }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, child: Text( "Add", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/patient_profile.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/patient_profile.dart index 2bcf7265..d9ee04aa 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/patient_profile.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/patient_profile.dart @@ -1,9 +1,6 @@ import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_profile/package_tools/patient_claim_or_statement.dart'; @@ -107,11 +104,11 @@ class _PatientProfileState extends State { ); } return MihPackage( - appActionButton: getAction(), - appTools: getTools(), - appBody: getToolBody(), - appToolTitles: getToolTitle(), - selectedbodyIndex: + packageActionButton: getAction(), + packageTools: getTools(), + packageToolBodies: getToolBody(), + packageToolTitles: getToolTitle(), + selectedBodyIndex: context.watch().patientProfileIndex, onIndexChange: (newValue) { context @@ -162,7 +159,7 @@ class _PatientProfileState extends State { }; return MihPackageTools( tools: temp, - selcetedIndex: patientManagerProvider.patientProfileIndex, + selectedIndex: patientManagerProvider.patientProfileIndex, ); } diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/patient_set_up.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/patient_set_up.dart index bafd272e..c0a0921d 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/patient_set_up.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/patient_set_up.dart @@ -1,8 +1,6 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_profile/package_tools/patient_setup_form.dart'; import 'package:provider/provider.dart'; @@ -26,11 +24,11 @@ class _PatientSetUpState extends State { @override Widget build(BuildContext context) { return MihPackage( - appActionButton: getAction(), - appTools: getTools(), - appBody: getToolBody(), - appToolTitles: getToolTitle(), - selectedbodyIndex: + packageActionButton: getAction(), + packageTools: getTools(), + packageToolBodies: getToolBody(), + packageToolTitles: getToolTitle(), + selectedBodyIndex: context.watch().patientProfileIndex, onIndexChange: (newValue) { context.read().setPatientProfileIndex(newValue); @@ -60,7 +58,7 @@ class _PatientSetUpState extends State { }; return MihPackageTools( tools: temp, - selcetedIndex: patientManagerProvider.patientProfileIndex, + selectedIndex: patientManagerProvider.patientProfileIndex, ); } diff --git a/mih_ui/lib/mih_providers/mzansi_ai_provider.dart b/mih_ui/lib/mih_providers/mzansi_ai_provider.dart index 19d00ae7..57ba3280 100644 --- a/mih_ui/lib/mih_providers/mzansi_ai_provider.dart +++ b/mih_ui/lib/mih_providers/mzansi_ai_provider.dart @@ -1,10 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_ai_toolkit/flutter_ai_toolkit.dart'; import 'package:flutter_markdown_plus/flutter_markdown_plus.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_providers/ollama_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; class MzansiAiProvider extends ChangeNotifier { @@ -121,27 +119,24 @@ class MzansiAiProvider extends ChangeNotifier { MarkdownStyleSheet getLlmChatMarkdownStyle(BuildContext context) { TextStyle body = TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 16, fontWeight: FontWeight.w400, ); TextStyle heading1 = TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 24, fontWeight: FontWeight.w400, ); TextStyle heading2 = TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.w400, ); TextStyle code = TextStyle( color: Colors.black, - // MihColors.getBluishPurpleColor( - // MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // MihColors.bluishPurple( + // ), fontSize: 16, fontWeight: FontWeight.w700, ); @@ -152,8 +147,7 @@ class MzansiAiProvider extends ChangeNotifier { bottomLeft: Radius.circular(10), bottomRight: Radius.circular(10), ), - color: MihColors.getSilverColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + color: MihColors.silver(), boxShadow: [ BoxShadow( color: Colors.black.withAlpha(76), @@ -187,73 +181,57 @@ class MzansiAiProvider extends ChangeNotifier { LlmChatViewStyle? getChatStyle(BuildContext context) { return LlmChatViewStyle( - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - progressIndicatorColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.primary(), + progressIndicatorColor: MihColors.primary(), disabledButtonStyle: ActionButtonStyle( icon: MihIcons.mzansiAi, - iconColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + iconColor: MihColors.secondary(), iconDecoration: BoxDecoration( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), borderRadius: BorderRadius.circular(25), ), ), recordButtonStyle: ActionButtonStyle( - iconColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + iconColor: MihColors.primary(), iconDecoration: BoxDecoration( - color: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.green(), borderRadius: BorderRadius.circular(25), ), textStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), ), submitButtonStyle: ActionButtonStyle( icon: Icons.send, - iconColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + iconColor: MihColors.primary(), iconDecoration: BoxDecoration( - color: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.green(), borderRadius: BorderRadius.circular(25), ), textStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), ), stopButtonStyle: ActionButtonStyle( - iconColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + iconColor: MihColors.primary(), iconDecoration: BoxDecoration( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.red(), borderRadius: BorderRadius.circular(25), ), textStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), ), actionButtonBarDecoration: BoxDecoration( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), borderRadius: BorderRadius.circular(25), ), // Mzansi AI Chat Style llmMessageStyle: LlmMessageStyle( icon: MihIcons.mzansiAi, - iconColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + iconColor: MihColors.primary(), iconDecoration: BoxDecoration( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), borderRadius: BorderRadius.circular(25), ), decoration: BoxDecoration( @@ -262,8 +240,7 @@ class MzansiAiProvider extends ChangeNotifier { bottomLeft: Radius.circular(25), bottomRight: Radius.circular(25), ), - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), boxShadow: [ BoxShadow( color: Colors.black.withAlpha(76), @@ -282,8 +259,7 @@ class MzansiAiProvider extends ChangeNotifier { bottomLeft: Radius.circular(25), bottomRight: Radius.circular(25), ), - color: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.green(), boxShadow: [ BoxShadow( color: Colors.black.withAlpha(76), @@ -294,17 +270,14 @@ class MzansiAiProvider extends ChangeNotifier { ), textStyle: TextStyle( fontSize: 16, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), ), // User Input Style chatInputStyle: ChatInputStyle( - backgroundColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.primary(), decoration: BoxDecoration( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), borderRadius: BorderRadius.circular(25), boxShadow: [ BoxShadow( @@ -315,8 +288,7 @@ class MzansiAiProvider extends ChangeNotifier { ], ), hintStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), hintText: "Ask Mzansi AI...", ), @@ -328,8 +300,7 @@ class MzansiAiProvider extends ChangeNotifier { bottomLeft: Radius.circular(25), bottomRight: Radius.circular(25), ), - color: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.green(), boxShadow: [ BoxShadow( color: Colors.black.withAlpha(76), @@ -339,46 +310,36 @@ class MzansiAiProvider extends ChangeNotifier { ], ), textStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), ), copyButtonStyle: ActionButtonStyle( - iconColor: MihColors.getSecondaryInvertedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + iconColor: MihColors.secondaryInverted(), ), editButtonStyle: ActionButtonStyle( - iconColor: MihColors.getSecondaryInvertedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + iconColor: MihColors.secondaryInverted(), ), cancelButtonStyle: ActionButtonStyle( iconDecoration: BoxDecoration( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.red(), borderRadius: BorderRadius.circular(25), ), - iconColor: MihColors.getSecondaryInvertedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + iconColor: MihColors.secondaryInverted(), textStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), ), addButtonStyle: ActionButtonStyle( iconDecoration: BoxDecoration( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), borderRadius: BorderRadius.circular(25), ), - iconColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + iconColor: MihColors.primary(), textStyle: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), ), - menuColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + menuColor: MihColors.secondary(), ); } } diff --git a/mih_ui/lib/mih_services/mih_access_controls_services.dart b/mih_ui/lib/mih_services/mih_access_controls_services.dart index ba2ad08f..91382954 100644 --- a/mih_ui/lib/mih_services/mih_access_controls_services.dart +++ b/mih_ui/lib/mih_services/mih_access_controls_services.dart @@ -1,10 +1,10 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/patient_access.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_providers/mih_access_controlls_provider.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; diff --git a/mih_ui/lib/mih_services/mih_alert_services.dart b/mih_ui/lib/mih_services/mih_alert_services.dart index f00481ec..d885aa19 100644 --- a/mih_ui/lib/mih_services/mih_alert_services.dart +++ b/mih_ui/lib/mih_services/mih_alert_services.dart @@ -3,11 +3,8 @@ import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; class MihAlertServices { double getPadingBasedOnScreenWidth(BuildContext context) { @@ -32,8 +29,7 @@ class MihAlertServices { fullscreen: false, windowTitle: null, onWindowTapClose: null, - backgroundColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + backgroundColor: MihColors.red(), windowBody: MihSingleChildScroll( scrollbarOn: true, child: Column( @@ -41,17 +37,14 @@ class MihAlertServices { Icon( Icons.warning_amber_rounded, size: 150, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), Center( child: Text( "Internet Connection Lost!", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -61,9 +54,7 @@ class MihAlertServices { Text( "We seem to be having some trouble connecting you to the internet. This could be due to a temporary outage or an issue with your device's connection.", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 18, fontWeight: FontWeight.bold, ), @@ -73,16 +64,13 @@ class MihAlertServices { onPressed: () { context.pop(); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), width: 300, elevation: 10, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -110,8 +98,7 @@ class MihAlertServices { fullscreen: false, windowTitle: null, onWindowTapClose: null, - backgroundColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + backgroundColor: MihColors.red(), windowBody: MihSingleChildScroll( scrollbarOn: true, child: Column( @@ -119,17 +106,14 @@ class MihAlertServices { Icon( Icons.warning_amber_rounded, size: 150, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), Center( child: Text( "Location Services Not Enabled", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -141,9 +125,7 @@ class MihAlertServices { ? "To get the most out of MIH, we need your location. Please go to your System Settings and enable location services. Once you do that, we can start showing you relevant information based on your location." : "To get the most out of MIH, we need your location. Please go to the site settings of the app and enable location services. Once you do that, we can start showing you relevant information based on your location.", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 18, fontWeight: FontWeight.bold, ), @@ -153,16 +135,13 @@ class MihAlertServices { onPressed: () { context.pop(); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), width: 300, elevation: 10, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -190,8 +169,7 @@ class MihAlertServices { fullscreen: false, windowTitle: null, onWindowTapClose: null, - backgroundColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + backgroundColor: MihColors.red(), windowBody: MihSingleChildScroll( scrollbarOn: true, child: Column( @@ -199,17 +177,14 @@ class MihAlertServices { Icon( Icons.warning_amber_rounded, size: 150, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), Center( child: Text( "Oops! Looks like some fields are missing.", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -219,9 +194,7 @@ class MihAlertServices { Text( "We noticed that some required fields are still empty. To ensure your request is processed smoothly, please fill out all the highlighted fields before submitting the form again.", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 18, fontWeight: FontWeight.bold, ), @@ -230,9 +203,7 @@ class MihAlertServices { RichText( text: TextSpan( style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 15, fontWeight: FontWeight.bold, ), @@ -241,21 +212,12 @@ class MihAlertServices { text: "Here's a quick tip: ", style: TextStyle( fontStyle: FontStyle.italic, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"))), + color: MihColors.secondary())), const TextSpan( text: "Look for fields with an asterisk ("), TextSpan( text: "*", - style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"))), + style: TextStyle(color: MihColors.secondary())), const TextSpan( text: ") next to them, as these are mandatory."), ], @@ -266,16 +228,13 @@ class MihAlertServices { onPressed: () { context.pop(); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), width: 300, elevation: 10, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -303,8 +262,7 @@ class MihAlertServices { fullscreen: false, windowTitle: null, onWindowTapClose: null, - backgroundColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + backgroundColor: MihColors.red(), windowBody: MihSingleChildScroll( scrollbarOn: true, child: Column( @@ -312,17 +270,14 @@ class MihAlertServices { Icon( Icons.warning_amber_rounded, size: 150, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), Center( child: Text( "Password Doesn't Meet Requirements", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -332,9 +287,7 @@ class MihAlertServices { Text( "Oops! Your password doesn't quite meet our standards. To keep your account secure, please make sure your password meets the following requirements", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 18, fontWeight: FontWeight.bold, ), @@ -343,9 +296,7 @@ class MihAlertServices { RichText( text: TextSpan( style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 15.0, fontWeight: FontWeight.bold, ), @@ -355,11 +306,7 @@ class MihAlertServices { style: TextStyle( fontStyle: FontStyle.italic, fontSize: 20, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)! - .theme - .mode == - "Dark"))), + color: MihColors.secondary())), const TextSpan( text: "1) Contailes at least 8 characters\n", ), @@ -385,16 +332,13 @@ class MihAlertServices { onPressed: () { context.pop(); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), width: 300, elevation: 10, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -422,8 +366,7 @@ class MihAlertServices { fullscreen: false, windowTitle: null, onWindowTapClose: null, - backgroundColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + backgroundColor: MihColors.red(), windowBody: MihSingleChildScroll( scrollbarOn: true, child: Column( @@ -431,17 +374,14 @@ class MihAlertServices { Icon( Icons.warning_amber_rounded, size: 150, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), Center( child: Text( "Passwords Don't Match", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -451,9 +391,7 @@ class MihAlertServices { Text( "The password and confirm password fields do not match. Please make sure they are identical.", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 18, fontWeight: FontWeight.bold, ), @@ -463,16 +401,13 @@ class MihAlertServices { onPressed: () { context.pop(); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), width: 300, elevation: 10, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -500,8 +435,7 @@ class MihAlertServices { fullscreen: false, windowTitle: null, onWindowTapClose: null, - backgroundColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + backgroundColor: MihColors.red(), windowBody: MihSingleChildScroll( scrollbarOn: true, child: Column( @@ -509,17 +443,14 @@ class MihAlertServices { Icon( Icons.warning_amber_rounded, size: 150, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), Center( child: Text( "Uh oh! Login attempt unsuccessful.", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -529,9 +460,7 @@ class MihAlertServices { Text( "The email address or password you entered doesn't seem to match our records. Please double-check your information and try again.", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 18, fontWeight: FontWeight.bold, ), @@ -541,9 +470,7 @@ class MihAlertServices { "Here are some things to keep in mind:", textAlign: TextAlign.left, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 18.0, fontWeight: FontWeight.bold, ), @@ -553,9 +480,7 @@ class MihAlertServices { "1) Are you sure you're using the correct email address associated with your account?\n2) Is your caps lock key on? Passwords are case-sensitive.\n3) If you've forgotten your password, no worries! Click on \"Forgot Password?\" to reset it.", textAlign: TextAlign.left, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 15.0, fontWeight: FontWeight.bold, ), @@ -565,16 +490,13 @@ class MihAlertServices { onPressed: () { context.pop(); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), width: 300, elevation: 10, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -602,8 +524,7 @@ class MihAlertServices { fullscreen: false, windowTitle: null, onWindowTapClose: null, - backgroundColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + backgroundColor: MihColors.red(), windowBody: MihSingleChildScroll( scrollbarOn: true, child: Column( @@ -611,17 +532,14 @@ class MihAlertServices { Icon( Icons.warning_amber_rounded, size: 150, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), Center( child: Text( "Email Already Exists", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -631,9 +549,7 @@ class MihAlertServices { Text( "It looks like that email is already registered. Please sign in or try a different email.", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 18, fontWeight: FontWeight.bold, ), @@ -643,16 +559,13 @@ class MihAlertServices { onPressed: () { context.pop(); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), width: 300, elevation: 10, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -680,8 +593,7 @@ class MihAlertServices { fullscreen: false, windowTitle: null, onWindowTapClose: null, - backgroundColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + backgroundColor: MihColors.red(), windowBody: MihSingleChildScroll( scrollbarOn: true, child: Column( @@ -689,17 +601,14 @@ class MihAlertServices { Icon( Icons.warning_amber_rounded, size: 150, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), Center( child: Text( "Oops! Invalid Email", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -709,9 +618,7 @@ class MihAlertServices { Text( "Looks like there's a little hiccup with that email address. Please double-check that you've entered it correctly, including the \"@\" symbol and a domain (like example@email.com).", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 18, fontWeight: FontWeight.bold, ), @@ -721,16 +628,13 @@ class MihAlertServices { onPressed: () { context.pop(); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), width: 300, elevation: 10, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -758,8 +662,7 @@ class MihAlertServices { fullscreen: false, windowTitle: null, onWindowTapClose: null, - backgroundColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.secondary(), windowBody: MihSingleChildScroll( scrollbarOn: true, child: Column( @@ -767,17 +670,14 @@ class MihAlertServices { Icon( Icons.warning_amber_rounded, size: 150, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), Center( child: Text( title, textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -787,9 +687,7 @@ class MihAlertServices { Text( message, style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 18, fontWeight: FontWeight.bold, ), @@ -799,16 +697,13 @@ class MihAlertServices { onPressed: () { context.pop(); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), width: 300, elevation: 10, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -841,8 +736,7 @@ class MihAlertServices { fullscreen: false, windowTitle: null, onWindowTapClose: null, - backgroundColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.secondary(), windowBody: MihSingleChildScroll( scrollbarOn: true, child: Column( @@ -850,17 +744,14 @@ class MihAlertServices { Icon( Icons.warning_amber_rounded, size: 150, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), Center( child: Text( title, textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -870,9 +761,7 @@ class MihAlertServices { Text( message, style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 18, fontWeight: FontWeight.bold, ), @@ -912,8 +801,7 @@ class MihAlertServices { fullscreen: false, windowTitle: null, onWindowTapClose: null, - backgroundColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + backgroundColor: MihColors.red(), windowBody: MihSingleChildScroll( scrollbarOn: true, child: Column( @@ -921,17 +809,14 @@ class MihAlertServices { Icon( Icons.warning_amber_rounded, size: 150, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), Center( child: Text( "Are You Sure?", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -941,9 +826,7 @@ class MihAlertServices { Text( message, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 18, fontWeight: FontWeight.bold, ), @@ -956,17 +839,13 @@ class MihAlertServices { children: [ MihButton( onPressed: onpressed, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.secondary(), width: 300, elevation: 10, child: Text( "Delete", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -976,17 +855,13 @@ class MihAlertServices { onPressed: () { context.pop(); }, - buttonColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.green(), width: 300, elevation: 10, child: Text( "Cancel", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -1020,8 +895,7 @@ class MihAlertServices { fullscreen: false, windowTitle: null, onWindowTapClose: null, - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), windowBody: MihSingleChildScroll( scrollbarOn: true, child: Column( @@ -1029,16 +903,13 @@ class MihAlertServices { Icon( Icons.check_circle_outline_rounded, size: 150, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), Text( title, textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -1048,9 +919,7 @@ class MihAlertServices { child: Text( message, style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 18, fontWeight: FontWeight.bold, ), @@ -1061,16 +930,13 @@ class MihAlertServices { onPressed: () { context.pop(); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), width: 300, elevation: 10, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -1103,8 +969,7 @@ class MihAlertServices { fullscreen: false, windowTitle: null, onWindowTapClose: null, - backgroundColor: MihColors.getGreenColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.green(), windowBody: MihSingleChildScroll( scrollbarOn: true, child: Column( @@ -1112,16 +977,13 @@ class MihAlertServices { Icon( Icons.check_circle_outline_rounded, size: 150, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), Text( title, textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -1131,9 +993,7 @@ class MihAlertServices { child: Text( message, style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 18, fontWeight: FontWeight.bold, ), @@ -1174,8 +1034,7 @@ class MihAlertServices { fullscreen: false, windowTitle: null, onWindowTapClose: null, - backgroundColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + backgroundColor: MihColors.red(), windowBody: MihSingleChildScroll( scrollbarOn: true, child: Column( @@ -1183,16 +1042,13 @@ class MihAlertServices { Icon( Icons.warning_amber_rounded, size: 150, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), Text( title, textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -1202,9 +1058,7 @@ class MihAlertServices { child: Text( message, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 18, fontWeight: FontWeight.bold, ), @@ -1216,17 +1070,13 @@ class MihAlertServices { onPressed: () { context.pop(); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + buttonColor: MihColors.secondary(), width: 300, elevation: 10, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -1260,8 +1110,7 @@ class MihAlertServices { fullscreen: false, windowTitle: null, onWindowTapClose: null, - backgroundColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode != "Dark"), + backgroundColor: MihColors.red(), windowBody: MihSingleChildScroll( scrollbarOn: true, child: Column( @@ -1269,16 +1118,13 @@ class MihAlertServices { Icon( Icons.warning_amber_rounded, size: 150, - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), ), Text( title, textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -1288,9 +1134,7 @@ class MihAlertServices { child: Text( message, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == - "Dark"), + color: MihColors.secondary(), fontSize: 18, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_services/mih_authentication_services.dart b/mih_ui/lib/mih_services/mih_authentication_services.dart index 08b59175..9945dcf1 100644 --- a/mih_ui/lib/mih_services/mih_authentication_services.dart +++ b/mih_ui/lib/mih_services/mih_authentication_services.dart @@ -3,11 +3,7 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:supertokens_flutter/http.dart' as http; @@ -119,23 +115,20 @@ class MihAuthenticationServices { fullscreen: false, windowTitle: null, onWindowTapClose: null, - backgroundColor: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + backgroundColor: MihColors.red(), windowBody: Column( children: [ Icon( Icons.warning_amber_rounded, size: 100, - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), ), Center( child: Text( "Email Already Exists", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 25, fontWeight: FontWeight.bold, ), @@ -145,8 +138,7 @@ class MihAuthenticationServices { Text( "Here are some things to keep in mind:", style: TextStyle( - color: MihColors.getRedColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.red(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -156,8 +148,7 @@ class MihAuthenticationServices { "1) Are you sure you're using the correct email address associated with your account?\n2) Is your caps lock key on? Passwords are case-sensitive.\n3) If you've forgotten your password, no worries! Click on \"Forgot Password?\" to reset it.", textAlign: TextAlign.left, style: TextStyle( - color: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.secondary(), fontSize: 15.0, fontWeight: FontWeight.bold, ), @@ -167,15 +158,13 @@ class MihAuthenticationServices { onPressed: () { context.pop(); }, - buttonColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.secondary(), width: 300, elevation: 10, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/lib/mih_services/mih_business_details_services.dart b/mih_ui/lib/mih_services/mih_business_details_services.dart index f0791454..4fae7dc1 100644 --- a/mih_ui/lib/mih_services/mih_business_details_services.dart +++ b/mih_ui/lib/mih_services/mih_business_details_services.dart @@ -2,8 +2,8 @@ import 'dart:convert'; import 'package:go_router/go_router.dart'; import 'package:http/http.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:flutter/material.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; diff --git a/mih_ui/lib/mih_services/mih_business_employee_services.dart b/mih_ui/lib/mih_services/mih_business_employee_services.dart index 72484693..2895e0c0 100644 --- a/mih_ui/lib/mih_services/mih_business_employee_services.dart +++ b/mih_ui/lib/mih_services/mih_business_employee_services.dart @@ -2,9 +2,9 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/business_employee.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:supertokens_flutter/http.dart' as http; diff --git a/mih_ui/lib/mih_services/mih_claim_statement_generation_services.dart b/mih_ui/lib/mih_services/mih_claim_statement_generation_services.dart index 9b705d35..6e0fe0c5 100644 --- a/mih_ui/lib/mih_services/mih_claim_statement_generation_services.dart +++ b/mih_ui/lib/mih_services/mih_claim_statement_generation_services.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_objects/claim_statement_file.dart'; import 'package:flutter/material.dart'; diff --git a/mih_ui/lib/mih_services/mih_file_services.dart b/mih_ui/lib/mih_services/mih_file_services.dart index 9dd0c8a8..76ebf19a 100644 --- a/mih_ui/lib/mih_services/mih_file_services.dart +++ b/mih_ui/lib/mih_services/mih_file_services.dart @@ -1,11 +1,10 @@ import 'dart:convert'; import 'dart:io'; - import 'package:file_picker/file_picker.dart'; import 'package:flutter/foundation.dart'; import 'package:go_router/go_router.dart'; import 'package:ken_logger/ken_logger.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:flutter/material.dart'; import 'package:supertokens_flutter/http.dart' as http; diff --git a/mih_ui/lib/mih_services/mih_icd10_code_services.dart b/mih_ui/lib/mih_services/mih_icd10_code_services.dart index 8f6ac599..05f955b6 100644 --- a/mih_ui/lib/mih_services/mih_icd10_code_services.dart +++ b/mih_ui/lib/mih_services/mih_icd10_code_services.dart @@ -1,7 +1,7 @@ import 'dart:convert'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/icd10_code.dart.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:flutter/material.dart'; import 'package:supertokens_flutter/http.dart' as http; diff --git a/mih_ui/lib/mih_services/mih_my_business_user_services.dart b/mih_ui/lib/mih_services/mih_my_business_user_services.dart index 4c738694..b7eee4e8 100644 --- a/mih_ui/lib/mih_services/mih_my_business_user_services.dart +++ b/mih_ui/lib/mih_services/mih_my_business_user_services.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:go_router/go_router.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/business_user.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:flutter/material.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; diff --git a/mih_ui/lib/mih_services/mih_mzansi_calendar_services.dart b/mih_ui/lib/mih_services/mih_mzansi_calendar_services.dart index 255ee4c0..d1ad09c1 100644 --- a/mih_ui/lib/mih_services/mih_mzansi_calendar_services.dart +++ b/mih_ui/lib/mih_services/mih_mzansi_calendar_services.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/appointment.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; diff --git a/mih_ui/lib/mih_services/mih_mzansi_wallet_services.dart b/mih_ui/lib/mih_services/mih_mzansi_wallet_services.dart index 39013ba7..c2fcd967 100644 --- a/mih_ui/lib/mih_services/mih_mzansi_wallet_services.dart +++ b/mih_ui/lib/mih_services/mih_mzansi_wallet_services.dart @@ -2,9 +2,9 @@ import 'dart:convert'; import 'package:go_router/go_router.dart'; import 'package:ken_logger/ken_logger.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/loyalty_card.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:flutter/material.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_wallet_provider.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; diff --git a/mih_ui/lib/mih_services/mih_user_services.dart b/mih_ui/lib/mih_services/mih_user_services.dart index d92c8295..6abf2e8c 100644 --- a/mih_ui/lib/mih_services/mih_user_services.dart +++ b/mih_ui/lib/mih_services/mih_user_services.dart @@ -1,12 +1,9 @@ import 'dart:convert'; import 'package:go_router/go_router.dart'; import 'package:ken_logger/ken_logger.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:flutter/material.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; @@ -281,15 +278,13 @@ class MihUserServices { extra: true, ); }, - buttonColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + buttonColor: MihColors.primary(), elevation: 10, width: 300, child: Text( "Dismiss", style: TextStyle( - color: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), diff --git a/mih_ui/macos/Runner.xcodeproj/project.pbxproj b/mih_ui/macos/Runner.xcodeproj/project.pbxproj index 23af1321..1307415f 100644 --- a/mih_ui/macos/Runner.xcodeproj/project.pbxproj +++ b/mih_ui/macos/Runner.xcodeproj/project.pbxproj @@ -473,7 +473,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_packageIcon_NAME = packageIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; CODE_SIGN_STYLE = Automatic; @@ -599,7 +599,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_packageIcon_NAME = packageIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; CODE_SIGN_STYLE = Automatic; @@ -619,7 +619,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_packageIcon_NAME = packageIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; CODE_SIGN_STYLE = Automatic; diff --git a/mih_ui/pubspec.lock b/mih_ui/pubspec.lock index a253f2b4..61e2e9d3 100644 --- a/mih_ui/pubspec.lock +++ b/mih_ui/pubspec.lock @@ -34,13 +34,13 @@ packages: source: hosted version: "2.0.3" app_settings: - dependency: "direct main" + dependency: transitive description: name: app_settings - sha256: "3e46c561441e5820d3a25339bf8b51b9e45a5f686873851a20c257a530917795" + sha256: "64d50e666fd96ae90301bf71205f05019286f940ad6f5fed3d1be19c6af7546a" url: "https://pub.dev" source: hosted - version: "6.1.1" + version: "7.0.0" archive: dependency: transitive description: @@ -1216,6 +1216,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.16.0" + mih_package_toolkit: + dependency: "direct main" + description: + name: mih_package_toolkit + sha256: "24810eef0f6ac5f6a810493bead9ce2fb835c165b0a83fda26fd9f4b40f176fd" + url: "https://pub.dev" + source: hosted + version: "0.0.1" mime: dependency: transitive description: diff --git a/mih_ui/pubspec.yaml b/mih_ui/pubspec.yaml index 2614956c..e9249728 100644 --- a/mih_ui/pubspec.yaml +++ b/mih_ui/pubspec.yaml @@ -14,6 +14,7 @@ dependencies: sdk: flutter flutter_dotenv: ^6.0.0 + mih_package_toolkit: ^0.0.1 cupertino_icons: ^1.0.8 font_awesome_flutter: ^10.7.0 # firebase_core: ^4.4.0 @@ -46,7 +47,7 @@ dependencies: flutter_tts: ^4.2.3 flutter_speed_dial: ^7.0.0 share_plus: ^11.0.0 - app_settings: ^6.1.1 + #app_settings: ^6.1.1 pwa_install: ^0.0.6 google_mobile_ads: ^6.0.0 gma_mediation_meta: ^1.4.1 -- 2.52.0 From e5ce03e3963335ad0f41427952293923ebe91c1c Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Fri, 20 Mar 2026 12:04:18 +0200 Subject: [PATCH 02/26] migrate to mih_package_tooklit --- .../Example/package_test.dart | 1 + .../lib/mih_packages/about_mih/about_mih.dart | 1 + .../access_review/mih_access.dart | 1 + .../package_tile/mih_access_tile.dart | 5 +- .../calculator/mih_calculator.dart | 1 + .../calendar/mzansi_calendar.dart | 1 + .../mih_auth_forgot_password.dart | 1 + .../mih_auth_password_reset.dart | 1 + .../mih_authentication.dart | 1 + .../components/mih_print_prevew.dart | 1 + .../mih_file_viewer/mih_fle_viewer.dart | 1 + .../lib/mih_packages/mih_home/mih_home.dart | 47 +++++-------------- .../mih_packages/mih_home/mih_home_error.dart | 2 +- .../mih_home/mih_route_error.dart | 1 + .../mine_sweeper/mih_mine_sweeper.dart | 1 + .../lib/mih_packages/mzansi_ai/mzansi_ai.dart | 1 + .../mzansi_ai/package_tools/mih_ai_chat.dart | 1 - .../mzansi_directory/mzansi_directory.dart | 1 + .../business_profile/busines_profile.dart | 1 + .../mzansi_business_profile_view.dart | 1 + .../mzansi_set_up_business_profile.dart | 1 + .../personal_profile/mzansi_profile.dart | 1 + .../personal_profile/mzansi_profile_view.dart | 1 + .../mzansi_wallet/mih_wallet.dart | 1 + .../pat_manager/pat_manager.dart | 1 + .../list_builders/build_med_list.dart | 11 ++--- .../package_tiles/patient_profile_tile.dart | 2 +- .../pat_profile/patient_profile.dart | 1 + .../pat_profile/patient_set_up.dart | 1 + mih_ui/pubspec.lock | 4 +- mih_ui/pubspec.yaml | 2 +- 31 files changed, 47 insertions(+), 50 deletions(-) diff --git a/mih_ui/lib/mih_package_components/Example/package_test.dart b/mih_ui/lib/mih_package_components/Example/package_test.dart index 11ae238f..8d886a1c 100644 --- a/mih_ui/lib/mih_package_components/Example/package_test.dart +++ b/mih_ui/lib/mih_package_components/Example/package_test.dart @@ -41,6 +41,7 @@ class _PackageTestState extends State { MihPackageAction getAction() { return MihPackageAction( + iconColor: MihColors.secondary(), icon: const Icon(Icons.arrow_back), iconSize: 35, onTap: () { diff --git a/mih_ui/lib/mih_packages/about_mih/about_mih.dart b/mih_ui/lib/mih_packages/about_mih/about_mih.dart index 6f1b9995..cfdb07ef 100644 --- a/mih_ui/lib/mih_packages/about_mih/about_mih.dart +++ b/mih_ui/lib/mih_packages/about_mih/about_mih.dart @@ -49,6 +49,7 @@ class _AboutMihState extends State { MihPackageAction getAction() { return MihPackageAction( icon: const Icon(Icons.arrow_back), + iconColor: MihColors.secondary(), iconSize: 35, onTap: () { context.goNamed( diff --git a/mih_ui/lib/mih_packages/access_review/mih_access.dart b/mih_ui/lib/mih_packages/access_review/mih_access.dart index f44e3dfc..3cd085a1 100644 --- a/mih_ui/lib/mih_packages/access_review/mih_access.dart +++ b/mih_ui/lib/mih_packages/access_review/mih_access.dart @@ -72,6 +72,7 @@ class _MihAccessState extends State { MihPackageAction getAction() { return MihPackageAction( icon: const Icon(Icons.arrow_back), + iconColor: MihColors.secondary(), iconSize: 35, onTap: () { context.goNamed( diff --git a/mih_ui/lib/mih_packages/access_review/package_tile/mih_access_tile.dart b/mih_ui/lib/mih_packages/access_review/package_tile/mih_access_tile.dart index 81d2489d..2b88cd87 100644 --- a/mih_ui/lib/mih_packages/access_review/package_tile/mih_access_tile.dart +++ b/mih_ui/lib/mih_packages/access_review/package_tile/mih_access_tile.dart @@ -1,9 +1,6 @@ import 'package:go_router/go_router.dart'; -import 'package:mzansi_innovation_hub/main.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tile.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; class MihAccessTile extends StatefulWidget { final double packageSize; diff --git a/mih_ui/lib/mih_packages/calculator/mih_calculator.dart b/mih_ui/lib/mih_packages/calculator/mih_calculator.dart index 8aaa1e8a..62eae5f0 100644 --- a/mih_ui/lib/mih_packages/calculator/mih_calculator.dart +++ b/mih_ui/lib/mih_packages/calculator/mih_calculator.dart @@ -54,6 +54,7 @@ class _MIHCalculatorState extends State { MihPackageAction getAction() { return MihPackageAction( icon: const Icon(Icons.arrow_back), + iconColor: MihColors.secondary(), iconSize: 35, onTap: () { context.goNamed( diff --git a/mih_ui/lib/mih_packages/calendar/mzansi_calendar.dart b/mih_ui/lib/mih_packages/calendar/mzansi_calendar.dart index cbd5064a..fc081065 100644 --- a/mih_ui/lib/mih_packages/calendar/mzansi_calendar.dart +++ b/mih_ui/lib/mih_packages/calendar/mzansi_calendar.dart @@ -72,6 +72,7 @@ class _MzansiCalendarState extends State { MihPackageAction getAction() { return MihPackageAction( icon: const Icon(Icons.arrow_back), + iconColor: MihColors.secondary(), iconSize: 35, onTap: () { context.read().resetSelectedDay(); diff --git a/mih_ui/lib/mih_packages/mih_authentication/mih_auth_forgot_password.dart b/mih_ui/lib/mih_packages/mih_authentication/mih_auth_forgot_password.dart index 3e02452d..dd24169d 100644 --- a/mih_ui/lib/mih_packages/mih_authentication/mih_auth_forgot_password.dart +++ b/mih_ui/lib/mih_packages/mih_authentication/mih_auth_forgot_password.dart @@ -39,6 +39,7 @@ class _MihAuthForgotPasswordState extends State { MihPackageAction getAction() { return MihPackageAction( icon: const Icon(Icons.arrow_back), + iconColor: MihColors.secondary(), iconSize: 35, onTap: () { context.goNamed( diff --git a/mih_ui/lib/mih_packages/mih_authentication/mih_auth_password_reset.dart b/mih_ui/lib/mih_packages/mih_authentication/mih_auth_password_reset.dart index b1aa8dbf..2eaa0d8f 100644 --- a/mih_ui/lib/mih_packages/mih_authentication/mih_auth_password_reset.dart +++ b/mih_ui/lib/mih_packages/mih_authentication/mih_auth_password_reset.dart @@ -45,6 +45,7 @@ class _MihAuthPasswordResetState extends State { padding: const EdgeInsets.only(left: 5.0), child: MihPackageAction( icon: const Icon(MihIcons.mihLogo), + iconColor: MihColors.secondary(), iconSize: 45, onTap: () { context.goNamed( diff --git a/mih_ui/lib/mih_packages/mih_authentication/mih_authentication.dart b/mih_ui/lib/mih_packages/mih_authentication/mih_authentication.dart index 38503d7c..e39e0c04 100644 --- a/mih_ui/lib/mih_packages/mih_authentication/mih_authentication.dart +++ b/mih_ui/lib/mih_packages/mih_authentication/mih_authentication.dart @@ -72,6 +72,7 @@ class _MihAuthenticationState extends State { padding: const EdgeInsets.only(left: 5.0), child: MihPackageAction( icon: const Icon(MihIcons.mihLogo), + iconColor: MihColors.secondary(), iconSize: 45, onTap: () { context.goNamed("aboutMih", extra: true); diff --git a/mih_ui/lib/mih_packages/mih_file_viewer/components/mih_print_prevew.dart b/mih_ui/lib/mih_packages/mih_file_viewer/components/mih_print_prevew.dart index 7ccbc972..5dfdd025 100644 --- a/mih_ui/lib/mih_packages/mih_file_viewer/components/mih_print_prevew.dart +++ b/mih_ui/lib/mih_packages/mih_file_viewer/components/mih_print_prevew.dart @@ -21,6 +21,7 @@ class _MIHPrintPreviewState extends State { icon: const Icon( Icons.close, ), + iconColor: MihColors.secondary(), iconSize: 35, onTap: () { Navigator.pop(context); diff --git a/mih_ui/lib/mih_packages/mih_file_viewer/mih_fle_viewer.dart b/mih_ui/lib/mih_packages/mih_file_viewer/mih_fle_viewer.dart index 19ee777c..562ab835 100644 --- a/mih_ui/lib/mih_packages/mih_file_viewer/mih_fle_viewer.dart +++ b/mih_ui/lib/mih_packages/mih_file_viewer/mih_fle_viewer.dart @@ -35,6 +35,7 @@ class _MihFleViewerState extends State { MihPackageAction getAction() { return MihPackageAction( icon: const Icon(Icons.fullscreen_exit), + iconColor: MihColors.secondary(), iconSize: 35, onTap: () { context.pop(); diff --git a/mih_ui/lib/mih_packages/mih_home/mih_home.dart b/mih_ui/lib/mih_packages/mih_home/mih_home.dart index e99a5261..f4874f95 100644 --- a/mih_ui/lib/mih_packages/mih_home/mih_home.dart +++ b/mih_ui/lib/mih_packages/mih_home/mih_home.dart @@ -1,18 +1,10 @@ import 'package:go_router/go_router.dart'; import 'package:ken_logger/ken_logger.dart'; -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/user_consent.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_action.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tools.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_circle_avatar.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_package_window.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_scack_bar.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_providers/about_mih_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_packages/mih_home/components/mih_app_drawer.dart'; import 'package:mzansi_innovation_hub/mih_packages/mih_home/package_tools/mih_business_home.dart'; import 'package:mzansi_innovation_hub/mih_packages/mih_home/package_tools/mih_personal_home.dart'; @@ -143,18 +135,14 @@ class _MihHomeState extends State { Icon( Icons.policy, size: 150, - color: MihColors.secondary( - , - ), + color: MihColors.secondary(), ), const SizedBox(height: 10), Text( "Welcome to the MIH App", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.secondary( - , - ), + color: MihColors.secondary(), fontSize: 30, fontWeight: FontWeight.bold, ), @@ -164,9 +152,7 @@ class _MihHomeState extends State { "To keep using the MIH app, please take a moment to review and accept our Policies. Our agreements helps us keep things running smoothly and securely.", textAlign: TextAlign.center, style: TextStyle( - color: MihColors.secondary( - , - ), + color: MihColors.secondary(), fontSize: 18, fontWeight: FontWeight.normal, ), @@ -189,15 +175,13 @@ class _MihHomeState extends State { context.goNamed("aboutMih", extra: mzansiProfileProvider.personalHome); }, - buttonColor: MihColors.orange( - ), + buttonColor: MihColors.orange(), elevation: 10, width: 300, child: Text( "Privacy Policy", style: TextStyle( - color: MihColors.primary( - ), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -212,15 +196,13 @@ class _MihHomeState extends State { context.goNamed("aboutMih", extra: mzansiProfileProvider.personalHome); }, - buttonColor: MihColors.yellow( - ), + buttonColor: MihColors.yellow(), elevation: 10, width: 300, child: Text( "Terms of Service", style: TextStyle( - color: MihColors.primary( - ), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -232,15 +214,13 @@ class _MihHomeState extends State { KenLogger.success("Date Time Now: $now"); createOrUpdateAccpetance(mzansiProfileProvider); }, - buttonColor: MihColors.green( - ), + buttonColor: MihColors.green(), elevation: 10, width: 300, child: Text( "Accept", style: TextStyle( - color: MihColors.primary( - ), + color: MihColors.primary(), fontSize: 20, fontWeight: FontWeight.bold, ), @@ -341,6 +321,7 @@ class _MihHomeState extends State { 'business_${mzansiProfileProvider.businessProfilePicUrl}'; } return MihPackageAction( + iconColor: MihColors.secondary(), icon: Padding( padding: const EdgeInsets.only(left: 5.0), child: MihCircleAvatar( @@ -352,10 +333,8 @@ class _MihHomeState extends State { fileNameController: null, userSelectedfile: null, // frameColor: frameColor, - frameColor: MihColors.secondary( - ), - backgroundColor: MihColors.primary( - ), + frameColor: MihColors.secondary(), + backgroundColor: MihColors.primary(), onChange: (_) {}, ), ), diff --git a/mih_ui/lib/mih_packages/mih_home/mih_home_error.dart b/mih_ui/lib/mih_packages/mih_home/mih_home_error.dart index 5e00c901..bd368633 100644 --- a/mih_ui/lib/mih_packages/mih_home/mih_home_error.dart +++ b/mih_ui/lib/mih_packages/mih_home/mih_home_error.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:mih_package_toolkit/mih_package_toolkit.dart'; -import 'package:mzansi_innovation_hub/main.dart'; class MihHomeError extends StatefulWidget { final String errorMessage; @@ -37,6 +36,7 @@ class _MihHomeErrorState extends State { MihPackageAction getErrorAction() { return MihPackageAction( icon: const Icon(Icons.refresh), + iconColor: MihColors.secondary(), iconSize: 35, onTap: () { context.goNamed( diff --git a/mih_ui/lib/mih_packages/mih_home/mih_route_error.dart b/mih_ui/lib/mih_packages/mih_home/mih_route_error.dart index dd75390b..5f6a3caf 100644 --- a/mih_ui/lib/mih_packages/mih_home/mih_route_error.dart +++ b/mih_ui/lib/mih_packages/mih_home/mih_route_error.dart @@ -34,6 +34,7 @@ class _MihRouteErrorState extends State { MihPackageAction getErrorAction() { return MihPackageAction( icon: const Icon(MihIcons.mihLogo), + iconColor: MihColors.secondary(), iconSize: 35, onTap: () { context.goNamed( diff --git a/mih_ui/lib/mih_packages/mine_sweeper/mih_mine_sweeper.dart b/mih_ui/lib/mih_packages/mine_sweeper/mih_mine_sweeper.dart index b9314ee3..aa94c311 100644 --- a/mih_ui/lib/mih_packages/mine_sweeper/mih_mine_sweeper.dart +++ b/mih_ui/lib/mih_packages/mine_sweeper/mih_mine_sweeper.dart @@ -83,6 +83,7 @@ class _MihMineSweeperState extends State { MihPackageAction getAction() { return MihPackageAction( icon: const Icon(Icons.arrow_back), + iconColor: MihColors.secondary(), iconSize: 35, onTap: () { MihMineSweeperProvider mineSweeperProvider = diff --git a/mih_ui/lib/mih_packages/mzansi_ai/mzansi_ai.dart b/mih_ui/lib/mih_packages/mzansi_ai/mzansi_ai.dart index ac3386a3..bb2869a1 100644 --- a/mih_ui/lib/mih_packages/mzansi_ai/mzansi_ai.dart +++ b/mih_ui/lib/mih_packages/mzansi_ai/mzansi_ai.dart @@ -71,6 +71,7 @@ class _MzansiAiState extends State { MihPackageAction getAction() { return MihPackageAction( icon: const Icon(Icons.arrow_back), + iconColor: MihColors.secondary(), iconSize: 35, onTap: () { context.read().setStartUpQuestion(null); diff --git a/mih_ui/lib/mih_packages/mzansi_ai/package_tools/mih_ai_chat.dart b/mih_ui/lib/mih_packages/mzansi_ai/package_tools/mih_ai_chat.dart index 16d71fb3..6c8355ac 100644 --- a/mih_ui/lib/mih_packages/mzansi_ai/package_tools/mih_ai_chat.dart +++ b/mih_ui/lib/mih_packages/mzansi_ai/package_tools/mih_ai_chat.dart @@ -9,7 +9,6 @@ import 'package:flutter_tts/flutter_tts.dart'; import 'package:intl/intl.dart'; import 'package:ken_logger/ken_logger.dart'; import 'package:mih_package_toolkit/mih_package_toolkit.dart'; -import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_ai_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:provider/provider.dart'; diff --git a/mih_ui/lib/mih_packages/mzansi_directory/mzansi_directory.dart b/mih_ui/lib/mih_packages/mzansi_directory/mzansi_directory.dart index 0618248c..45fe97d9 100644 --- a/mih_ui/lib/mih_packages/mzansi_directory/mzansi_directory.dart +++ b/mih_ui/lib/mih_packages/mzansi_directory/mzansi_directory.dart @@ -94,6 +94,7 @@ class _MzansiDirectoryState extends State { MihPackageAction getAction() { return MihPackageAction( icon: const Icon(Icons.arrow_back), + iconColor: MihColors.secondary(), iconSize: 35, onTap: () { MzansiDirectoryProvider directoryProvider = diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/busines_profile.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/busines_profile.dart index 83dcacf9..8360aca3 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/busines_profile.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/busines_profile.dart @@ -87,6 +87,7 @@ class _BusinesProfileState extends State { MihPackageAction getAction() { return MihPackageAction( icon: const Icon(Icons.arrow_back), + iconColor: MihColors.secondary(), iconSize: 35, onTap: () { MzansiProfileProvider mzansiProfileProvider = diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/mzansi_business_profile_view.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/mzansi_business_profile_view.dart index 64dc9f46..8f48de6f 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/mzansi_business_profile_view.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/mzansi_business_profile_view.dart @@ -93,6 +93,7 @@ class _MzansiBusinessProfileViewState extends State { MihPackageAction getAction() { return MihPackageAction( icon: const Icon(Icons.arrow_back), + iconColor: MihColors.secondary(), iconSize: 35, onTap: () { if (!widget.fromMzansiDirectory) { diff --git a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/mzansi_set_up_business_profile.dart b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/mzansi_set_up_business_profile.dart index 9b8b2e42..3ca2d6b1 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/business_profile/mzansi_set_up_business_profile.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/business_profile/mzansi_set_up_business_profile.dart @@ -40,6 +40,7 @@ class _MzansiSetUpBusinessProfileState MihPackageAction getAction() { return MihPackageAction( icon: const Icon(Icons.arrow_back), + iconColor: MihColors.secondary(), iconSize: 35, onTap: () { context.goNamed( diff --git a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile.dart b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile.dart index dd0a7a6c..7a8e7174 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile.dart @@ -74,6 +74,7 @@ class _MzansiProfileState extends State { MihPackageAction getAction() { return MihPackageAction( icon: const Icon(Icons.arrow_back), + iconColor: MihColors.secondary(), iconSize: 35, onTap: () { // Navigator.of(context).pop(); diff --git a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile_view.dart b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile_view.dart index cf01f5e8..1ba2d071 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile_view.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/mzansi_profile_view.dart @@ -41,6 +41,7 @@ class _MzansiProfileViewState extends State { MihPackageAction getAction() { return MihPackageAction( icon: const Icon(Icons.arrow_back), + iconColor: MihColors.secondary(), iconSize: 35, onTap: () { context.pop(); diff --git a/mih_ui/lib/mih_packages/mzansi_wallet/mih_wallet.dart b/mih_ui/lib/mih_packages/mzansi_wallet/mih_wallet.dart index 9083277e..d28e5732 100644 --- a/mih_ui/lib/mih_packages/mzansi_wallet/mih_wallet.dart +++ b/mih_ui/lib/mih_packages/mzansi_wallet/mih_wallet.dart @@ -95,6 +95,7 @@ class _MihWalletState extends State { MihPackageAction getAction() { return MihPackageAction( icon: const Icon(Icons.arrow_back), + iconColor: MihColors.secondary(), iconSize: 35, onTap: () { context.goNamed( diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_manager/pat_manager.dart b/mih_ui/lib/mih_packages/patient_manager/pat_manager/pat_manager.dart index 1afeea8e..d415c8a8 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_manager/pat_manager.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_manager/pat_manager.dart @@ -103,6 +103,7 @@ class _PatManagerState extends State { context.read(); return MihPackageAction( icon: const Icon(Icons.arrow_back), + iconColor: MihColors.secondary(), iconSize: 35, onTap: () { patientManagerProvider.setPatientProfileIndex(0); diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_med_list.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_med_list.dart index 12ac9bc5..732deee4 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_med_list.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/list_builders/build_med_list.dart @@ -1,7 +1,6 @@ -import 'package:mzansi_innovation_hub/main.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/mih_objects/medicine.dart'; import 'package:flutter/material.dart'; -import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; class BuildMedicinesList extends StatefulWidget { final TextEditingController contoller; @@ -34,7 +33,7 @@ class _BuildMedicinesListState extends State { separatorBuilder: (BuildContext context, int index) { return Divider( color: MihColors.secondary( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + ), ); }, itemCount: widget.medicines.length, @@ -45,14 +44,14 @@ class _BuildMedicinesListState extends State { widget.medicines[index].name, style: TextStyle( color: MihColors.secondary( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + ), ), ), subtitle: Text( "${widget.medicines[index].unit} - ${widget.medicines[index].form}", style: TextStyle( color: MihColors.secondary( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + ), ), ), onTap: () { @@ -65,7 +64,7 @@ class _BuildMedicinesListState extends State { trailing: Icon( Icons.arrow_forward, color: MihColors.secondary( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + ), ), ); }, diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tiles/patient_profile_tile.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tiles/patient_profile_tile.dart index 76888c0f..64d02191 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tiles/patient_profile_tile.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/package_tiles/patient_profile_tile.dart @@ -20,7 +20,7 @@ class _PatientProfileTileState extends State { @override Widget build(BuildContext context) { return MihPackageTile( - // authenticateUser: true, + authenticateUser: true, onTap: () async { PatientManagerProvider patManProvider = context.read(); diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/patient_profile.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/patient_profile.dart index d9ee04aa..eeac9acf 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/patient_profile.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/patient_profile.dart @@ -125,6 +125,7 @@ class _PatientProfileState extends State { context.read(); return MihPackageAction( icon: const Icon(Icons.arrow_back), + iconColor: MihColors.secondary(), iconSize: 35, onTap: () { if (!patientManagerProvider.personalMode) { diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/patient_set_up.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/patient_set_up.dart index c0a0921d..4d30d3b9 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/patient_set_up.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/patient_set_up.dart @@ -39,6 +39,7 @@ class _PatientSetUpState extends State { MihPackageAction getAction() { return MihPackageAction( icon: const Icon(Icons.arrow_back), + iconColor: MihColors.secondary(), iconSize: 35, onTap: () { context.goNamed( diff --git a/mih_ui/pubspec.lock b/mih_ui/pubspec.lock index 61e2e9d3..bdeb6cfe 100644 --- a/mih_ui/pubspec.lock +++ b/mih_ui/pubspec.lock @@ -1220,10 +1220,10 @@ packages: dependency: "direct main" description: name: mih_package_toolkit - sha256: "24810eef0f6ac5f6a810493bead9ce2fb835c165b0a83fda26fd9f4b40f176fd" + sha256: "63e9ee80b0a3ca8b15a7172f924152e0528149cbe29c7751287a4d30b2d0671f" url: "https://pub.dev" source: hosted - version: "0.0.1" + version: "0.0.2" mime: dependency: transitive description: diff --git a/mih_ui/pubspec.yaml b/mih_ui/pubspec.yaml index e9249728..7bbba958 100644 --- a/mih_ui/pubspec.yaml +++ b/mih_ui/pubspec.yaml @@ -14,7 +14,7 @@ dependencies: sdk: flutter flutter_dotenv: ^6.0.0 - mih_package_toolkit: ^0.0.1 + mih_package_toolkit: ^0.0.2 cupertino_icons: ^1.0.8 font_awesome_flutter: ^10.7.0 # firebase_core: ^4.4.0 -- 2.52.0 From 0f6c6e51abb664dfb6b9d183ec52f4e95988b609 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Wed, 8 Apr 2026 15:47:33 +0200 Subject: [PATCH 03/26] New Business Setup Flow --- .../mih_home/components/mih_app_drawer.dart | 5 ++- .../lib/mih_packages/mih_home/mih_home.dart | 2 +- .../package_tools/mih_personal_home.dart | 14 ++++++- .../mih_edit_personal_profile_window.dart | 41 ++++++++----------- .../package_tools/mih_personal_profile.dart | 2 +- 5 files changed, 35 insertions(+), 29 deletions(-) diff --git a/mih_ui/lib/mih_packages/mih_home/components/mih_app_drawer.dart b/mih_ui/lib/mih_packages/mih_home/components/mih_app_drawer.dart index 3c524a78..6757941c 100644 --- a/mih_ui/lib/mih_packages/mih_home/components/mih_app_drawer.dart +++ b/mih_ui/lib/mih_packages/mih_home/components/mih_app_drawer.dart @@ -174,8 +174,9 @@ class _MIHAppDrawerState extends State { ), ), Text( - mzansiProfileProvider.user!.type - .toUpperCase(), + mzansiProfileProvider.business == null + ? "PERSONAL" + : "BUSINESS", style: TextStyle( fontSize: 10, fontWeight: FontWeight.bold, diff --git a/mih_ui/lib/mih_packages/mih_home/mih_home.dart b/mih_ui/lib/mih_packages/mih_home/mih_home.dart index f4874f95..0641ddf3 100644 --- a/mih_ui/lib/mih_packages/mih_home/mih_home.dart +++ b/mih_ui/lib/mih_packages/mih_home/mih_home.dart @@ -284,7 +284,7 @@ class _MihHomeState extends State { child: MihPackage( packageActionButton: getAction(), packageTools: getTools(mzansiProfileProvider, - mzansiProfileProvider.user!.type != "personal"), + mzansiProfileProvider.business != null), packageToolBodies: getToolBody(mzansiProfileProvider), packageToolTitles: getToolTitle(), actionDrawer: getActionDrawer(), diff --git a/mih_ui/lib/mih_packages/mih_home/package_tools/mih_personal_home.dart b/mih_ui/lib/mih_packages/mih_home/package_tools/mih_personal_home.dart index 5098a4cf..aaa93522 100644 --- a/mih_ui/lib/mih_packages/mih_home/package_tools/mih_personal_home.dart +++ b/mih_ui/lib/mih_packages/mih_home/package_tools/mih_personal_home.dart @@ -3,6 +3,7 @@ import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import 'package:mzansi_innovation_hub/mih_package_components/Example/package_tiles/test_package_tile.dart'; +import 'package:mzansi_innovation_hub/mih_packages/mzansi_profile/business_profile/package_tiles/mzansi_setup_business_profile_tile.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_ai_provider.dart'; import 'package:mzansi_innovation_hub/mih_packages/about_mih/package_tile/about_mih_tile.dart'; import 'package:mzansi_innovation_hub/mih_packages/access_review/package_tile/mih_access_tile.dart'; @@ -66,7 +67,8 @@ class _MihPersonalHomeState extends State return temp; } - List> setPersonalPackagesMap() { + List> setPersonalPackagesMap( + MzansiProfileProvider profileProvider) { List> temp = []; //=============== Mzansi Profile =============== temp.add({ @@ -74,6 +76,14 @@ class _MihPersonalHomeState extends State packageSize: packageSize, ) }); + //=============== Mzansi Profile =============== + if (profileProvider.business == null) { + temp.add({ + "Create Business": MzansiSetupBusinessProfileTile( + packageSize: packageSize, + ) + }); + } //=============== Mzansi Wallet =============== temp.add({ "Mzansi Wallet": MihWalletTile( @@ -198,7 +208,7 @@ class _MihPersonalHomeState extends State personalPackagesMap = setNerUserPersonalPackage(); autoNavToProfile(); } else { - personalPackagesMap = setPersonalPackagesMap(); + personalPackagesMap = setPersonalPackagesMap(profileProvider); } searchPackage(); } diff --git a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/components/mih_edit_personal_profile_window.dart b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/components/mih_edit_personal_profile_window.dart index 1e9a095e..c2245ef8 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/components/mih_edit_personal_profile_window.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/components/mih_edit_personal_profile_window.dart @@ -37,7 +37,7 @@ class _MihEditPersonalProfileWindowState bool businessUser = false; void initializeControllers(MzansiProfileProvider mzansiProfileProvider) { - businessUser = mzansiProfileProvider.user!.type == "business"; + businessUser = mzansiProfileProvider.business != null; oldProPicName = mzansiProfileProvider.user!.pro_pic_path.isNotEmpty ? mzansiProfileProvider.user!.pro_pic_path.split("/").last : ""; @@ -51,7 +51,7 @@ class _MihEditPersonalProfileWindowState mzansiProfileProvider.user!.pro_pic_path.isNotEmpty ? mzansiProfileProvider.user!.pro_pic_path.split("/").last : ""; - businessUser = mzansiProfileProvider.user!.type == "business"; + businessUser = mzansiProfileProvider.business != null; _controllersInitialized = true; } } @@ -135,7 +135,7 @@ class _MihEditPersonalProfileWindowState } void setProfileVariables(MzansiProfileProvider mzansiProfileProvider) { - businessUser = mzansiProfileProvider.user!.type == "business"; + businessUser = mzansiProfileProvider.business != null; oldProPicName = mzansiProfileProvider.user!.pro_pic_path.isNotEmpty ? mzansiProfileProvider.user!.pro_pic_path.split("/").last : ""; @@ -160,13 +160,8 @@ class _MihEditPersonalProfileWindowState [ MihButton( onPressed: () { - if (profileProvider.user!.type.toLowerCase() == "business" && - profileProvider.business == null) { - setupBusinessPopUp(profileProvider); - } else { - context.pop(); - context.pop(); - } + context.pop(); + context.pop(); }, buttonColor: MihColors.primary(), elevation: 10, @@ -429,19 +424,19 @@ class _MihEditPersonalProfileWindowState }, ), ), - const SizedBox(height: 10.0), - MihToggle( - hintText: "Activate Business Account", - initialPostion: businessUser, - fillColor: MihColors.secondary(), - secondaryFillColor: MihColors.primary(), - onChange: (value) { - setState(() { - businessUser = value; - }); - KenLogger.success("Business User: $businessUser"); - }, - ), + // const SizedBox(height: 10.0), + // MihToggle( + // hintText: "Activate Business Account", + // initialPostion: businessUser, + // fillColor: MihColors.secondary(), + // secondaryFillColor: MihColors.primary(), + // onChange: (value) { + // setState(() { + // businessUser = value; + // }); + // KenLogger.success("Business User: $businessUser"); + // }, + // ), const SizedBox(height: 30.0), Center( child: MihButton( diff --git a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_profile.dart b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_profile.dart index e5fa8e94..ac89dfd4 100644 --- a/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_profile.dart +++ b/mih_ui/lib/mih_packages/mzansi_profile/personal_profile/package_tools/mih_personal_profile.dart @@ -214,7 +214,7 @@ class _MihPersonalProfileState extends State { ), FittedBox( child: Text( - mzansiProfileProvider.user!.type == "business" + mzansiProfileProvider.business != null ? "Business".toUpperCase() : "Personal".toUpperCase(), style: TextStyle( -- 2.52.0 From c855503edd432789e1cf5dfc396665de0466bae3 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Tue, 14 Apr 2026 10:43:04 +0200 Subject: [PATCH 04/26] Mzansi AI model update to qwen3.5 --- mih_ui/lib/mih_providers/mzansi_ai_provider.dart | 5 ++--- mih_ui/lib/mih_providers/ollama_provider.dart | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/mih_ui/lib/mih_providers/mzansi_ai_provider.dart b/mih_ui/lib/mih_providers/mzansi_ai_provider.dart index 57ba3280..7981c6bc 100644 --- a/mih_ui/lib/mih_providers/mzansi_ai_provider.dart +++ b/mih_ui/lib/mih_providers/mzansi_ai_provider.dart @@ -17,11 +17,10 @@ class MzansiAiProvider extends ChangeNotifier { }) { ollamaProvider = OllamaProvider( baseUrl: "${AppEnviroment.baseAiUrl}/api", - model: AppEnviroment.getEnv() == "Prod" - ? 'qwen3-vl:8b-instruct' - : "qwen3-vl:2b-instruct", + model: AppEnviroment.getEnv() == "Prod" ? "qwen3.5:9b" : "qwen3.5:0.8b", think: false, systemPrompt: "---INSTRUCTION START---\n" + // "Respond concisely. Do not include any tags or internal monologues./n" "You are Mzansi AI, a helpful and friendly AI assistant running on the 'MIH App'.\n" "The MIH App was created by 'Mzansi Innovation Hub', a South African-based startup company." "Your primary purpose is to assist users by answering general questions and helping with creative writing tasks or any other task a user might have for you.\n" diff --git a/mih_ui/lib/mih_providers/ollama_provider.dart b/mih_ui/lib/mih_providers/ollama_provider.dart index 16e6942f..31e7dc78 100644 --- a/mih_ui/lib/mih_providers/ollama_provider.dart +++ b/mih_ui/lib/mih_providers/ollama_provider.dart @@ -115,7 +115,7 @@ class OllamaProvider extends LlmProvider with ChangeNotifier { request: GenerateChatCompletionRequest( model: _model, messages: allMessages, - think: _think, + think: _think ?? false, ), ); // final stream = _client.generateChatCompletionStream( -- 2.52.0 From 379633d7f5977199c8330e8c7d45ab5cf651b0d3 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Wed, 15 Apr 2026 08:40:55 +0200 Subject: [PATCH 05/26] remove usage of user type --- mih_ui/lib/mih_services/mih_data_helper_services.dart | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/mih_ui/lib/mih_services/mih_data_helper_services.dart b/mih_ui/lib/mih_services/mih_data_helper_services.dart index a2dcc3f6..631ea612 100644 --- a/mih_ui/lib/mih_services/mih_data_helper_services.dart +++ b/mih_ui/lib/mih_services/mih_data_helper_services.dart @@ -1,3 +1,4 @@ +import 'package:ken_logger/ken_logger.dart'; import 'package:mzansi_innovation_hub/mih_objects/app_user.dart'; import 'package:mzansi_innovation_hub/mih_objects/business.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; @@ -23,12 +24,11 @@ class MihDataHelperServices { } Future getBusinessData(MzansiProfileProvider profileProvider) async { - AppUser? user = profileProvider.user; String logoUrl; String signatureUrl; Business? responseBusiness = await MihBusinessDetailsServices() .getBusinessDetailsByUser(profileProvider); - if (responseBusiness != null && user!.type == "business") { + if (responseBusiness != null) { logoUrl = await MihFileApi.getMinioFileUrl( profileProvider.business!.logo_path, ); @@ -58,9 +58,7 @@ class MihDataHelperServices { if (profileProvider.userConsent == null) { await getUserConsentStatus(profileProvider); } - if (profileProvider.user != null && - profileProvider.user!.type == "business" && - profileProvider.business == null) { + if (profileProvider.user != null && profileProvider.business == null) { await getBusinessData(profileProvider); } } -- 2.52.0 From c0077e532c4080d1fdc1a49a796fae695cc0698b Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Wed, 15 Apr 2026 12:39:48 +0200 Subject: [PATCH 06/26] Mzansi Wallet 2.0 update --- .../images/loyalty_cards/apple_tree.png | Bin 0 -> 44676 bytes .../assets/images/loyalty_cards/auchan.png | Bin 0 -> 6401 bytes .../images/loyalty_cards/best_before.png | Bin 0 -> 50046 bytes .../assets/images/loyalty_cards/big_save.png | Bin 0 -> 81623 bytes .../assets/images/loyalty_cards/boxer.png | Bin 0 -> 43145 bytes .../assets/images/loyalty_cards/bp.png | Bin 0 -> 22678 bytes .../assets/images/loyalty_cards/builders.png | Bin 0 -> 16001 bytes .../assets/images/loyalty_cards/carrefour.png | Bin 0 -> 9386 bytes .../assets/images/loyalty_cards/checkers.png | Bin 0 -> 17293 bytes .../assets/images/loyalty_cards/choppies.png | Bin 0 -> 15673 bytes .../assets/images/loyalty_cards/clicks.png | Bin 0 -> 17971 bytes .../images/loyalty_cards/continente.png | Bin 0 -> 7355 bytes .../assets/images/loyalty_cards/cotton_on.png | Bin 0 -> 5502 bytes .../assets/images/loyalty_cards/dischem.png | Bin 0 -> 12156 bytes .../assets/images/loyalty_cards/edgars.png | Bin 0 -> 12656 bytes .../assets/images/loyalty_cards/engen.png | Bin 0 -> 6052 bytes .../assets/images/loyalty_cards/eskom.png | Bin 0 -> 28991 bytes .../images/loyalty_cards/exclusive_books.png | Bin 0 -> 12013 bytes .../images/loyalty_cards/fresh_stop.png | Bin 0 -> 33396 bytes .../assets/images/loyalty_cards/fresmart.png | Bin 0 -> 6897 bytes .../assets/images/loyalty_cards/infinity.png | Bin 0 -> 22903 bytes .../assets/images/loyalty_cards/jet.png | Bin 0 -> 13799 bytes .../assets/images/loyalty_cards/justrite.png | Bin 0 -> 38609 bytes .../assets/images/loyalty_cards/kero.png | Bin 0 -> 5192 bytes .../images/loyalty_cards/leroy_merlin.png | Bin 0 -> 9652 bytes .../assets/images/loyalty_cards/makro.png | Bin 0 -> 12388 bytes .../assets/images/loyalty_cards/naivas.png | Bin 0 -> 8408 bytes .../assets/images/loyalty_cards/ok_foods.png | Bin 0 -> 5781 bytes .../images/loyalty_cards/panarottis.png | Bin 0 -> 20473 bytes .../images/loyalty_cards/pick_n_pay.png | Bin 0 -> 3928 bytes .../assets/images/loyalty_cards/plus_more.png | Bin 0 -> 6290 bytes .../assets/images/loyalty_cards/pna.png | Bin 0 -> 12354 bytes .../assets/images/loyalty_cards/pq.png | Bin 0 -> 7196 bytes .../assets/images/loyalty_cards/rage.png | Bin 0 -> 34512 bytes .../assets/images/loyalty_cards/sasol.png | Bin 0 -> 34005 bytes .../assets/images/loyalty_cards/sefalana.png | Bin 0 -> 16149 bytes .../assets/images/loyalty_cards/shell.png | Bin 0 -> 14086 bytes .../assets/images/loyalty_cards/shoprite.png | Bin 0 -> 5208 bytes .../assets/images/loyalty_cards/signature.png | Bin 0 -> 29038 bytes .../assets/images/loyalty_cards/spar.png | Bin 0 -> 4510 bytes .../assets/images/loyalty_cards/spur.png | Bin 0 -> 25934 bytes .../assets/images/loyalty_cards/tfg.png | Bin 0 -> 4043 bytes .../assets/images/loyalty_cards/total.png | Bin 0 -> 27466 bytes .../assets/images/loyalty_cards/toys_r_us.png | Bin 0 -> 12821 bytes .../images/loyalty_cards/woermann_brock.png | Bin 0 -> 82685 bytes .../images/loyalty_cards/woolworths.png | Bin 0 -> 9154 bytes .../builder/build_loyalty_card_list.dart | 114 ++++++++++++++- .../components/mih_add_card_window.dart | 42 +++--- .../components/mih_card_display.dart | 131 ++++++++++-------- 49 files changed, 207 insertions(+), 80 deletions(-) create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/apple_tree.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/auchan.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/best_before.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/big_save.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/boxer.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/bp.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/builders.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/carrefour.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/checkers.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/choppies.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/clicks.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/continente.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/cotton_on.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/dischem.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/edgars.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/engen.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/eskom.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/exclusive_books.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/fresh_stop.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/fresmart.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/infinity.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/jet.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/justrite.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/kero.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/leroy_merlin.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/makro.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/naivas.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/ok_foods.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/panarottis.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/pick_n_pay.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/plus_more.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/pna.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/pq.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/rage.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/sasol.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/sefalana.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/shell.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/shoprite.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/signature.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/spar.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/spur.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/tfg.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/total.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/toys_r_us.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/woermann_brock.png create mode 100644 mih_ui/lib/mih_package_components/assets/images/loyalty_cards/woolworths.png diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/apple_tree.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/apple_tree.png new file mode 100644 index 0000000000000000000000000000000000000000..78e3e47e3d8b8513ad63c37d8b14e3cb748e2015 GIT binary patch literal 44676 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 Rum5?VeZxSbRt+EZ{{ZfvSegI; literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/auchan.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/auchan.png new file mode 100644 index 0000000000000000000000000000000000000000..762f49e447bf81af2ed082a4605f3cfdbe47cdfd GIT binary patch literal 6401 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ΜS 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

jSW-F38Jkr)=N>ka)N9@GKN+~ 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 UQqfW4|F&OFT1l!#!YKHE0QRx_Jpcdz literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/boxer.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/boxer.png new file mode 100644 index 0000000000000000000000000000000000000000..64c3f820fbe3d1b79486a174866906957423a6b2 GIT binary patch literal 43145 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 PzjLc9YAJk|vk3h^$>#9k literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/bp.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/bp.png new file mode 100644 index 0000000000000000000000000000000000000000..4696c2061f1c367306e12626eb2fc129f05e420b GIT binary patch literal 22678 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 literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/checkers.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/checkers.png new file mode 100644 index 0000000000000000000000000000000000000000..6c5cb7b6d0277ca52ca59a444a8aaea2fdaca613 GIT binary patch literal 17293 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

HoLX$6=*&yvH9UUDE1``t#)7RJc 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 literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/clicks.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/clicks.png new file mode 100644 index 0000000000000000000000000000000000000000..b11bcccd47fa12a782545238a9cf1b7db47e71e6 GIT binary patch literal 17971 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 TIZD^pw}0CObq)S-3O9W{akP@UzIt2ld?i49W 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 OKZ8>yx@9NGSN;RIO15VJ literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/dischem.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/dischem.png new file mode 100644 index 0000000000000000000000000000000000000000..c3eb9e0a5a0250120eb5bd5225b2e09317a878a4 GIT binary patch literal 12156 zcmdVAhf@^K6E{42i31J^5{`UCktC8O=%GZ(NwOq~qJW5GSb~a*h$5g!I8+2B3dk1; za)2N?Nfd#TjHE-NfbjCG_dj^6-g@fk+O3(Lt?BOR?f&#mcwl0r!$8MH2LNEu)73Ns z0CikN0TlAMcr2$_dR#yOW;z!^aW~K6@dK@&u1x>{(n9~cq2SyLca9rnObjfvzNe+*6}em#5Hd%P4p4n8~c3 zriMlEkL8BwV@3cb{d>>x9`V2G|3PxkJ2V@>Oew=*ury0pOd)-Q(gYdaRAUqFb!ELs zo^a!5zbp{r>n6}3G4sjf<45|Ni@Uy#Kg<4xi!utyPKS4`DgA%a-q$gz+`*ArAw9O* z`(v1Pi0_<1nL0;Z*jjz9f#vYhO66jvXOxCK;0rvh8Y*R)|B35hZq!5f9!B5xkpq zL|20M!d0`}wLaVLB!=#I)I_B^ZWxab&F+LNayA?1VavuNZft)#V!HMi!(V*`T)5EO z*NpkE=~{;S?C)?$t;QSLEC^2(ZCg-OnOY4fuP@?zP28cQ__Ne$@-#Qe+ws()ZeINa z_AJN#y$NRGRqDKwM@RT=4;|pO&dB3My()bUzj2eK-D~D9%>Mf}xjfqN@CT6xL%mAx z&=|E$-)TS&_(ohUAcSOLSxVPRdx>J2;cSdCSnkf8QtZ>(#-FL^rlA`mr&XOYaN}*i zj+$t6sU2y)x`_-_#`#5VPoZlp>Zx_~M9YH=+RMMhr-nJqosqTbXjT=z2)t7Hyg)p7ZZmxJm2h-uBW8 zTz%elh@w=zqOH1HlT-z9opD`=_dCevK@T;_H-eL< zG5P0uaMc^H1C6;TH&x&HaZkA-*%X7|Ef8@Xih8L9Y2HOJQo2Dm< z(1gj)bdi~oZs+p>^Q3@O|FkN|`-}kI`OwVP7tFKL7xiBD0kd{aI&o(%??WSZNzpni zO7I`4(t_x08%Fpl1ZYbkZ(|&8UF+s`q&z*i&2-@#LvJU+Ja%#77SiGYkZNM#ro4XG zz`Abcr3AEeH6FeCh4D0sZV9fa^*<4Fm`6XaB7N30UcGWg9+-Z0(*74)|8?pTlJXT%@%i*kFw5%MXs1vDYnJW= zmmWrmY{$k_mYi0EZ_&x0-Iaa?5_Hx=8mg^Mg5WrA;yHA>lj&8fKd!Ii`)iNebYTWk z2EtGW7WoJwu8H|0GwN>Qg(|jmav0Y6e8w9YPQv+03X&h8?$t^m=^s%snGR1N$B43N ze4|2Ko$0FA%(1b%Gn&HBA9Zz)7Aewc`X8Vb^)oP=LY@Vk4nWD z7@NBe^mY^w*dN2c13eB_@g3i>myGLK-_DrXH2}f%YY8i;I{F_9`pv*-xH9lb<@C`8 z-f1kTpxxDBg%{h=F;emfieSkrTxE@Na7TGc{F0(6>+H2&`%@8U$`Br=t@?T+t9Xyy zK8@y+u2=-T^hAEz(}jo^E?nImiK`0yJIZsuF}0ed=REVtIY+^>V{g4$9;P$?9c1M> zpIp4X$Ydio5P9A8Bm2mZEQ1v;?VV895?np+NL}ZAN*Ec+UR+i!o?~Pdz`G70Y2r-$ zFNjo!(ix6-v0}BEpI-1kI{-6;{bp#0(#e%w*8AeX)?wHvS6*+K_g+{l;IhL{m2+kB zXX!bW+4NmwDBK_hIdv*7{$X1@|B*tQK6!D?k*;h~qw zWS!0L&pkKndZ=84JII``>sN`Ve*6`{M$_-Zl*s4ne~oAR2OI)i%+ydc0Tbg&Br}=Q zcOygMNK2nD6L6k){KUP+eB?ne|0VrCsic#CB6_2?+i~GZ@v^ip_;xndtQqA zkUjj}2Q1+r?OpoDgC&jLK_s(b77&>9GcSD;LraBQ$0_Ed9AVTrBKyxvgEy+kz7kg?w6@D}~Cfj>cc9G-SJCmN=m`&HT80^;Bj^~7!u7gIhd^~A$ zf0^H>NyhiCli3#q^yNr0(YKa?LFMzrYO&eAd$6Ef!iR?`Dp{*_eo*Q}=Bb&R`Sni$0t_Z75kK^+ht24v8Xg zC#f?)k)HSeSP(=(@$72u9xC6k>$Xn(Xj(xj8Gr79vv(ZuKNG@*sQs;vm0=+xO9vRR zNO{{>dtvv`87%`u6>t)QuqG^B?_~^t`yXYf6ydY)IZ*WS(1IwT@EUCHJ2ZCUBTcwa z@b7C`;6GcGwZq-g%=-VmmKz}C{isG};a{s57&5^K+y;se{+!wAJrP7*{bra~LCaLP zT|oLmvi-gq{rfRo-&kj9vnHv!^+pDxj>fzDeFs%NFpDg}-dz{(5+Rk1>2@FM|%AM;z>Tly`gY zZg^0E#u8%+fshbGS)@%;b7X}*kp6;9_3biHrvz~$8f4FE5Sf(jhok57zF|aO7&kD@Al)1q{dF08^I*Sw@uGP{AAd|S02##M7DQ5rG4tQ z)cn@5#{u^jh1&f#tB0^?@5HqDs^1G@fV*4AetOP))yO7#C$zN0SZ$)lIe$YY>Kbrg z^k};XxhcqQW}*?B<0dL8X}71SQ@UVoW2QBF*}d!GHnr^QA9K zpg3b3t;y3A^OiRir8I=|dJ7g`^q!x9S|i|9W|B%3faZ*K!B6puZ9XQjbvwRVj~1PO zKo|PeQ=E)pfxqoO3D&xnrWxIeq==D`D48)av-4ECn=I%b_H05#Y--Cw2yDn73jT^# zZ@e<$qb^90|CKYr#o{ZhkJ#Wu$Cx|cf1{GtI9VB+Ls&_Uw$MRWP4zWd=3tmZ4=}Z$ z)iuHH39PNT=>XD15U{p;2LmD?0XsdKwja79c|h%4_r^2~sJukp&4&_X`**qz^w3Ta z!xMz~&cABOpAa8Ky};hkz3Wg5MyI3p-#RdsXtZA_5xJZyE8q}Jj+OYjS_e33Won7 zXO;wIFGGk|u6c;Uy_`aOqn9Ag%8Yv?!qEb%R1(NfmdgQu2KmNoq{iG{8HPZN)Qhyl zdixpZBMo6Uz~-*WN|Bg0_lyT?sUIA|b( z*WTW9@iu_oHs@I2zg~_Rr7mv**5G@j8z%$-f6Y(f_bg74BC6*N9*2OCkl+->W)#9H z4MEw>+;ij*g3qMErnUx<7$@!u{)Gt$iH+A5J8EH!^0MRuzE4gj(V+NXL-9d3;~SzD zv@$B6g9y2)=B|9i2|-b{KKpymz>qkYrD}``=Y#OiZ^MT@?*1UZ*;?oES33I^%&IiE z+~!{10KrSUze|;&x6E$6`m6=9uO?@nvFjjYU#^4ONk}ZLMF&d~vMFY#;Q5o8Mhd&@ zzBI8nj|M!HU6Tdv5uIY7=aDli3@VjnB+j;y5l)O`A&t)=j#5l!mC-WEu(NkNlBx+N zBElDK@{d#D!nzBZqHs_4qWYoFT^h3Y+p63Qx&S)L@Z}==8u!gN2#R{ybve@vFq3me13?2%(k6NbJm)e8U$ptw)NXq4!Nw7P z*nW*5skJOW95`aF+BbZXXc@^*rs^{9dXyl1cIlK3W65-6hr8Nuj4PuGmebO(=5(Yl z9wq~CC!)7Q!C_&rjhHC-0#(^5uX3~{L;6TQa34}@x{-}26&o4{$9K)H0o3~u-C#DRiEDFZMfE4~HD%d*$Y)L#@gpJO}zG583To?#?Pd3{^? zN5>(AUz6y+ zu7S5r;|!rE~(H%Ne-|3H2FruOU*7neKikcjK^FMa2Wa91M<9hG)D9Bs$aG4 z(9)J-N54e}vNV#`OtTYMzXt1mvYfb)7FIGsoEelbGFtEWVcSmw)MKM4nHL7{zL(S( zE=YiGRPV+P-lr95q5AKRYyAxd>pAFNncbPvxI{VZZv)0%)@;adjExeXsd$3iw)Kk>b=4aFG=g%ssxE zDW(Z7j9u!D@+}rdS%>EO5VY|tO!qi~_V{2*RAF|7?)SiScb!rq1g!NL-4MG4&3tX4 z_aDpzjY$~52|gs*m`8G_;s3nupW0xYQ4xKFe9Jxqu`#&oZ;ka4hR==)eKdzCht}4RXKSW=&A3UDRTF=2YWEEgmg7c5d%$Pbb@>LZzMi2i&o~gCL%su%2|V0J1#X6=$gcK z_a1o5?Xv=UAPRI}IiblTfY#}O(T(HS`i}2>!u>-Zm+=XRfsdAHFn!%;P%6rn(8-P_ z-!*!13>4N$G%`YvhW>&$u$HAy?X}IO!A=Qq9A^U)Q;QA~4^;Ufn)vC|?O`P4y{=4$ z^D6{JIOubcYlA(^NgIFv#}ec>k1EZ{9ONT-UT**Id1YdAd~uyD=|sfSe%BY?g|suM z5pcCUSGrPy$P~0zYlcdSgZz~IaYJvpQIIVi8QE)cE^Ku)n}+mZNo3e_wl4N;x(K#( zt^cwA$07TZ*y=o(Kt3L#XJ!~Dnxrga!P@?;_2wA!`6I1&1)vuVU+q&21w4=w!s6z0 zEPFPAg`*iN5KcK3Y zAq>YJn2y3u5Be`TWPk&C}FwNr? z0%c(|nF+S6%t39uiuY~nOS}$3GOOW}i=-cRS(Z?+yl$Ps#kRxrJ0Y;xDlY%y33WC% zgnc`ftVEitKhg}IkE?g+)I%pW;ohLA;!By>3Zb?&O7m$r$nME4rf-jV(>wPCOdzof zHfu1*9y68J^@b1AaM<}+qhxLK5}mj?3pEzPlqWAoln!p4%BZPYJ(DI;c0ujtbFQ;I zq42Bt90k=X-R|{a5mt)pt2gDBf@EHHa%h?pQo>{_9T7y{<7HU&e8ZHQ9H+@M z`94F{p9&wn4A_<7DDOIV-mt@ZmZxw?_1fzJJ0%;L!seXw#edGcpzGl&TM4bRF4}g~ zR@@e5URdqruzXG43(hYXP;E?1!HxcUj8MAO^(5`1$(OZ9ojc8a7X&*r|4wpeQWiGG zGk*Z3+7|A??q)|Tt<^EddmA5xi-2eI|f)W~OaM$g{4vPTUI2)4h)vaKaM zx+|M=NAB=|I%XBVOV!KxLbJ)goUBB-pM3br=)6omLSA%nb1YCB6z?bTW zKjFC62n#Gnw?c*`lVXL3jgQ|=ktHslHRMoQ&Y_yw)wbwjHHX2nYyZ?Xx;_8629Doh zMr%#_O^euD^_J_G8uETVsW=sM|MZ1&>H0Xk@)P}r)XZFToA#RT8Zu>wtDxu;s-bjK ze8`xp6mI7xnXakvMuls@_P5$913dA2#K$J+{Ev&}>Hl6JK=(ndQDMREo>zJH5s5c_ zw`TL|;N!j^hmpgqps}^Ud=|(vK_HgB;&Wh2ehsYv8|TW`=i{-XoHCKoAAj>Qh^H`J z_Of$)R|h%GT)%d43_H-YGxp;SZuri0))X%w5F>xE1zrT5OR=Z*&nuxpoSZ~?alo$a zMj3_#Qp&dQJYTuX z8!qy!!1;NsK!3X4y!}R(M5I+(=KLYEP@eSC=R`*Y*vmCd83Ua&`DW*{au0VQiu;R) zJzg5hNcaTgnfa_Qe)a?a92(^s@(k>bR|QX{7UB-@4FVzLp@3T(AMP0F!s_~y>!ox2ExDIdU3|%vr5BJ?Uxb1QBO%XE7{4QwfN`uEB^hQ=4vL2xQW zTzKM^`=u>oX642bOD{L877DCbV_5uBqeU5dZoSZ?qYy3ti5KNK5XZUNKwk`BLfJG- zuW|vEmRb~LDjP{wI%O}fjTQEtvQ3Jfr_?2!cn2gIr{w3#NWK!;NNS65C3EEc8LtvR z;X5tT6uZFwmmb6i-K2*vHGvVC@M+$QeLBRkmc`w8j7R&sBH1{cxZsIPU6AFzh1jHgU$(8ZrT{x z-BfHRzCaN!+9!NS-*=o%z_C#((Xh0{e5%5NJ}b2Q_(Rz}_K&Whz0zO1A!UmL_${J- ztf%H*7jJxjt=ftS9EAUr6wA{7DunAcpTjWizAsw5pVZiM$&OPbnGR?eWc;YH>=tLs z1)cB2$DHw8c{9aqB)+{$I(2V|6h%i|k(=ejg$LhG|1ze`M!jW-Ae53WXmT`%(%t_=%p${b&-4Dux)5Fwyh)>65d8XbKic zUNPpp`%M_2{|tnz-EV2r9FL-dh_uvSw60l>np(v|(@k^xy~c~X9Iwj&s$!u%%XdDe zYb22q+$H;m?nbnpH-(k2?1eqi|6tI+&X}l*hIuD;=KSjeKyAhbU9UN}Fk}NXX>8c}^S*b*p(+u6en7%PdMVREj{e$${V(<5UgAS_dpCKA1D)i&#ls4U5I%2YA^ zC$+<$`8LbPPk(sRrN8xqt1>;%Iuh=kEl~gGO#X~*F@#3%FcUz)WG@GFaal5 zH-I2gvrhDaVCavHl4WW&2Oy26KuI*OxEWb(HiVU#G)4|?#Ir4Xe z4w--z83d# zbOtG4bTto!>5mH!xPb|-;Jdez3pv3WT!7YO`2>B-h#VJXTN23>`3^Id=g896n+tt~w9 z&ApAltwcPyK)x2w4`_SmMgp&A@h;OiRk@$Y$HAxt_oFuV%Oj;mC#`eqQ!%8;(!{@4 z@#MXpG7TINud|I5d~4bhhA96eOY{yuWJ^4@t}r+wAP5pEJ66{K=z13P&j?R`Sl~mk z1uWnknXAMbyh}VoX2$4lyj(G2BL2>B0}j|$aXL+NDDYxLNggCGO1H|Xgd`VPq`ATU zKXUjPNq;=9qSJ}B&3HKQ9Ko5BAi=IE2@rld*Tj&!Mu=s9&LqrWTLGg7oT+rhoT048 zWfKQiw?sq8w@XEzda;e5?U_T)CQ<^y3j9>AIdeLhsi}yUBcw*X-{HX1Pj1sl?`%Er zTGJg{$;#V+2J`kR zu?+DPw7W8g1{-`p#YSTq=M4LNYN$;4T5$FxUKJ@LZyt2#{Iq+wZTL5)OK--7xQ0O& zySxB|Ltb0Dy3CFOG7By0w59af7AP6|3^g2vcwM?_VX@X_LA`cJ8KMlig%ISQd^Yvv zn3117g~yRt;JXba0;+h@cbzd;;C@|_hZZT%o-WtV7m6cppP*s=)ljE-)W9Ia3Pv_( z`2o@BfvRVrX~UT1s&Hb549tZiU4?za&dc5h;A`i6IayTM=q|*f51IGVAqf!PC;=-2 z{4fBi0RPCSCHoLV6>b97f|PM#5$2En{37 z*m3h-hX^46xnjCH2S-XRD~u<-u6TnXsy6N<%I4F^fVMS0JhLWhWbXF+mPiR?sbxj> z6+EB?;+m)fJD_VfLXS52$&3U|H&o&vYwXBIFcZ`Wyrso}Gc4nq#-z~!Sf0L|sAF}> zc^~}C%~N} zIRySv_0%li1<)V<=~FVNeM5w~F=^``M?tcb2=P1yR%JI#flLOk^U*@qzen-$8EZBt{NK_jF=-n^|_ zTv6%?4z~R{2-e$rTWZi|VqNI{G-Jcq|Ngok}h;ss;H~+E5 z#f4mdtcenUWSASKXe;{4{V@a|th&fC$S|3|i1^jj&`pUau_L+LXa>yC)9ONEJl?*x zzYOP(M>v3o0;QZpp-odv)#||l11FXk=&N!-v^ajAQ{#qHto^v3 zzX9QTly~8o(}0XC7j`>d4|C3|l7W{wS%f;HgF&Q11~g(&ILEl{v=v%g5S^0N5_QQ! zhK2Z;*+hZ(F@5nc$_=Di3*2%Bk!%V-o3;T(q6PIqB$pFEzrWssG}*tzNfdz}g2&jh zJ~;3>1Ws_rJ%^Of+dhs9rlF0faf( zsC4)|UaImpa@~J@Lg`n_k-5&4xm4aff#!GW$v0co@dLAa@l0?T(wxJ$)b1$(~8h%}*nIMRn}nKkA|a z_+=&SED7a5pF;3uQ+;U!n65Q@@DLp1 zl+!dqfmiO&l{==@?P{cPoGS63m=Iw^3fCV_e)5+N_%<`nuI&BIEuMFyHS`g&{eQ*xU!suOi!2SK5E|4cF7*GAZ zs(90{MpL;2V0sH&qvc!n(I81Ec5D~;t+pPBMut>`m>o}4+2TFl9RW~GcMov_$Mf;e z(eSd#fRI2+C$;rf(5}^|L?{lu^ApSbKnVi)H5FNXR`9|;(}?af$7A+65fOz?el>5u z4OHCCh0lZV88ly;#}gFXeXTax0rm4wv0_N@irm$;(JO>|P4<8&JY6OERQ2`k&GYnd zxJS+HB)t!am%i<7#|Vb5;dnwTFN6DL6HJ0F);f8!Rx zwl%%OYAJ%W|9%#AJI8iU3Io(0yPn;Plg5aB|4wHiy4R8LZ1N3`%sz^`l^1Ydjz9v8 zz?y-@?9|U!URP1anO4Y%HCxrI?YTq$z134uLXQWitP1qQ#xlH%0?wb8eEx;acCM4+ zN4|6axwciYeEt}2j}M`a-)vRzmAKc9|I#`%YuF@bbB(Pl^=8CE|2I&Y!=&YA`o(50 zCvBR|e&vHFZ(P~?*`qiQMTu8$Iv)D-GQ~ZrEU$IEsG_s&at?SJlc(B30vFEDG6S_| zwIg1|exbYXM#i6aNSoq-V)oWXd3iEh4Hg{lkia$v{x|nry4gg}Q-+4jUeG9hyY->( zQR2CG4P{gOh?gxQ2&*%dt5#f@v8-;qA!V}Je1ax+L8mJ%Z&|N<4NLS^>JJ=dUto4F zP0=&Ev-sb0`77~Oe!f3;Bp=qQGu0@kwzmX$N{yRUX02?`R56@mZ(a}7_WI&nUw`4% z>&lcxiH&Phs*gaOH&^mk*9yzEwNG2VhnhZIBe~QRV=l*0wZU+!_=o?^uCCqUE-Vb4 zJY`Fh&@y%QO{ zsQITL;`{R=$i?7ths1`^-@USPZowN~Zxl(xf4(b(6+~6`Y#&t^@BhD-W0)TS9222+ iGBk!k{D0N|%jgQ0tQXZKuV48;z4f$=G>b1f#r!{$5pfUz literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/edgars.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/edgars.png new file mode 100644 index 0000000000000000000000000000000000000000..33b11f5fb195a6bc92d01e87d21272bcf8602cd0 GIT binary patch literal 12656 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
e#4GhTl0>2;w`9FYI;CHP)SR}Dq4 zeV&;c*m&7Cz;cwVey6~A6A|(wbQJnO{>%P9!rHg-SNU5mW}`{Ue|uqY%H(9R9wq9( E0Kbe{4*&oF literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/eskom.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/eskom.png new file mode 100644 index 0000000000000000000000000000000000000000..47a72af32852f87a98b90f7a4e776c59260a28ea GIT binary patch literal 28991 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

Al1^7-dpUpD>FE{#}F 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 literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/exclusive_books.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/exclusive_books.png new file mode 100644 index 0000000000000000000000000000000000000000..8557914c0cf5f2d250b0a63a22a0df1bd74c8318 GIT binary patch literal 12013 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 literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/fresh_stop.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/fresh_stop.png new file mode 100644 index 0000000000000000000000000000000000000000..3400bf4bc942669ce48254734d482891c30181e6 GIT binary patch literal 33396 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 bLIt%I51JkHpUv_8FUdIrGyQU1$Eg1StZ`oF literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/infinity.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/infinity.png new file mode 100644 index 0000000000000000000000000000000000000000..bbea7be8b3326debc3d644a0d16d3c567012f108 GIT binary patch literal 22903 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 ur2-v4&sI|Zi$O`iFm*Hx)vHwPqW%XD#Rld8 literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/jet.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/jet.png new file mode 100644 index 0000000000000000000000000000000000000000..d4edcf86a62253e6365aaeda6818992318008430 GIT binary patch literal 13799 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
NZ_?bIdCJSC7Wdr|G5N=FA&_~b3E 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 literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/kero.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/kero.png new file mode 100644 index 0000000000000000000000000000000000000000..c863cceafdb0fa13b8a9778d9b1be51f7bf4f957 GIT binary patch literal 5192 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 UyLnq{n@4Bzof+s^;V#VhUmTqpRR910 literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/makro.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/makro.png new file mode 100644 index 0000000000000000000000000000000000000000..eb4e0b501585bbd4af18e58f67bcc29255c1320f GIT binary patch literal 12388 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 Qe@5$@9=9|s(I;R3ACMM(egFUf literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/naivas.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/naivas.png new file mode 100644 index 0000000000000000000000000000000000000000..0e81bd09bc29b69f59ccd61e29f5612c2c83c9ab GIT binary patch literal 8408 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 OmGinLq+%lF!T$k<{FSHx literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/panarottis.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/panarottis.png new file mode 100644 index 0000000000000000000000000000000000000000..5932588cd79eb1ffd9f6542c1d05fdf69b078ab0 GIT binary patch literal 20473 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 z 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 b^v1y1qRJx6JV)z4(=a`G`b3ct_16CYGqu`C literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/pick_n_pay.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/pick_n_pay.png new file mode 100644 index 0000000000000000000000000000000000000000..570fba44249e44a5e334703e07cbd120471f0ef4 GIT binary patch literal 3928 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 literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/plus_more.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/plus_more.png new file mode 100644 index 0000000000000000000000000000000000000000..aa1d23b488b9905ac4020f5f516371fc4a0d1bc1 GIT binary patch literal 6290 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 HW!V1#u_qSj literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/pq.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/pq.png new file mode 100644 index 0000000000000000000000000000000000000000..f17f74e7839aec9133a9812bb49e7cefc73508bd GIT binary patch literal 7196 zcmb_gc|4Ts-@cz`o@b01)!2y`TcpX7k`Pmbq>?2|Vmj(*p{5in%T1-^lqH2qv|CDJ z3lXEVX|W_EWjIAyGDUXgeMaZ}&UruY``7z<=kxH~-|u~0*Z2C~o@LxIj_Yk_QRh+t z0JGNESvvuM5km}MB;s`1$e2re1d=h%4!0-&cM`awc&SOyVE1xE*$ z)&1%kLZNV~w|k=g=}6Ay!H58Xvvog1)1l6)9ss4ZHP$O#LR$OY875{hWL9r9y0>=t z-rijv>Ixpb<=?Fb1=HVpL`DA(pOlSjvW3S_H*YA1E6#b14z#S>vrG6uLh79Or>gp- ztydQxU$R7)CC^PN|1xRj#|~HQ#&6&HWaP%1^oFBms71IwZ}JQrdjJN_(BWh-xE8ig zYVx}E5sL_YUiScHbW%$c5mOUu;gl9{T8bSZ&aD&^ytpge18aTI(3wnpgt$Q^mRX6V z_@FQKku#O@{J~(XPapa5AMOJ%F;jxj@e$4hqPY?DQ@f;KY%Q#9rwPUgL%+(l_@I3Q zcuTt^w-OVL|D&=3OqBiQ#!|S3aKxG>OnJkpc}VvR?mq=5MCzb#fc)S1GaU#u|I<&q zQ1kDeu+i@uM3sIi5G&EEk95uSO$;nVUH@%m1f3lHwKUUG8A2%r5G@J^XtF@LsL9z7 zqx>(27z6Bq!0w-8Y6TGE&7uSGUx&%NyS|?qw}Mkwb2$M)(4)$>59E5NO* zx~|YXtmxCM(HG5c&Y6`)JgD&PcvP$b)4P379^YWU<@MCU@R6j31!uYi{M3d*xl7$j zyq(Q*E7Yoedww(`p`SX&drzE5-=oyof2HR!?kH4)5$oy;W_QF!hF_pnjhT)Y2Mg&z z{aqbKMO#$|W;y(H8Bk&sR2XvOvU+dbAG)DnMR^}&{_0VnALH0pWs_P<*g&sNn&=c( zW$!AQ>tx<{;nwS*zQx_W@+0?<+c&BFTvjfv*Rt*7^p^ML2XiI*{>*#vc9k)I@n+=0 z&o6sSf`l)^Us##;83zmwy}SK%QHyF|WfJ&(A#Y2YqaYwB+x$|entym&muzIx#9>5< zQyQ8dY;1O>hb5D{?$4#K!;p*RJca$u*MLW{Ohz$tu3zt~KYWDQw$dN=EFN3r=5RVx zg|WZxd9c^##VaMDh1jY58?Cfe#s_aSnO1K0l-D|FdMKG9Sew5~EQ*|W^yToDJB~+O zXl+I;=289P7EoA|;N~&Dd^||El?H<#92%&KePKFSZGjsY zLcTrp8sJ-;d~MIN|5`(xugEANd?_8V1X8GiG&^?}3qWPWij8Tamoj%$wKGF>!TwU} z3I)Ct($#SB{ZYB!0i#)Wh!ejSGpQdBdU?O^gL#?j^89DSlCUNv=qH^ShcT`J@I}A$ zbX__gJUF>&JD<2*Qr3R-3V2l5yrI}{_oKNCNxt>tJ8t_j-e-3Y?qst;q!x(Hqdyy- z|D;F3AH{Z~&yLe^`>y6uxTHcHLgaldtt1?A$5oMjI3@fAuYr;ZPxD*{oOy~Ua^ zrr1_|C$xq}wt6SAjJ+3OCI0j^76SWnap>9yGp*f z&Rcp_3bAvYg}RdJ+P pwQBg<$xNzAe5Y+M|9ZF;`(ups9iwJkD#BLgCd>hO^}sH zB+h)^ldDoNJj_a+^|Dv3F14lis5LxE<`$i@xPOVlnt=LosQ+Mz)5V00+1u8EtT?An z

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 D0mO;+ literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/rage.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/rage.png new file mode 100644 index 0000000000000000000000000000000000000000..451e9077397236ea0f2556a461e8874672e02a59 GIT binary patch literal 34512 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 Rhc<((_H^}gS?83{1OO_`Q}X}- literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/sefalana.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/sefalana.png new file mode 100644 index 0000000000000000000000000000000000000000..e580c42ee0c30e3c86f7dbd33edfa06d9d384823 GIT binary patch literal 16149 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 literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/shell.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/shell.png new file mode 100644 index 0000000000000000000000000000000000000000..e7a3b0d0d056ba6f2bc50aa1605689ae218cee70 GIT binary patch literal 14086 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 literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/signature.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/signature.png new file mode 100644 index 0000000000000000000000000000000000000000..4c0b6a5a7d48ddb32087cb60b167d3f4e95e2c17 GIT binary patch literal 29038 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 literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/spar.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/spar.png new file mode 100644 index 0000000000000000000000000000000000000000..d8b764e22e650684395f0bf75b58b4373331fad0 GIT binary patch literal 4510 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%0D+JcOca@@X=fZ#+jGzZ=42Nir!f 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 A&;S4c literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/total.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/total.png new file mode 100644 index 0000000000000000000000000000000000000000..747942605825dc9900aaffc128e4575f19d65316 GIT binary patch literal 27466 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

-A^a12N7FoLEThM~$Gg%C z=p@iedhviAe9IU@cw3RRY4T<0k<~a{0byLtd)f5H<}uVKFTcF&H1m()`g{=#?~q=W z)l8G>z#|=CwJ*u)FD7#o;q~4|x{e}^RI&qr9ML)Uuo6MTF5rV~*_g(SlY|k6J(a=L zEwOw$<9yUA{xSUsCn0vnXqQt83Eywo66*vGdb^}nx<@#KS-S%Vj)h03OvjT$82uyr z(EO`t!ZztD{T2-w*mu{5EU21A_+@(b2)PsMQimL;iMiq>>F<`sXaMDg&L7BN>g7?w zSFb#wy<{jto*T3w(R*UHppb64lpzRagn^(Of~Nl6A`|H?BS_dI6vMInN=<26nq}Mt z^xk%s!lwKC<|gFE^9{TMlu!T2FfM2cB&NKCfz-ZA<`zB$soUqALdpghyXsQeJ9Sp? zfm7NZt!m{nq5D^;#KRkFDtXkFa>QxM{0)LbZtQH~aY=}L^Cu*dQ37 zUExm4I6f7rqngW_A=_o72aK!HGsWm3QrLb}8xp0Jz2{Yqri)$J!apJn;%IS~NVXvKAh(-)XUzJc7MP4@PYq!SDcne7ziynpyYwRw|&<2bZO`~{v6VU_I@}@eDw5CIwOE~@t5fd z8+c7RseA`n*82SpPNeN#58@o( zMiOk%bp$GpM^0Zn$q}5YF1hh@+u2RV;^OU>Qq&|Yyx6is4EXkx1<@KoJ`R#JXhaQ_ zeU%;)WbzN09g9;vA^7dlCVlsvy2qUK>(jwSY?-QV){tnkKL&OK{xn$?Buk4BNp;;5 z`$JEeXeAvAV}dX;Lm;yEOr}pTE?XI(aBsF{TpEV~8C2nE0r%9$e2VbvDZtw;@dymNAN?#a2)Q6G(0A}VtAFfvG zFj9b;*Xm1+X>4vIY%7ZCKHv%svVfaN&mMw90q<61?8RpBTYLg?ey`0*YyFQkr@BK(@3K*Cvv2`4(U+A&=_Z&d;$_D z=iW(-q{$a|b}V&eT^&>5lcty;Xf*ghdXP1TXm`<66zi*hktWyhL|VZ=L=Ixwf6R`v zaJy_x=-9BpC$Psdq2=09X=}t6b;x#!c)JC{c#0rk4fya;b2bS3k$OZ{0iZszhBYxe zNZ~VOi}U%0&*R~>`>@}36g$$UH=U7#eC#FuLVE80K`a&EkAjE+)?wUIMIq~6qVyDlDLf}4X0(H( zCLm|%p&iZ8r(Ex$`a)qeYdrLi^qihzj`+SpoEA7ek-Zc|bax3~b~GA?tUO$D)PS$E zmbe`SWyr`H{yI(a$TP%(Za$6o0FJMa8AmX&$Ew7|Xv>s0Pu!{TMR#W;Bi|#Z@F!>; z+lYDHzRmq`@~yq7m6g5!)Q$i?_*XNgVl&P(Hz#h5x96c##*k#)9KX13-QJ7F0-NC5(*uBmTQ$caR6u zq(>P*0O|M*JmN_Xkg#WQ8io=K{p8(sqLD3W8Acy5JxvS*Eo-iC$JDU zEAKko$BojVh>luBmO#ZDA!t)xq~$g}<2Lfq@4n8HMpeF|9xJumI{!7XOy33Bjv9n4pY5Yvv6W?%L{Yz`Q28X?l(t>O`@4X-_t4k$Tr5j#j51;0Ad z56_AP;aSTf2Tpuhh=eY0BL4PBl?0evRuLPa+iW1al6+1it%YEG8h!_=_(x*_zcGtR zTQN(dtH^Ff#lGec@Y#z}{o#RJWAEiW{+~4ySNe*wALe;z*Dn6({5!wM) z2q`yFDadv1?7{STi_n>URo)P0ts@in~Z%Zd0MUF7sKv8wBBL@LW3#Y>5?~z|FYWLTv@i0#*>hYr6K9Xv8flr@Atgl8x)XZ_iZwj7zV-f`jwhBkpQj zXyyy(%-IuUFe@&#gfCJjT{vf`4dI!r?c7>=|LqFuJ2DjYAb%FfRWwote!U#8Aa)Rz zPEcxp#4x1pp1gqYANVgrbW-XTlJ;-(>@GOvls~nf%3ngG7B3;i)5VD^>Jf%@z@J`D z*;OCpTAhe~O&_9>(&C(VV>5%mb(S~#cP_jM^U_V_{2P}x5mdB#Y1sX66BXQU6o?KD zU6)aI7cCM6|JQ?p-&(Y-_)q8w%0-GhTE^q>seteK)}&79a5~~X|F*om>Gf@6%HLC2 zgLbQD1OA^<`z}aERI{An@zxeMtLeSEmRJr>zBu_Scci7dDtAVT^JIdRSMYF4<51x| z@RoR2`R{B-@v+d4k1FDbpVUE`!8ecn`(Dzm4-sz1-;JFC#pThm$`FZVF2E(%dzQRm zPyE7KuSTr2YpXLndX=J_RsJvMMwaK(n)ayomUY6?Nmu9pDomFq2@|Jc9wgkUM8v+T^-s9Q(@R>juvS z1+GZ-a4yHMo&rjPCC+U}N?v@eLwbgP*J$OH-Z4F#(dRak@ZPvk-ywCE7A~^RcEx9t z|F-j$1Yh<}+3#Jwa0@fMI=JQ2&@6Gv@2LUHQTAGsHHi;3R2CYuL*BEwOVi#Q{4jQ@ z1xtA=LvoOJjuikGA%DpGO2Ekx%&bJq*(esucVXCQLAsXZV9!g66-YnWdU(npzYKSk zALfNLjH2G3v1arJLN|;yGg00Ww{Mrp%(cJQhDq!3%#2phNp6Dm<>U2L?>WYqZYT3A zfWKdETzTfpN)VxN3-QA};l0jhy1dZu&=!oV3>!U>35S92K}LNP{%m@SCIf39oOwl< zJe)rF^Sb04j)PG;|INuj($A=*{}p4q7wTyIIIM?8HstdKw|syBcATkmfRk;08WGQG zZE)tC2iM`vf`!&9DDsK0G4sqDj`4-^e3Q%5d!T$7N_WOS*alBio@&F`6Vx*sQb(qT zLRoKnhvF1vo^oC@U3!P^><^MBhaH9dA87;rgZmRiU>3@0n0M8ak*@=0fwf`5r;MV~ zFV(h6YOlkVPVK>2^*^m~LJMbcZ^oAnef197m<)6eIs8w5hZ3k+v7L+pk6dnYLCwqK z?K?`WC$(#vgd$Y#-Ly>ZvinOv&H*~9T5(Exve#a7>i-K*bd+Lg57FuX(Z1pq(XKM* zSVm)-1!Fk-S)!)#c8}hbs6I{PTWs@%Ej1h4Eg4j=P3!aLeflf{8B1(t!E>gJ+E3*3^hM480Lmo=vz#P-f#t}_ zFTI18uH5ve%4_}nC*<5UI-C~t=I2sP=vHTo-Id>K6W2<_M}In-i5f-(Ty~v3CuKUK zWZ5sQt6kTi!x|MGl2$NqV(ya9lZF>n++fm`#kDZzO6s+OibTHe6W;>uubgw3xP0sd zEqaa5>vhdmZnCSck`hO9`a-_IvA^Cx-fxoanxmXt)15O^$Op~Yd#x+&^d+S zxtXsKRy&^!+T(nf3iJH4Kf08Z?ic2Jy8JaS^r>W5K71?5ZJ|Ns9674yJ+4j0&WCM= z9RoVQ_Nh1}3$raVQGCjsx0SPRoW$Erp9qB4^h z4ocMxH(E8CQeDjv$X3(JC0%4$Nt$px6zaZq^1dADM9)~IVnM`p@#NQW8SY&Bv9AEJ zxsj7GI;45Iyr=Z_jt&-x@E;2IQT2`o=UI;g_E<-L8}012N)_`1GOefe4bHiuSse62 zWZX3?8@;dGn+enP*em*!|2xZ?-N!_M~DG~(?+|bB-0-MD6Q~V%Kw}JE@`PsNxRJMbuexptte0=zwte;2GzBdf6^S{ z%r5MX9>Eyk~ll5 z`lf((@<%Xmb{~pM1JFP{CiARL^t?;?Lek#w<>Vp*;QS}JmhbczMuN7IS;S5^OJ)k0 z29oXz5Aw*soui?i(7?0|Bm>{xJ-)C|yLlHa(2^nnj+JUa=<{BXGw*Qrbplk*(>pkw zStd>ZOiv}huW1zle}7y4zPbcfGZH(Bl5X(>IHGJ%1>g5d>I>l~RQ>1o#adT670ejD zUcBT!mI(&_CRAeY=hArK^LP3eZO;Sg{7~gRYf$*B*9go3{$dQq;twNU;!%2VDhlVf z-S)|!q4vvlXFq;1kZk2Ir;o9y6OHK9jYD;^gv(-Zk!UCdbtotv7_&6!G>*Kx80M`H zrFosM(as$muU|)6Ub2sfzbN2>gIdfYmor|y{P0Hi_@*l#!R$ZAx~vv1LU-fd%TF~H z^_=g1NJjTwMCEIpbT7YTy3tkF{rN0(TXZPp7uEK@{TO%43z>?m|BfVH`dw`sDDEqQ zQmuK+^()F`LX++M$0KPrE?LJKttALzTTrOsrA zIAU>!!XziJ`fOZYA7i81IlPrhrbq{Wv&$*jdZ$@ZxP(yntzfK9pL$l3mn? zW_D=P@4E1$HgS7SU9c64v(a?Y{ByNTf&U&;d_Sg%rTD0PQHJdF-%DVV3u+=Q(Bmt` ztvfx~MuD?ewMn;;uW0iV=1fc*u4nEkAE?w7`rLJEA?4@N>mZQ}(q`&69IvO4ds4nJ zG#M`Q)T=Kv7Z$R*zRMInu|QJR+vv%BO>Jqz0%`BP@?jJPOpaI&tm$d5 z&zxP@Vh=^lVnJp4xjxyCg^ur0UlWS0d7|&V^r*5AZhhdJ{#Ee>ilWoD_Kt(QaM~gL z8Z^EcXLEn?oWKWgD)Xxv4)8q=dUe6lY*a2JL(`g*N?DC?1BV_(UifEiA7?ZYJI{uta18$l`!JAa1HP)~ zzvsA=`?Gu8@}D@x5%p-~-hb_K*F%R5vQV8y4#Ao>Q+X+3Pv&lM0nUE&k%5beZMdJN znIMr!VHV6$)2&54id02@KF!@&QQ|Pk3MHP1woz~QYgsm<00}IiXfvNe9WX~_<%9|M zog?U{NP*SvY_`-vyKZI{0wWhYdjHe`movGY$1YJ^PDtj^PUeT!VQz5v?x{;Ao!64B zYf$6fahs=!3RA6iM_3e;u-(%iHVX8aOUZg40a28z>S4{SO-%=r8^BB zU0H8ajrw5l99wo+TOvTR-1UiH?~JR$Zj*5UW*K0jXK;xq5&=Z^hu z8^DOhhe-ucY)wMC}} zwd#R!2u`_mu^{m85W~OHGbL{exZ&9CUhT{S@KO;NKyy-rl*vy}j}BMz7G4w8-QukY z;DfkeZ2Dn25Rfl%8MuUPam427uuSxo$rN{E4;qHnySPH`#eH+cW}?m$MH+K#zB5GF zHD_&!#xFl}?5#EeC){#oCg$Eor6_<4OTzxkFW)dxC+bw8c(X|nK|+6@r2I2fs^J$~ zIpIHkityphY^F@<9`<U@jB*?$fL^KWM*%8XX~nD{7hxuERYK6vqnL!gAl#Q}zD@M)oQT(_7 zJ`$uGL*Fhyg9RBM4ruvl^XNxAe}~O4f={O)h$$9~WrOkKsc|ruCB}h=$!$)RGwZ^9tpw!zsS-uNLY7SQ z&Z;UYad?7&6=srpj7eieO;7f%e^c-XK3^mH3>2G#ZLIGl&~W4L42p2ab-jWgD68kk zhR#JYjbG6VRcFJt&sT4rjqh&WE!k7G5Uvk7W|3c8!Tu>`E3TCR^CV&*CF2b^X?iN) z-Vjp%2L~M}LT2b6B@3_~lb77s*Ky{Dd&gs|tp}HgiNIU@YS8PR#`KGvned{1yk6i9 ztm?`Q%Z(*4g~{AU8P-J=NMKdX8Fg(Q^Kz@XFIcv-#sew}d*+zjugcn_&NreLxtVmN zT`DGivjE?ZK15S68HS6kQsix2fNVSUXjbtW?Oqv-iwpgja%O>v(ZN^BYmIIwffkCi zuP+t|Pdp>TU`o2-V4?Xf$UDwl1=cL(%=-(x@DsyVdjC?@-=huA6l5xRm$A)5_E(|I z-S>mtjm#jL&zR|WY3o4%)|;{%#N{q%azx^@E)-AnI9tH4IcaqG1OxN-Ha34flXcpy z_7e)w1yw6=aRblsRFUwqalHd87t-?Z)K3ZQdI1kuX0J2temxMuB9tu&aumET#$F8* z@5~*)B?pcjI-m2A86Zr{V}#$g&fLOT@YUROs29p{I+ArAJ^&H9vj5ajo_tru#^gYp z%~|`{M`<)#zW(8<0^nmVfgAXF3Ha2LW&$gjM;9*wy#+Ow7NK7Uj~qNEQ`PWXa@x{k zQoa*+8KWfKD^lGzWrbwaHV*#cr^MKcbR^5%ORQ)=By$MbIQ6h#y2QkwTSUl&^9S(i zQ#`yM&MLk`&-ldIm;HH-8>GA_&=T5QvB<^dobxq*$OEUo)46^@r?Ly5k(Zs_VujI0 zg+!nTy-)gq{1G2zY1up@Jy3nxf9oZlHq)&?5?ZS$HZC=PAAc6Icy%cD!PjB8Zrnia}w{P%!#RB4mFO*N`SOy_eE0ci3Q z3?qc}qBFXsEIx>~7@6I88^`-mw_;|>%H|O1(Q~KO(OuR3Q+KgA0}alD|Hq|QZC;0! zL55q^6&5CN`-po%tWXe>TByS(dlte?8d>j-QSwdE)x{IMOcu45aTa*C)AQ63Xhg3o z!n*rf-igb`*D`9U3L|?=I16BI3_|jOH?Hr=RE*mm6{7SdzP(3 zg~i|d8irns1%zI8+90VaKJH~e%@C780P)+MUP?)w*ttzMPZ?4K3YQ7CTyv*&CKp6Z0#lwKt-$2It2)IQC6Y|Us$K>IjB(r;3~oRpM;E>zZfqST z|3!0=pPBFjoTOv6OCyx6c~cGqZGh$$ib3xBGRCe!r(O|H!98C7bor_+qv5oWA!ntVA$$+_5a- z7k%Y+SD_7y?PHWREysAe;pnf0PaI#y2bjcVG#KKPqCeD~NvT8D?S5VSHA7{H+A%i# zd8amVM@5XNo~$U|=`pKCh%vzLx! zK;JGiMaoiGz?vnAR_#)D0QT8@bMd>h!1RimsNEkod)Zm?OvDSrlV1o&Xcfx)EDR3C z4M{F8te!?MlSQO>(eZslU2*@~R_P>l;6U0)_-x9-cFQ2~anl>F%%5(Y}i>aN=os#>*a%B&*tC1`HJHt9?M z=u3#rZ)}~fvVZD>NNDUAsf2S|KF5v$`7Z&|--k=L7F?tMe%UsIV65sTk4f{p>#kz( z^6>RJ|2T9;{?;>vXno`%w3Fcgv_YckaIiuDeCVsLP9D>6pin4=mG?OFsTnx91Z#QF z)RJr~r7R7ObJU1|5}5Vz{3PzHNvx=B@9N`oT&s2+@;}qoSoNE7A6u)bf}x4~I_S=h z9pA&Z(pYO|1Ge*CHT3dYn7_39jXQtq04L^C7$Q*TR-eZ9{_OXwk3DudLI-qni@ksa zHoj4QS7>@xqf=H{H$m$Y?jzf!1}iPzE;ZS)dKV5m+NAN z*`67{Q%aLdVT{RKS6iZd>QX$f4ZbPIt#yX+f#bF+&p&Wplqx+sCVu-Fmml42;H}g_ z%SL`ha@rfgC7uh7M(+yoqh8A$Cror}akx)hyo!w@H!rbq{MSE}yY#TmfhU8j?Fzw{-ffa8#3){!`kceOF(ZH)-l5uO%75Ao)pQVog=c zE>|70-}d8y&OvSFuoC&1qUH;>!#~(d-(0#%y5({7c--%`%9J&Ri$YIxOhc-!B3B|^ zmdpeFJ`5?aJ%momGF?d@5E8l~bmc*~(xJ73gbM$+U)IIOBN|Bx2`iSh2Ip;$4K%kP zDJ!~_thq%iVoq-=Wc=mqW_JECI@zp9Tqw2Qj`~U_3-S%+ADuQcUV4@75kgcKoN?%Q z)I;(ki=Gx73l2FkBzGrp(;zKVl>4IpJ>-d<@;l^RZNJk*RZ_>}*JbG}D&oJ}bWRA1 z0&k1y+cBlTl)X)-*Bg_wx>POR`SkD!{ATs7GV$wsVv&1(L^ZbY@M3j#{A9@MLP+oR zOR{fz+x7qacc)%A@PJ;q(Hx&2_InMUFCNLntz^jEVgM(!w^NV>kGlbjf^q(}Mt)TS zw~Y_;%oDrE^mhBq*6rK1PM6E)4lgASUS|WDqSOALk6L*tiUvm{wC~Acf8K}ABz5o9 zSk*5W;?)7HJ-xeC{#_RM4>D3JdZI1z{yK%GjG}aL*!*)Ay-M?Og2wiHh%?+jUuz9s(Ffu4hpXYJ$JsxP)Sh>YAD` z`PUS@waXbR`O=(m<9ds(=1s&~?oOQ7C~9-de&&R&&34q};}Zh@LU}i2ElIOJYim)B zPkegH<^A003nwp3-j||uZrfid^gn&_)1w{%x4B_EjkRs{1K~ z?aeI`iF9;ylv&yLscU+_xb$xr=D6qE##P@{4$B?ijItl8-i=qr=H}FV-Wd!E2m>G! zpsS^B95BA#6829Wz~`TpvzEjDWB)(>PY5`7(i(Ec-Vw$#^wibuo=HvYL~dTs$;jU3 zA={!MIZ*sheg9wE@SgYHd-Q#)tcZQEI`QDD7WaiE_X&%&xq(@DrR@Iq{sZ1I-|hAA zpHG(}PTXY0`W8s7v9aCHEx_jQHx?tyIK^b6fBfH-nK@k56s%VdjMh1uCK6eSL?y^( zTUSz+i<$>w%Zy=O$`VDSn1M$bRlv$^vwFaGJ)yC7<37_;i}X|RxG;@k63Hd+aYo>{ z;Q8~R6yJ_lbCn0&I<{T_Z`!YuLbY-g|Pr`?4 z^V&g_H3XblZUql8Wt@kSw7K>69hdIUne~729Kn4$9lqv52oF^o8~@iYFj0no#@2z9 zEI-~>c_BakL=^5`j4iswh7MwhZke@>jU~z7kdAm^0=bGIIg$<;IeP~1 zhqkAnmr{|VSbC2$-+bwDA!(Z1oYZPw{sBtrptmKxqT7mpz^xKLt=LhgFm~6mqjgw~ zqHT9q>IOO2BE`F^7Ht99l6QMe){OhV+UqFFb+JWhH2Jd=GgiLXvh06`OC*XIALl%x z;%;YxduY@Qbm8r!n#H(pzSeaBz8 zp^rN^IV~7p0+Kpj{UK3qGP%F7oGuCHNLo_rAb&H@(kB6pG35^g#9vM%^}UGNo^tw8 zf%mqz1wBZzdlzk(LYPRUh2EQQ5C&^xxzunwmRm3V1dO@$R=?oRG{A&ZpRSi*Qt%bG zPQqy9%EC_bV0M19rsZ)!Fts^TT5K@dEo6!xpL>~TCaI=Z3+YGxl;8c@IpC+_rU%MC z3{m3OvMlJme7?<+qEwGQjfQe=RicI(yK~KfRp+v2>V5`YSncraL=)9pkHE%SxX!)P zyn5<}leA}4+cqOLo$tF-O0qu=U&2p*kR1wv#tiY@W4n8dz-DG|!SgPq*CY(zJ`A+R ztYq*Ol&ST0wzF%aG_AWy@u6Y1=p*-cb^5w`Gk1VrV$>rVJr6Nq@(%Ii7as)%cYTlM z<4MsfNAam+KV!JfwGPSb%%y89D6o6T+2$E$Di+T38^vjfZ+-`5*7MKCzu_NL%rzxe zh=vx4wi=v+$~=LO-eM;Wu$;;YRr`A@?X~Jtf#Wkx;jC4!IUoF)XHD=asb(2vrTmTt zzDRVcqMM6SlnP*z#x1SeJyE;GR2P(qw@;$M8a21R=ITEN6!^zDDJANVnVUm$`XOqE zobL)5y5FNMh-Fd>4#yODVl3Pdf=xb9-Y%gLAKKsal#Bey@Y1@%IoerzPOxdPQ zYzP(S^4A%rd*ErVB67wrRnd8-%tEuc);@(Er6=TI@%in%LE~jHA(uxYO9;YX3r37}bX+&}3 zqH-y~V~#=$^h>isD3&Q-mlH#^D`dtOznObCJ$@m3d0~6VLV%q5gFWBv^7Ul~#BA_} z|8AtaUl|OKYG(6k=s#e!Rf}rU;3Z(Cy$v_VT+}HKKyf!>R-*m=f_9(5AytXibLr0o zaBQSmwC8a_^Mw!@$zaDjF9+lAS1vp7#a#ysl=#AUm-^Rk9&oQSrXG1N{qulgE^lj6 zZzu+N!aB6O7yIDI;>f(ITbkC1x9mai2J@EY#hvWbw-k7jY*1kae|`h#b-4iKZZf!I zE0{lY4}6no&M3_o6R|2 zdDDo5z0FhaB1u#{&c=Y39q|hX5u)yvBp1im!ik}9BKZa2FtF!#X?Lc7CW-q|`9X{( zZ&nU>r|SUpO}?h-*EiD3hg5c38faF@Ca-DH9y7rvWUO~Q2+-S(*ZJ969%rlsS4wJL*Aj=o3l5)_mOjBH!o0RQb>iU-cvS&GyD%B7 zKBZj4rJn&UPphTy!=4caZT^u}&$zYHMn>hc7J2#9>mHFP+U~tI@-g@ezx7&v5CN6J ze!Iin+ts3GhIh2{uj>Qn-P;AtAB0`jAfJ>Q6c#S+0&Xm#j&Qf<0EkV0I{)+$K9h-` z(ST!Q?o$8_LC*%mYYC#=slxhXJUDQ7q&Ed<1pzY>V@09#RRP()oPO(-bP)BUr=Ap1 z5-r;Cy0FN>Hk{M*xR5CPXSR!N5X#G)|2httxFu>Mz=3o$C11S|F8z^tE>v(5-eV|RfQuoXS)*&^UFKymY%kxEHnv`Yb zeG`6kHTE$jfYusj-N*Tw+n*>syY8onrXm8z8nOuY<-&iD+ZC!Qgq^g}h*{ zN?(%{G@zV5wZTZ`6S&VuH=hSHs?S~p(4HN?JJu$vzfd2sNhb+*LxO`Aetu;U@7GoH z)RBY1B?wk9?8U!ES}rI4>>dX+8*~!<#|dFq@6%?AR@bpPL(Q79maf zmZg679}wW=!K5O;Mkr%=#6*P8=w00VCGA z??`cLIIZnc0lUM6m_XB@P|HuUKMQtbi`#J@VU_2=uVMU;8gjf46W(W}H1j^(>mil& z=?KB~+c?HXJrg=_3w9%=EW^1h609Q>jS+pam#yEDPdV(~H9Re?{+=)}3@0RzW7g&S zk%uWL?BP)+NCuUGmDuurt7mSXyOzX_NbTQ-!Tu$$` zHIRA{fY_USQH#LZszVGyFl8qyuPY9{%|23CZ;2U}h?hOWphWe&W)5=*N`Cs_q(~Jz zhvpo%H8A*&pB9LC7=T`0W+yE4U=Opul5NAnSnM9ZjeJG=TYO6*cpG<7Yki;bBWq;Q z58MPTdPl8*J6V5dyvkhn3_mzOGU*PrK4>RcxTKQqK_+S~i zJOHA2Lq12OT*`Zci%lNBKSU2dx0RL@*Ra;N4C%G~X&Xx0ZvDu(AkZSmiJ^AV0mpA< zQ&HtTh@k=mmiMOHTHh-U=i+yxSH}?f<%J&F)KrygVL<2)sLPy0?K})R&dbxv&2Nei zphsdtM5=}5ggy@53!^67mJvwBm;e=_$zcV7Cup$R`O)QWzUa}OUcMGxe(2wHy0FZC zy0=|`MI0uLa}EnDH4vo0W>O6aWaF1{t-Aj2d!J=3-pPlXLzGtB!Oy7e*3;?=n@No7 zYIcRN$bw1IKz6rUB*h;ptc&q^Vs9g%sLjE~b3phU1-N_-O#4K4#3AgSmxKkQ3+0am zk+Ve|r!a;7K@2NHZP4nkESAjpI z+VoIDg#tJy2)>+X&8OB-8T6tAqxyWa5%~^5XKDAGp)Ap;G_@C?(nRezD)xukE!bcJ z=oJ;QD8D&r)T&^2P9Sw`_c?hh-RQeN89|5ffVz6qM_h0I@R#m*sW4RXew9x4G%!1C zR}4E+7=B8b%xuw)C{F&RceS7=5Q7%F?AiMa(v!L@WAPyu#j4&sFX*u}oeL!n{V2l0 zs^;=6Vau{V$#h23KN#i(R6()U`Y+w~c*!<#J2dHtpuQ{!oh(w7BTt)~K!|-LITTn6 z5^o8OOZM6Fhv>lMN?~?x3NnfE2tsX7oKqFCmJ%2})|55sV93Y$Rvg&C?N>iDPx)FA z4HS>buaLObNsjrQ8rpV2FoUX_DtFS>J`A`(KQCrp2dIruGO$L4ZLQ^&S&qJ8$5occ+qU&;4-CGWxP| zekF{O9ednca;J=xo|K!b`i&_)%kUlrm)MQC`5go(_Li&%IMJ=~|Vq4dSr)nev-iLAf4{pJF z;_0IB>-H`f1FiTDN$pXEOZUAXs~qt5)#B0i6DKt9S2XW_0qlK?a{ zJ{s&ql{B2B#6Xp80C5R?uWuV@-r)=>ld0hzdklncY~aYQqkg(uUTWOpQNRP1)VI_? zvj21lmA~^LWw#)?LKKc7qSdFWHE=nq->r_d4YK7aFxzqJKBn-mA#qGa3=(VfSY*lE z#&zh$v@g&=PykZ}uRUH?7>WfZr3kwT%|@u1efZThMjOvxIEqseM*)A(LBR-GH$8;Z zr&<5V)*Y?(xelGs&Og8Dn03e@>;}LlDzK3kJ0c4apiD z&MBVQR?1u0zg=s8Og5pG+*)w~7~fJNTv+c*(A9m9v%oz5@l8z+CPs?T)qQx4Iw{0SkS4Gmtr$p?ti2r&gDwYELVLfJMz%Va`mR9E#KnxUw;SpkuHODF{m zV-tNri1N>PYx#3q12R_!Zw8aWVH-mfvlCthVV9EASP>mpEVXW1D-hu9zMVo3d7U>{ zeqxjcM4LA5(TG+XtugqeT6eN25=dswz>18(H!C!FSHL8Af|srX9C~?)N$hHaL|uG@ z97R4r);_X2ewg!>EV=!JO2p#cnN)^hkfI=vkr23ikRb&Mu&IL9V z64JAZFU&jm?{I-_PeM#Oy~6ffau_2))gpw=#)E&WfzeH~4>}o*%CCjIsH4AR65rQ* z5=z4RH0gDHjbGsrm}f(Ti#sPvm)dxE4!vT%dO1_h06qiWKdKCb0;}~4%NQYyGGX=# zP{{{C2p_KBQ+ev=yQr`*NnXjufC0p|NWvT+V|7}q*>|`=eKG=Sxb4JmZpQY6Zklwj z-JA2UVxCeCoV7UuL)Ui6O2L+sOlauA7_;E72r!ZlnZf48cpjW|Mu6AH|Camv`Cq;s z+e!b8nx#%<5(F*#r1H5Er-Dw=Z5!S6;@PMG@9Jv-RI(>u0I~}ZYs10dE`8qbI6>j! zX)hRIXXUE+%?9=!k$i!c(HAq8MZ?ot!Fmha7$6AWK6?d`y+Xz{hCZRfZy>rlk@NCV z-LwQ<&xF`YC7pEKj5YIg`=4_uSCl=k@a765g2ll*lfr#*>e)EXsd@}}NA_?0wdH+& zHWBs#ks_y8(byxeE6870s5SjPjH{_fV29O62NPIqAq#|Rx*ZCl!=EdZvh(m?w*OOM zNhQt;xLn|~m<_s@|DcSAn5Ovzgl4UT%W^^q88j zgeg2ZB0p0wL?VxJ#H7$NV zi(L?CEP?)LIJ8Br`gH{Iilu)vH#K()1L-8oa@}zyW%~HE{VhY3kjKEUgUExvImf&R znhWL>#_AL`Zf5lKqC9X>MnZ9rAt=QQPM@=R+T6YtU7N29UJ5|&UL`83_L9y+b=>S2 zSpz~iBbIMNyD;eE1pvviB#A~W)58V%3UTE`&VAg}fHR`zSThU-vQeuYfK_yB7(T0$ zxTkFDj>Zm436ed(N`SU^&+u&>e&S> zxZxU3!;G=-v;zB%AV}JdLcO}=E1^D7F72mQP1z6%+ko)8j5G_{#;5#J-fePOs!tAbiuIZCuIM$=g$hz1>tH@D(rZN{x4_N z_im6~6(qb*MNv_;^*{u6V9WQr1@Jj0JOBv-g1!`Xc8pP{z975q33j(h^Y}Ta=+)by z6z+pl zliTCjjAaIzi&QrjU;XoY9%{^zg4@BN;~_M@DHgPUhZ?Z&1Ch{S z6TUj8K@hrY_n@8I{Rxe*dj%{%3M47&jpl(73?s7N7A35j6LCi074>iK{|3Lueh~5x z=TD|~8>!+51nyTr8$WWHSHSP#Pqtqvx;(mo%)I?J#j^Wts#F77OZ0!6>z8N{kc9+I zAp$3VTK|wR5Oq>D9&c3Vz5mvUr^dCR@RXbp{E;>Vjpw_3j8D*@T!R@ zLKn1sfIiu*?(@734t2a1Zr`N)_|$o2{Y}_>XwztHDBMe-rdo2LhhcxUedKDSFX2dCK_(3Dq19KrfV>$uL z1SZViS<~PX0JEZTv;v~KWdy=IqGlxqDcNa-;W7`wX>fGy!@%wLg+(2-sh$?;M*j;?& zMeyi7rplO3BLCSXK#YC)atf8Dmp@$GlowfbMS`q`liKIe+>LqJ_6caEO&iA6L20*9 z?-W{c%l>Fd8Qh5g_}W6KJ*aq!%eGmy#@>vE3u*nxirSc9uLQkK9*iKAS9f2cUzvAZX1ehQ-@x*PIT2c(7t!m%lQ$c!42g2qr~1`R(f>-RIS&pS zvdB}l7sgrO<9RhI3V{ia&qD-Pe6&8o939)Hf{}jTPW5rdX6@!w1BX&f8;s}#O7rPC zzhZ+M$62apN~QZNd6!jjVWjUj5W-}%*ga#A9eR-Tccz27Hv=qBC<8WVQbtk;k1P|g zF!U9wKYvHz9!iDf1bSoe4l~ld*v3!MHO`I?wlQ!1==R}a{#Ug=D63F>CXvs9+I-#h zJLg;D$6=16^jz%L?lXBMJFaSgU6r{A#@j zK4R(CDM@GUBMN~>RlF&;BsTK4Hsw9O{Aqj^!gC|h2v5wyo|cgR^qTkg&8=N!#EwkS zp{n1O-E2JU&XJAUxo9_dAJ+Y#mi{xd!m-Ll_EB&oK%_uO-<`Q}@5Lzv=EFMqr(F_ub#LY zj`4Xb=T?=;g#j=YfKFArpxT8bZw}OMeEb1*w-n-{(7)k7?gc5VhBZ8;Lqt2^5AR$5 zX$YYKHeh*SeXAVQs_1n-I?JX+W7r%xR>|~ zUAed-@)827GOv-8?F$FjbHcnFm7HA>4d9yadM#@9B3|ca@R5z%87q}^ORc~sf0}$8 z1Hl%_6*)CmwP(0Wmtpa7;ICqKOMr6h)MGmwx!v*%1v|&fehU&+m1{6F@f`5(n|+Gd zHiNFn$0~B57<}k=%8J2_vpQOQ%X#T%eByGztmYA`S5_SHa%$`H(ZkR;C~0Gp;LC zlhlQ?ROy`P@$Uh!mKX5Ro;{>R64_NJN*r0)M4*5Q$f|Fwz*{-agV^3PDgSeS`#a9g z7iNbzVJ`^(KCq>YPeCk?MJ@0mjI}p#I5}f0CH?7J*t3`97^U^KSx2IPvf#cr661J3 z2Zyjz;CP;3Z}_bF8c4m9#{B!8dDZ3y+-IK|ybY;tkz%Yc%32VHQ}z#d#&;x$f>#5x zCPU}WJvy;nOw_voI_>k{ZaEF0n83E{S)fG^wM^uCCIuI@-oE@5`9xqtHIC2wB?7NJ zpsE?mh`MGKsXvWWXBLJK44{smFg4#yX8N%KM1&z}OO_Kb#*BxKvwK!duZjC=axYqa zdH261ZV`urM}@A`Kbc}mI-{mk^ST79dym7QyaXO)vmn4LyczYZ4TJk#(tL0>)KFvY zbbW8_0?44H67*YE{LD3A*@;At|BGg%@jG|CDUX#Dx-HUv|M*owdSh~1sn=_g9Zz7F zt{7k`oo#q?iG2&vm8s&yi=cLFsNcF{M9qRmetfmW@MVDLwCoZ!GRaBt3|4ef_~)Jb zfb4g;K5@~Pmv1LxU9w3>i4i@1JLr+Jxt#;y+>hM8VF{9y^X&qzWDhdoXfurmb)<#{ zo;`|Lr|(ZD>Bi=X-(_XJO8jU+r(O8V2N7>%;b_jfL>e1Mz(S3Wh8o61|NOfPe2&62 z2G6WyM%2{f;_k$&UqDM$e{CUSJTyAkpEa>OBDL16QWd|eAmsX7jE15@T=0?KY!Ioo z58`Fo~9>-$gRIO>>Nbg8UR z*BUF&&s3;mujn8<$IN9g(=S*7;sQEIckI_+l*T62q)|16#C2O|rD-Q%*eo+Hgaj>a zw#}^2w{29(CqUmqq}Bz_}>D^UT~$CWQrUN6!O zQcRL`JaTVx<10mNQnG*MPdJEgkXqB0O$67*wvkLwAx)SPgwFGyr6R0ul#kp4`HLaPpZ)Er ztm60ldzQZ>(Z(4`DeME=Q^R_^o><<|N$~Pdb93VG+TEhn_og3jIl`(;3mBa=r-v9} z@Toer;$_CF{+RJrgV25>U-Eb7N_=73csMP7X@9PrYS5a4pKfs+r~k>t;#1?9CInPj zsD<#sj~*Fd3?%=|5c*A`1=sDhZ*#hZbVD1pYA@>6d7INWmY{|2Vm1t}NgkQ^nbGfbOH$qj8zJYK z%hA1es2ZueF+o z%}laR95035OrGT><2emi=g`~NM}7>g3|*{%#-G0F*%gY?F3-{= za(~IpVYNz0e*GnXRP@YyisVOALu~@KgHBA=I#xFVepPF@S-z_6GFx8E#Ocd2W2+Ee zFH9&Cr~?^4TZK;Ejwhz{tUc$Aui|hG@J7UZhG&_VyK5eZy>`q0V9(K`VBSkoW(V@@ ziXn36LWlo8u9bOj18;2HKdsNDjOR974LEAZl_0(+e!m4%dLU}>gh=(i_9@2LMm=Du zFf(r!i8Hj(7<6No@bS)w4oIk04{B0b{VuUfvSbQ96FEMZ@v~A9S$O`?DS!ez7z~?_ zNte?A)*Sihg6aF5t+rds+QR2N>=KL1VSP_<#jL{=>BnJz$9dmigXj&N#H$NBnsbCF z`0;Z;K+v-#q{T%(4UJav$iL}>P+YM};*<7I=B;5*2peeZ;+?0!V@h{$!sE)JqNnTS zSG#jU*A8VGCNw2_v3|anjV<2~XO`BvY96T*H_Eef^P#_bJyaRpO0h;fx`WI{v1Fz& z&c@u3Jny}I1$E=bl^Z5$7j0ki=(!41dN(HD+t<2ognyx_{+ib^RFsYxr4g1<0V`9! zmq*tB&~2l5M~OKz;Il9-C#rYOf?w!l#BCF_@jBcTpnh@DEXZT=S&aQXTI}z%DEtqXpv9<5 zn}}D3{`Pv7eBu?lVVVVM#}m8F?@lCdRFj-CXbaf&&eiXHUlY<~Ng-?4vyM;`S|*oB zQ2?g3{VFx+{_!uY)9EiS9V{gvjF;c0&3IhfLDYbKSK( zZR{=$f@j{aoV~phHpZv($IgQHUf@~7yBEa0g6^ELGy};CV+Ep<6Y585jF+T@q%T5Q zFVp&OJFdD=!(G$U!#--@Xg}K8^0&q)Z$GG-q&th@yWwv`HE18QGLdHApPBOKZuFq zzmZbi46(etzv5EU=kMysRQRdKNp)8F)PH)?!q?fEz#p&EtV=Zd+siX>*}tNWn}TrR z&B5^~v*!e?tkv%6!)_6$=WK}6A*d!A#^&ssx~XTwj`F*5)~i3VSY(V3FK&*^Ad}>6 zl%S=m@8elG&N-fW9;$bV!Al_K^u#v|N{AITHO}h{Z5nbL#H%DCen>|@t$*VFd}Qv$ z!Ol>gmSEu?_Bmx+7P+v_q9f|3oAeUZpp`G@mMHsF#==j6MA4khkSwUt}< znD6R#JD3L^x6?FUbIqDiud{?yWSr?6Bl5~jqb_3eAND2nzoxQa61qw5Gc#I6Zu(Gq zjRWOLvy;aW?D|P_jgoM8T|2qE8%FCIW%j@dg|#k?Wj}4LFk1CLo#1unyv$29%sc{5 zZ8BQihjegim&nvCJ3Mu&R43$Kxa}@={~pGCqXcE|pKG$$GaEmSI6ai*gm?UkaYLV- z$pd;(%i)NW=4q;e!RXZSko_ks9QhmD+t2S~+GsqxI)dApCeoucShy01@<3pc>d{DIbORwNPS8}cet`wdT^d|c{GzW z(k^SrX$u+r7=OUrRSLDm*DN{wyFg3vh&$#WFQfcn=NshtkU58Ta!>8g4KSE-)9Ku! z_@{>6SL$j00HqL<3Nd%G$=e07H{*h?uH(KO|21`P_KZ$%-V0KFJ5nWQCyBFUh!Md@ zdX`6>?T|k*t>?Qe;$IdXEBZ}dcPIMPri7pW->bUUf1m>TM%F(v+>3Ai#Rm`SshmQ~Ut{=DOQ-PCu2wcT83&*t0B-ZB~*KrlV8ar1P+NoZD)U#)yv z{mfN$E6?mj-r%8qflCQ%)0fCVVL!Rsez4<1dwpt8xQ9&hev|nK$ znjDRwrJ1#4qaC+ol-Gi?BLBC53i+(gj9M1op*|}nAr?aaYfuQ zhL9~btAA~lB0>7)N7mW;NwD*95h_6*4>XtO1LL|$x~|u0ck!je7_}amvJ7buK8x-! z4nD#fjLS2y|7gyAsh@r8i{UjkpzigS3_HP0T1##@TaiYWPL--A48Aao17ZKM$Z0DdG;la+O`>VkB18Xpe*F)Z)7_5`ezRHL+?M3i2ELCV@IK{fGi*6G!M($6oT>pD&Y0*>LG zF@>Yk1w*%Ln2Ka0X3^)XP5YLFZp1(vhYw+Df_y}EX)h#yymUf7PRL%>8lJCF*@FtF z5JR6`zxA*$aZyDFX>X~G4tO*FP^8Xt>fCbR;PzUca=Bd%)mKz<=#QoBRQ-z0xW@b5%3Lc8;-BM1Xm)*&Vq2bxv-)&g zE{D-NWeSWYX9?#;%*zz)Y$(1jCE%~nuLSmyE-q{dUeAks!;4^q)K@POTk8L+N-0ct zvYcW9sPN3!;amED>mobjcoCj0ZJK7H9vKq)E11K+ci#U_T&|I~9FS|J-AzkRzuQO? zjzikfn*`^JGSuPFr{45oH@`hhW(z@|IxKL_9bpbfv@9f1;h6u6M0B8|{qNHOz@OT3 zs+;_O`ad90d|3$t{euhrm*lIaf&34-|7Wt361uMBjz4hK{ZEDN6@9JO8g}9T3n{-l AqW}N^ literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/woermann_brock.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/woermann_brock.png new file mode 100644 index 0000000000000000000000000000000000000000..af38d1f67d2b8fa1eaba48833b6a6c53aa6691db GIT binary patch literal 82685 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

K+3Y(sKBr$S%(r! z>t>jk9y9xmY;xyDX22`6D~{2(bxecinqM1K3O7yEE$nCqxhM;J8VL%QqbAHn&+9Ni zYwEJ-qNuXm{M_2#@mjGT-my#9G7%Al{1jNjeXXIt;wLDR@FYKGV;qxGAf#P-W7C)> zZjzYUoriP&-r@PUw%LCgm4D_s9dYt`ag<*%r#MN5_S0vDS8CBgK_V8^jl|R)FXj`+ z6(e)Zb34hWMqxmPw%IAmL|NV{>DY}P46J6Qwdoxg!v(Sq@Al&-&^#Sqh{N<{7wXP- z9dkIP)v=1!l5`vmv%^00KfTJwn=SEce(5k=toD1CF#A6TQ1+(MmpkZLMffVsE0O5} zWH605Yww+ecv~)Bt>2Z+gtk7?~>oAPaO8;@+G_CQM0sLZP^A#JXA^^ zg0SJdJ8m-#UR5R1&( zo}?VZ?g6zL6u{_Q&M$197m9L+M@mz}?wB&az5YwlQJ^-rK7~P1E(A@tK zIiH=HL#cf^B#80;02Q$P>x=Uw-Istc$w3gzB7Dl7J1TfR^Zdd{dLWgiKSK~?BoIOZ zdS=GCYHZD64JE@kN-dGx6mkNZ3>zQZWj&rVf|7odm@rdGiI4yyV0Xeq*T$Px-O5bI zX{Q~_hHVu|9jvlJC`}@kIKLE3{p^9Q9)hLhO9ZC=Jk6N@$IMRKvsjZr66i$-Ch`p^ z8D0CMRW52AR4)I5qUKZPOX!%kCGMLPfpZiW-P-?C9(c?2oR16&ooqcC?0;hN;{yRZ z$Z&9Y60@J_g2}-C_PMH?)9-G8l+MZwGmY9u39m1`9NxcLfMSWDr~H1q)@rBL@`vZ; zOIiZONrm=hhOO7Sd{C-^WVX3)-Ri%0YgmwFTfnnI<8$G?)VF-`N44aS;Zhi&5O~)7 z`A>}m*nd)rJD%PH!E{>B@NcNjUStQ%qgh*x$1!FLoYu1?1~y77t9!qZ+zFGDIce2M$RtO zF@ti*@Qu8k7@L88$ecV6i%QodQLU{(CHiz}KqZ#Q9ts3wUoxSB@%f&wTNH3B@lIU= zHyL+`Sfo#EsWsYQvBG0RBUUo?Ug8ucYS|u*Jod}Y|zR~n}ddCK0=*EK8pR1jJXZ=nJuqs4{ z1U*rG)tqnf!S_9xDBB!QS(Q+exp_uR`0z;2V=FZ=34a(^^OxUhFW=o>vC7O+7!Pzsc`hoWWpZE>so5A9 zg-$v6KL6Dq)YGyZ055YG+;bvOGV%7SrRI~k@@^dF_8o@MgSd!`4JEef{R?4o(Yp0lhUGQUU6MyGO1ni4Tx8Ku(b1iEv zbwWJx;TfC?I(XwupP8ipi7`SEzy}}fP+?+!*M}?8fkdx5?}ui)wS&`!`KNRhLr#xG z{3Ns3{nBRGtRaa07teO=_{f00vTLIcs?bk6Y}M13`CIG{w9||=fg-Z5b)XfTUxqnX z8s@(8S4ph!c9dP6wP&83iIt%ljGezMQ&e<;M4f%pJivVSe81PgR~G%1!vG;jabt!e z&Lc(iLxBJGiWeJ&gG`VA}po zp-2yc`WzMxZK!jx%)C5x0Nl2*pmU0jq}b4+wu!uh@5}y8kThv>I(OTH{n##3a#d#_ zA|XRL3=KT-Kbw|-xMgn*m*+^&b=C#gzG%XbqroH^6QerPe&qrb;r?+6)LF&xy0h%R z`L+}uhD(Q|S5>Ca0U71zBcSW9B4fx>U2U`K_&~+rZWHhnu{UQlrfJM-K|w_(Z?>UM)O(z55a3b;uTN z;Ki9HIgN!EO9^>uLVM)Tk6DV(pX(xTq-WRfeS!>r+3eh&rhGs;FBnyze z^67zsQJIdF)T$mvLZJISAeu=Q0YE3>;#QiV2_mM!WUpjvJX0STydc zi9-jz@8o$WA;=uuahUsWW6r`K{H|C>>4wVd<6G-(z(qOIOSeyb;bh5lXt_oXyoMMV%H|wM? zGXw=S(qM-$Bq3^3wjPVk@=DjkMHhrCJ%9fnU7wc9r#=q}Q|NPRg2vXTOMmN_p(a{3Hw+PK&nPq|wq*!bM>Yk+JIC-2au^K>IJ$LgTIK z-Uax6PD6bx4TfD7ulwGY2%U`$Pr{fktL#9wT2!GxwXa2-_t?cU5rjA=Q}s6Tq-R$h zq*;7&==7oo&Joy+x-6*rAphd8ukB@8w(_ns26)#q>;B-RsP4*wqO>IY9&!$G0XJsO z`~wG)UtJ$@b#e*Q7OMavqU!}dQwS+oDNB`tf#-DkzrXNGrA$dYyi8P~5p!W0Y2LV? zGHxk^AoHdyg)xaY+MpmIxFpra;rzhqjmD-FnI!D1n2ZBb*GLf^ac0I%x<-Pl#LQMeTZ4Q?Rsb*K-RO@@Etk0@ZdzSl_1DdPS8(|{lh|P^C z>iO*Ty9nx8e}&SXc5=eT$-Kw2mLV(+y`~FPX_67X{LCcGC+QT3Z#V)P!`N{%zo9l0 zkxS16o|;#1dElp5Q0#Kg+`=saUIf2AozdWK%T=L!-7+lr3(HYsA72G=RcRA!rApBC zWvXbylMe0~RITLN(|oji>d7{?nDYd69vw@^ZO%Qh5Ra_Kl;NA7yZeiVY~;3nBa9Cb zIo>d_VodWb^><&+VtQ?YwKC^8>$c5)CDivccc@q>bHI5|r?{*C6;fX@8$}DQm22Q& z89A=cUh1Q%td#^7K29@ZPFn8w4dSyZ)h~p=8PwkpK;aW#x|&&;_ZO^XTr`1t2dTb> z@`RX@4&fJ{_Q(p_=q9bADOEFPBaDa|CwDn(5t z_0nn03J^FwCY&Rm{!=QI>A}L$krF{SCUBD`joIFZ*vq?kT1}2iVmX0&?bp9IIL(=IhIl7 zZG}S9k+xwppl5tD#;l7J{C*1Ap4!(;MB9I=Zp4D>dHBPue@y7nfDC=f$HGMXcJLFT zXZuB}qDGT0b%XZ5KLMOi0ok z$tG`r#-$UsPp7qAztT^ zuno31KqU$L;PmfvS1kx=xKxlOUJafa!2Jsa70v!Vl!-wjoifAcj>sv%+9ITU&cT*vD(G9HVHQTr@&QC(-#!?{Hilmfjq}&NWW$I5TuZ6x2D6 ziraWY6w7I82>>D)1~-l$e+Tx?ZEVRo+ci(yrW6^#7|BM5uW`nS2RXM&J{lP(c2Avyh+BqvZ zDjUu27>BGTxS0F$rk*(`X*Na*Y~Dr>h?p-O zSfr}5a8{Np7KU1lDS(OGFc?TMiWnGeF|gmq+%twovwL~2zvKARb%2{$1(g4rGB72O zG@ZgkR)b@{ey@{>m|g=$wjXetK6Qfx2mXqbs+;6!^i=ipRe#nK0x|qhC=d|*Mrbhg zeHIE93ZZN?BEmilMft(H0!2iK7cp|B;iOO8*GGx6OSDQ`!yy0&DZmgL)%3x+I*CeN{mpB%4^SXS0J6-f_xS6_;!=$q{40HSwGiYYW4*t0|`^s@w*r#&=%mYl=(I$Xqo7lOER6zxI|(}Z`1$sGE9jnGI7%| z;M~cx_3^o?EuRxnf}(8*7X-exHH!mI%reMtQ??p^zWj#jPr2KO1LD#_5#4uxGEl-K zJoMLVZmfX_FMZm=2%iV7=LS2tmQboR7-rHepO8b}ea$HS& zHBgSsw8HN^XM=+cO`ZXUB(*|pSk9C1^>(9!r*?Y1caZcxuAFWsWaC^0pZl zj_Qt{ak@v`D@_e_VLaw)wF=ye48F&*&E-)Fg( zK(*B&1GXOqMx?Bl_FQ7Ss;e!M`af7G(_>oaD;R%Fmt>pP8w0u{ob_4GR)?4&Xy76; zpdA;vt2K=GLj-H*`}L-`boUMC1DB$0P|54DKr+yi%fW+&oCHV(CkPhc2nL9I6YwFg zUB!S7)$F@Tcrh<^+bO!k*su-+Z*MKXE>KCm7vw{vJ_vw}u58;+g=d3LpRat@fW^Ki z{_rt$VXfIN*Q;)TPY8j4f|puEAmcDr>dhK9^_Go)x;DBGyS?^%O_R0*X~X-cYk`fo zqYeIwo?Y{(gixA%LAEfq%K8fk)=Ev3wF^XuCp!1~LIl5{er|1)6Eln4|DWQwf@)H5 z%ndpkVc`I%bVI?LMazkEhw-bIa}b+aJ=PTaxkc?TSyvC4i;TgnN&U z)2+~vUl^y~J6&ic{jF5~s#lZb@#yV@Mc4>?`<+@uN7h>?aLvqPiNkkSOS6MZ4n7F$w6=tfb<5)V^HU1IGNydZ0ixWa6mh_RQW=nqaj~kW-yUT* z-tX7@^my2=24uMb^0tmeK>_r1JgozA$oIhzE-z9dlBnNfBDcalt7-~dc_dC{!`->~62Hk5 z+!BDWqW{I_KddnjQUiT&83RKtu z4#5rm)=!s8@asOhZQ#ffmO?b8NB|Cf{Hiz^eR#c0p@9E&!~ogmb8-;&Q|S>2l=&C} zE^Ttj0n_n76im&L{WHV;4Pa_tdJ9A5O2lS|{YQhiw*qoF%}8+V)lyh*V_ z^{gzL#^F7R1`^XkB0`5l)@}f)MXW*%+CKfWz~61a0in|N5JPjoM2(3`rS^FN`*lgt zdlpLF11@mbFjG%L5lcZySQb}-e;j7TR@Oi*V}_WlWPJ_ zmF3V9v>U|-^he?U*chP5j{vdCjp&9Tr5IhY*3rSTs+1$-GNmRay42bM5~2vQmAr-L z2LmNdo}gyZJrC8DGlL)vPPAD}of@b71kyjxMpoVr<06aU4uBmi2 zc)-9#C_SG@m?lu`y*J*;>fKPfMG4gAa+hSbEK##Xy;^eq6Y{t~1ET@J8*t=)sd)Bb zy+H$e*H}Qn1%Q_XkfN!?J$eurkLJ7SBU8ShH}Dv2P=H$sTqbPti%9OV;_cN!F%R@F z`h)e(Y`n+cpqI}2NUxJgDBORH6TqS1-=nt|*hAg$W~d^xNCqJ4Z~$7{A&iOBC3-Zf z0X>B`9piyp<0A}(Q0BS^p+raBY{X*hw9da;EoMu6mLKP)KgM`y0AZOKauA(Y10kUm ztu|%9xAG)U7%+z)$xy=8<{m@9XHeG;vVDk5{ElU*Uwa#;96JNR#DI=Gss}<&8fBVp ztNt7du9uua(@%{U-)-~FRRiP=>fJdNfi*XU$`BN}K(MwqNd<3T3KV)P-`u3z*dMmD zf)`i{Skl@OC`_!cz1{IBIuZWM+9mNWKapAu%?}N9yW%rBsg5mo2S9Axp7^Sp!}db8 zLpg(9TTvi&(xHnCr+grW7#(1>&SZMsOM(0>lKo_Wcm&iX>#z_f*B!R2xWGRx!hgK{ zDqmncCzbeNjRuG~xlC3jDY648r-Mzo1~n#I#}vFXiKq>06py8qc(PPiS-Cy-j@$`s z>&vPk!>PcW*d+iqbg`ZQOg{$O{9(^28Bu&!5E;0%rDv8^y^~Jm&`$vOCFtOZ-fWNu zE(Fe;W!!NQtWCs63bbP)347X6i_zHs!Bq3zhLimO?GPWZ84M%`QCrX9e&vXxLY3XX zrt*AbgTj$9Ndyzqp}YDhdoOmpb6po6piH9pgt}qF*udiB?&TZc>+8#t61gm-qj{6F0 z?W>& z@R$GUstZWL|Hfvc0R26R*ob1(LD_Qd1L_P6@d9ke4QFdim1TnVeiNAhgi$9U;Pndl zFp1iq+87`bgNmif@1+scSlRrRruS4273heWnTs!lA$}nNs$6EQ{m{T_$gLDE{K<)2 z-WiJsuAkF+pJ*{sKa`T1pYs7N|V_0h@{s#CnzF-*hn$wY+n698oWS>XT2ppkyq2 zpI$C^F>d9>eNjW>P*;2?Lr09n@)WM{CP9lfltOA&c}b2raUkOVbbjxptFBSJK0XZl zubf~KqIsk5HrV@Pe+g@!1&?0eB;MG|`0$zMtmQ2Mgn_Ic4pl~2P=9n0UySI-go`<8!s z7w;XbTh+=@uPuUz0Kh-VgJT$YK}Q0tP_xlZ42tI%3OE{-mYh5xdXDO_E}u^&Gi+=V z^KX=*;$N}u6WM{&C;XoruIS_Ic}y#qx1WC8)e1Vd8u*xxt+?&go1^*0ojmdG(b(3Q zyx<>MFNuijJSza0&xjA+>M3PjYT3WzzBCAQK)Wv9mkq}QJ(>eL_=IV(vp1z+nEa(8 z6R1DJ0aC4W_Q9EhM?B6f;)C!0G01wfD?kt+WuggxhZIl$G9{ke(>Mmxs7bK5FSf>H z-y;~pw&DG67YDq6AfDwXBn6>v&^kp_iGo}ci{vJ#gLx|zsZUOYnkq_HcUlaQKZKufsk*>*qKfkuV@2el~+Bl141 zg$S(+f}(xQhf(ay^mnDly#k;k-8nESK>s_T+NBq~fjp2Nxb3a%ntcr_)KEo?X!n!PbsZdv( z?4y-2Dq2$1E=!m>_TSszyQcy-!wOI)ZIoN(sl?^1{a3o$!5CeD95It+XU&7}xT4`q zLk+lK$R%z^&QK_-qvzf~#%-S&pW#9T#>aw0Tz68ytWJgpy;H?SP)R{-JlK}6wO%g% zEY{;D|2)y%0DW*xij+q~NI$_)1aOWy%s#9bVl!nTMJ&x!4yCZKVv)L9G!7I9A&DmZ z9&&xdAddqIvfcW@4?n^%ggrv!n}pNmK8TYJT`c|KXLuhGB_(of{RN~9IX_VUb^NK} z1b&`rqEJz1IOPewo8g2pF-V>Xlt8r`;C}^ zPL)y_dj8ziJPk70SUc-TC$<7SQn}5}xluPyP0>6nXj%e@n6OvY)&k!jIGkd5NQhy{ z9~H_^2c_FP{}XFHXHFKgCo)00vlrX{ly&i`vo@i%8%VV@cTEv0=W2I+uxBe$*693N ziZ=0)hBe-H*_UIrAd&*0@XUjXc~jFWCcN%&+l0qg6xuh-0EujGn`voH73 zLjPhrBX^qnq_1@0zi6LN9SuJFNrYogQ zB5swygCk&y-7l#&xBVtfrk}L~26t^2tR~zJ^|WfHjk|ZG1LcT%yUxv|Vc9J1U?PCR zd5URKCx0HFX#BXTLC0rQb!+jtwdI(W0lLgws-5-)a&CmKS!5l4jR}9GKPoAAh~*T_ zkmW6*_n^AG6x8b!rFLDRHZf6Dc5c6pj+$Rwc||WG1`ULvFm!6l1P2{8l5-^URC_p1 zj3BJ`Vdt`K=Nucb2(joIS#UN72A-lvsrcW5eD#zl#9$yjpL<3!jJD z=x4Juy**Qd+Rkkf_(Bm`lpBg9%F7yEF(t}YeVF$MLc@+iW0k491@|a^VPV#vC}RvV z3YhABg}yM8h5|{BsXPG0+)g5QEKsRDTZEV}(z*%6k#R^d(oSe7bo`P6Y6G_?(A&q# ziIJ>Q%qnvg6f1C7D}LEvyNqaaO;mWov)dvswo867bP5a@tPl zR-RbS_c;@^0BK>1bO(h0kpj;V=mrXQSjWHneeVA%Kx3uJ<-CgA+d38ogeX-O$V6Ft zrLw2q$ghMEo@Bf`iK7)gi;~9p$$`!2m@>a;V$|Y~E#?`p{NQK_78EO)!gA54hafiB zs393~jA#hlyUQL+@@zD%M6^EKF@XIiTf5TgXY!5vm|K>^=6Q>;ssrqZjd3QUL~^1> zQzQiNIQ1+o;JiJZ7THOEJwtSFi3?sUefHIRP6-$pqKG;)U`u4BS@uAu+`-v|F9<+a@n7a=fk)D{UzEUc`R#*y+}GK#oLgj zJCsRs5yaj&d;yw*0WWmPD^YqIkn;NnUh{h`DYwb_DpB&OZ@9;dQ240JpS@H0EebItz@cxvz$8Iryu9lc3BY(SjW=4zLsgxB*DGwMgpm5`Sv{TN2 zK>zKIzuYo)0`%Jj(k{CubjWZvM|SaxfQ-}EH4u#GAlwe1zI53QZ`I zme%aA+E{tS5?`_c0Oyt`m}?~gDJ(qft~E^u4t-^K-_bIS21vASLYgkOY9db zoY*N<=Kto1N|h@f2q_TCBX=adddd|7B9^LdfBO72dhBUQI{abxPPWJ}DS(Ja%+(OA zvvD`-EQ30Q1?EF2LVYCWM8S>qRhT_S&>z!facS}K7@`wIx&NnX{QE{;gn)Sek3M^3 zw+G~d7%H!&pohJ*Si|DluA56ABSiGSu>)+&oC64K##Q@_*#uvhp>es6|Kpq%5<1d; zoMCG$WF=!)h=I_-5;@mZHH1HV8EZfG_Ni0S6&osV_~}E?y}<1O1wvg!=(10Eilg&^ z`liO7F8HX8*qQFeJulpBrNe}JW`Yp-Ii8<}bX|y#>nrrw$(ENJzP&TZN88!{0^9bO3Xe+Qzvh)3ls2y4g7;BC2Vlvj=6%)SWf~LdOvtkgKya*0IP?bCe{3~ z%mz}aoG@$iTc3H;Zn!X{RL6bmi*f`O+Fx^&Y+=HR_0%$R$p8WbDuepk(doof#-b6#&ovuTYme!h|5HctiivS>y}^pa zKOGN87_U>_Jp^V7qhy)U!jmjT9vF7jI%!%ZX3sMV{anVDWbnf~SBs_mYd(+wAsF({ zi?5h~bjoNV==8pI+qF*?AV5*z+87JkTQ94U^LU1mSKm~&JF+?w61hlY)m&T0 z*F3|hW(#P)zv?G`9(*mCC;|?DwMPYun`kv@P^QtIFf%;Juo%{Xgl<+)k zr21aL$GTcx2Fns4wi{Oa*yTYIw}tPA@+DbM!3 z+_>oL4R@Sxt&^kGxxt@;4ZotJ96q?_co#7MlL)KjnESx#u%{D*$r6{~X^V#yT2fPyRqr0^`5PPJ|-rP9FJwJU>y6K?unO)WL&z*mb z6N=nKc8UW*V+@ux2-DXM2^}6b^~WI#YHBFLTyUG@U4%8eni<+pEwe|2&j5mf)9$I# z>IbsE=i@;S)aRy_v1ecT&93_Ag;<$KWGn)vTRG1w_SPS+Mk?yvDki8rERVl+{J=n@ z@LRa-ySJUOj=XWpvwTT6_SPOBJoj@_g~HwZ#fT$pyYiq^cDMn^+_v}-La^XAV6O3@ zHSqiW*-`z^WjTGS++IseiE#p}@DG1m zSoFYzIyXKq1`;0-d4{hUd?ro_gdp4}U+u3S#sA!!UNjc}@u)nR`df<3ft-eQt89=< zR4PArbiQy6@T$5Hbn4LxUo(kP#fcYg-m`4_=jD2hgpj`o%)c|-vpg@`4A8)+h$uMS z#c}{#OjB_One`k~I4Ip25FN40z>OHJmzSIt^0f>#n8%-<$zM)|2#2Pvol%1_iVQh= zx}mPlXO+y7U%rS+l3@$c29B{WtA3PuiTRRQ-WvU(m8DRh zc9oDOJB}feRj&xM>U>uZ$6!*Z8bYcxq<6hvQyJsjX4ttQ9LWlSXU9BoHqGK_r9)>i zWP0fS>t!h8SEwJ5ELb1$p_nTgd&T!byo?%05<8wuK`yPoZRJUudh78z1|Y%8P$emj zL_6qxuseF|pC9v@3$IX=;25n=Wi{n${efM>R>EAD#9t6mGBH1@U*0C_MQ?4mpV&dd zNv33b@HB<8m*RU%^KgFUvK!sdb1KS~WwFV4dVkpBvQ6jm`_{6#B?c$DX7v{5Tv5G7 zhenShyJAB&W`cO_*pF$hrvvQK#8G-##9R@gvE0kH>;jJ$((^%Ler3^NbdiE_>`MKd}PvA@Mf@#UA$;oqbeY-w5 zS>Ila(&L=0*4Uhg=v&$6h+`c+WE{=#VY^r_osbXZ&O-8f}y zj$u@aKQWukQy$ky8CP!QE;bPddq1Y30e|%9otcSc&!=o3ZZ)2UzjGPTUX7X|hS|V63*6IzGYi9EgGOez_{*Lo$SE<$3LV?9I z$}g5A78wkGCETg~xp~;q0^%LD_iSiv>E{j}lhSQ(Tl>vAv-+?ZF~@&f^}{NMCF7@J z1cilNVauVR*CL72`PfX44GZ$UCyHJDzgaW5Q}@XEn6%O?s4YG@Lx7=AJ7NSnn)Q3t z(0`TH&NE9>&Zs)1QZ5Pp2rbnaH9=0Q*x9}3|4wpk)cy?;Z(jNL{e-Z4FIe4l%7tHk zy$C;A{cLshReaEV;`N?KpID_~H!MT+^oy9;($fDc@2tDp=)x^N2?2t;yGto9!GlxW z3&q_j4n>30;uJ0JQYbD(L(#UpI20{VXmQsf<>r2Y`vva#FIlsatjReuXP#&8{d>n_ z9%Uh&O^YA^LQA`M|a%8SL0nCV{J9Em^?s)vWx8_ZBq+U%LzPP=1;-!81I^ zdS}oC4ubhpFvv&otN#0KKlAZv!+GtE{5j!JLWh<*@8=Uh;)&&GVwUEilX8Oq2e>MD z#~hT8f%ZJYP5@m-3a`>p%LtZX0!LsMPbO0K`Nd5WlGj1fuRdxZ&Ri zC93+GBOBMQr-^h4Lt$2~EwcQ$D^e0y$Aw$g|M`046I0G+M--@|1I#|+R-z-MpC5*? z*PVdsEaxTnwZ{Tx`rVbU6Ey@t!38Qu5JeToNT$+#dZgQ<`-Fi8f1Yi>^a5IihIF+E zVt&0dH*ZqlDuUpa7ST!13TG3h0+ef~+D)|>%XAIo?WI4!a)3&hWO+jn%5OC5&wG-GydQE^OWUKTVKs%U~1c$b?;yK^J3!P zTvesTj?p?y*eTB$O-lV}2qW%Ur#`Ep@mH2N+?PFIp8p(;Vpjo>o35+}Tk2ZD%+fk@ z+B=rPFS`~wC*0Z)iC|C; z)iX&jPFNf`{w4ki&itSgJBgMZj~b1C#&L_2TKIf{ zU{K{osiagOD@?1QsrUH8gfIFCJBTuZqmj_3-#-79h|g%J2>H62Mq2oiRPocUBsy}> zVqNiL81)Q``=2M5tbeaiFkJ!?)E^BTiwMsw4Kzsb1uh1F zdFAy@C4@H#7d(c<|I4r1#Fc(~rZP2|67QPv5kw&my9|BSa=xu5Ry-Is?QO-_?was0L`0byb~ITU2cl9c>9&#D(^Re>JZf@N;aho}jk@dt{|{0^D~8Wj0_ zKTKN%ZdEyjk=Ni}$^}IYLgHMo4~+pH@ob_`Jv?U?#&CNqrrk10X!WR}X0#_WFd;~* ziAqcSjeYwlC^X9m(~gNA|Xaw$_p=oN+muheiZx+K|bn%=aGslMilCKKW4GQy zwA?rc*Yaew5~rx4tfP)k5F&eR=u=Z~Zd;W7o=X|aj93HQ|nBB?HOKL+e zOy3mz3DARu@%&?3k~MxM3P!3-*jlcw_&>uWXMwagkG{QR6EHI@!a`CxGC&!J$}oys zVYjQ5YlhY<2J^5<8P(c;OK`EXPYV^8QkeQ|xg(%pUG7sIuMYw0i`^519p81T+^yPD(@HjVIHP>pJ7;(xw zs%TBCXyMuWrWf{=6qOuiG(65A#>YjmH9_ldm=z^RquJ+;Q|dnq$_O;*Z%KagCsNeE z^J!XDb2|sDu)Nwq(0x-rfze1~R=KMSDJxF=FNcX*zlv}T!tbMJOkxeb_tpS^j zcIS^jD8Vq$)we7yrFX$-W0fOPhH9$@eN<3da{%>eWAAp{y0l6X17B+Gal4ye-^aE! zk>hCC(^opb%KG%tCNa{B=vj3h?tZsyti20H<}klt1Wxe!!qR$&3|0itL`z1ugRwD| zyDSh^)PhjAY~!L#Y#*V-VF(aI(^>e{2xk9A&8rZgt6VK4E=JNzigYpL`!AC2k3qV{ zIdn^Q+%v|1qOQ@%#E>tOLryD*1%BvY@7Fa{$?V$c8CL68&Tt~Eh$qdev{&&%k@^RB zQ}Q~2F7@lr#I8<;U*D**E$nG|7Fj!EbY9(900WQG>-M`?bi@J?87QT2J*n{WEAoU+ z6P(;mGsBIplC)|Qfw%jz@p#P?i09@QxS&BpJy425LDY1$i z*Pfr-{3apGULhZg^B7JlUrnNKh4c}qH5?^RajMQuC9f+MW{=UqZVRFohLRQ6zUl$K zyCW^*Far5qo`FutE=gA(rUoBK%%YohRmXLX^S+rHbA3TNng8Tt&4RO{J~jq-dTqD4 zt`&3a=Ie;6-9H=e2RL{_JADI(KEK-VS*~?K_G8#uK@?u5%k?Tc>7ypk4p- z$1>cV%as?(IIj~)?~qXn`5a47I@(1h=J+~Lw)DOx7cHTmCGfuVJdRmsf$t{G8}#KR zIZC8C>9m_k+W}?!h{-emUNW!hIe7;ft?E0;a7JK`Wa_^H$(ocxju<{uKgnKtVnC|F z(&Z3x2_*b{;iP;p7mZb2+(Bz5@%5B>-57cb?X^j0=vWwT&zZXEX=`&c((m2Dt6 z-IE2*(72CpTW@%(wHPsLo{t`cSZ8p3bw#}T%vR+Q<({hyP^B%Y4D)lw+01*vq&p=7 z$y<;;8fT!8Wt>Q}D&F~Wx+r7sbuBRzSj=F`NHUogrF6MFo6%R6;(<&{&JYVwy<_Ft z<)VH&XR!o8aK3({two)%xB`Dw#P>ua!p79}VAu=BY-VFU7TA~L`TW}MZ|Z#k;^$56 zQwq4(5<3%Xq;CWAAefWYqAz|su~N9|-`svlLil^tAJlxgOSt`W=)+{2UAZWPZgui9 z2ip_h+b>Ii-TA%N&$kn0b^D2a^Ts;B!|A26xNDuH`6p$1D(p!kllM&Vyphi+R<`^h z?IqKLYjK{wpiNbBo;qqel`mw~#5yqwX2*Q?HET>DKlly@uDV((wz{O=yB_3NXWbs0?`vk4oBzaO{1OjV* zSYh^isqAJ4&EsCj+_~2LlX*aBbbeHvtI{j3v7D}L+;e33{ZmEd-%)rpaOeYWGz!qY zb!@dj3__4#Tz^Aa^I;&QwJAWCt9Z5(Ny<60h_F(b3=i zHJg#~T)=(j@FPSQ0ZMns8^~>SP|9Oi6uX};bEO`p5%+vzL!VMMgHac(xG6Vj zw7RgQNP-FHu;9w3WpuvpPppLt6JFi?oL1X-2Q2ezEg09Ym8go$L`r71IyTjaBt7{I z>*`kOLik3}*$6UWqo7x9GD9lh)BlRw1}E1nB3r(eH6suIN`s=qX5y||(f0J7F(c~0 zs-G)thXj|#y=ljr{KUSuRuZ*}5E*%}cR2OhO_mg--RpL%t5Xw zemRn$MDXq&FCiN<>p;~(kUW}KDv!um(Mtf*h;sg!A8q`p%i9d-lv%6SOJ^o=>l;J_ zi=cyL&=xi$%1kdmgQwgDO(lAt$egn5r>}WHt^0$ajpaoxVKoNh!*Tq)u=2*CHwfKN z*bf5_3^Z!D*Dj+~I7#|A5*~lAh>;-BxHFkEer6^4CBG#%VDQK5IK5%2F!UVuBs5X8 z*2u$3QS2B-u>8>|plsWKPF5dCv<(;x@NHNqs<=xyY}urUAs-KU;lVq=?iAzU-|yic zf0*(N5Cj`VwL@$t4rK5C(}|%ZFiAyPY0_P@QT7zjbI+BgS#kk9Wqmhj%cpB{2@CV3 zLX*CJ>vO@*seIq?*k2t!v<~$Iy`1V{SwHe6B-U{IYG-ee@;BMcZeJ9h*3X1+39Qo& z9wagsdkd__-~pu4#so8Zn;O8YGNq_%{?cK@O+xc!;>%PGzQ9kJ_%4q+pyGlVlY67_ zhdiSK3g+0`B__GN4^YO0`L(9yZ+H?CCyWqJwMQ{hgilbe!K>Njo|3O7fa(q-gRR_z zd4Y0jZ!gA<4jLmGJVF~Av7z&E-CAO`VaB|6$l1boV&PQ>((WMDN1ROAY=Mt4lS}VH z1k`zV{Fh?0$xCms>o_S)TR&&oD%c8zovgkub$j*fmdhOT()D4=<(YF^8aSnX<;4v*A=;nd3E6xAa&-Kk6$6LVSHyF@#YW*` zG|H`~NO0par$K?R)I@_OjY7Nrx9G9-L2A!nvIE?TDvM?ubhv%=CnHnhpFqmcUGd=sSOD|Tr;%`5Au|GGC4ZL0m?HN`nbtVJ8W z9d6=F5vix!CQU!d&gYF7M!!qil6(}{_)sQS;qgrZhY-h-yI3!JH;)GzJXGss+euo3 zFI0$tp2XF~yG&P?nZn28!FHA@b?dN+M)DzB-yP9iOq2R^kGgvef+m5uANcV2EdhqJ zf({?y3}QUu5}MGd?wQ2Mz9{v`GVN8`99@ z@nV6wBw_IbA!d^2hxt3#AVTl3*R1UI6b$6$vEh`BA5EXjd^Jaw=1WR4=&w=sURmbR ze4KEek8y;+*-tdejpv6G;^C^m;+d1*IW)l*uSM&mpfmqoGX3B)()54|NMAYf{ZW!G z(AP;|rNXBQl+0cui;P19v2Br2WI?8oB|2fAQs#SKNV930RVbbn-c+Z)`6=OIks$!N zfCCE-ZUP?J9f|6Rh&s(eAaQ|OJAhRw$cWBJf$v)o2x{W&!sGk*R0YL&oh#Vty3oDe z4H*}xY72_dGj_6_kOHZEX|_P@@Oeea{bOZk9HC*vv>Msn_I!BXEgsS0GA0pS7wJ`5 zeB|`nv;AsLSdATtw~HXMjHW@TkM3FdH`P2vJ$Iwsg#8labbmcZCkCL0gq^!h*f_bc zB3O$oqUN2)=GMjrmL6Vn0*v?4I}Ue$|J!pecenD~Rou(}yH2^fH}x~`559`V;gK1M z)0U;f8+#P&=c3nIHR#V1E{Ji>z`CNxsAP??V*rgn%O-60d2}Vld-Kla4e+k3X~F!QXE-)K@O@r77$6>`aAgySVk{YmE};v zt3K&^Yp3{YtJp^xf8=TE+9%Zv!)-kAHRv#jk>lI~@$h|`+45uT83J`ev->eHKOXiZ zx53{`{h*Q`PY~r*0G5}j$2+;wl`efU9}cLnrvAPpLsXDYV;mBmb8~XiUJ-*yLyi2A zc*rz4xdI3=P(aiDJ37~BHuN%3bU0-;QzyjhgMtpxlHAA>PG~| ze=Uqg3L@&hE?@)=g&(hggr4K|IWeN0%jzvU3bY7<3QNz5j+V6!oe`Wf+%V1l4R58e zi>()EoaAtyN}a~MJg@dqqA4CubpsZp%1paQ0o(4`s;>aE13D8d!i%4;D%UBX{gtgo zTyCf!=V}5b20URe4+8%z_q*Q~&9jTXGNXgjCrzEaw}c>a(8Zh9Kr7aC^-?X(li$+< zF(@wX^?IMZ=Mw;hv5cNT5vL#C|NQ_sO|jpY)a~bsHXB(N=;RaHA*KkH?Vw29&=5mV z2-!k!ED$5(;Bt`bopnAu9 zFsOP!MTU>PMWp;w=SKGngYoyGBOWDk{HhojudvfX1;G@!l*LqY)(Q)=3;rvlZgN@^ zX=k#Z0Dd!!U1QmwLU~lQM2N0nkS3{V<~po8D-EYlnKS#N`CP&H+Q=R{nLvs*6gmCk z+Z`Wgpq2DH%0d!Ei`wSz^}FhRk9-cqcBBG2($@6HH>coY>FuW0VfGPHo}*#-ks8H#wH&2(NpmI`xH zczZ~kf9zv^u{q_iT=(cm3jDRcn!2R~TfqEV%U88ivPf?eTh^qUvr!m|lXe{06afb7 zwvA>L^&oOI$IW*DCw1&6ibg_(9)Svqa7|!H?`kem?(;z6mGQ5Ky4Pf@fyvTC6#^r_ zHNE|`iPl0b*ShToavarccS#Uh_rZ(g|HPDWd((Zm_l?eXAXd{}{h5@dA2zQ)J_Aqr z$!abCNuPd|;LhErM>@pFOtAwE+a5DWAaKp`(32+qFUD~a^1+iW4=Zp~!_w%eN5M`Y z`MvZs-KV2r@_V7sE1Bqcfmap9#uNRRW~#UiXw(RDfvLa-WaP=`tIm%5Nlw7m1SWkY zqeM2`aiX)1rd7FG=)*4XAy<+Fp%63icd&#>6#v*xM-}7=4weU6e+y7Yvc_Oy6f& zEo4`=FVW4L2dV*zq%LY~S|xJ9?8ZIJfc{N^pm+kFQT`24rYy*vH%z>rrXBP4qv0^Sw!|?KT^)^595Pcc1Avw(9y5}F^ode*>BQz!6d9D= zq~JYA(A#w)gpy!Z$n&P?`{9EmxC^)~>ulKAPz?FHYWu}jYHoCakkv*Krrfh_*bFP6PydxYF0Q5ZD=~bncm$u8H!k$Q<97fnL3JUKm(nTIp%8_K zyT#^pl}5{2qWMDy1W|e0Sm~ms{q}GM>eRgRRMJ&NrE%a0c53^|2@poub-&3OmG>bR z>U7E3dzig6$<6ffH1jg`NVH!3#4chHX3FWlX)xq5#BY&{q z;p)Id@xz7L;Y`U02gK?v(99cG=J_Wr0xI_Th%o3pvQ+O-a0;%%zmu)F6%~>Iq{>G) z)wigKpP@(5ym-Gukp4oE%IN#XYp@`fLN90NIxpJYf+fQf}?=Kf< zik^mPOTcFZ9b~2`?797s<1H~20$T!qVH-Ci2rE)wo)>%_<2Ca+=ACY)-2)!Dc-!{E zX3eA#cAMTvFE3AT+*Mh`MR~?2kGrk)LMZk!6s_b(M*;Qq8!6U=pN>RZMLK||&|(RB zQ%8xzXzXag3404fCo|DnP!%{<1VZW8tg#RfM2U1@NGXu7Y%4^-#GEeic@_{KV@c0 zFF9a>GGsefCEW)vH{ryvclUqXplDYLh{SCy*f(4keBR6~+;8XwVRA;Ks z4KzhiBNGMFb!+vmmyG{Y@cIr*vec)q@gF#R=I@6MQvofxDVIg=?O{ST!hWGQ)+VG& zg9{HgG$;1A@z$d&U@SgEmFN&E${Fq=0|q)*(q$yaH`ADF?a>yP-;Rc|dEe8F^I1xWYGjKym$5on$;2UN} z-#)l4*584@6`Eica29r^GJ#en;9wYV&2-SC*maHOm#JNqd)sh^#@t@Gi&oh||1tO# zvmSY@X}jiLUA~cAM4v+u^Hdl)X#`JqtvKXkmBW3 zCPd&KM&12mSN27qCU9Zx^*{#-F#$LW>f^{{Q@a*&TMK?bkcGqum#uY0AO~}!=^EKN zTYdPxzT%o$XXUqion&?-+ke_vhz}>i&iWW1Uw;3^SwngoIW6|@Z?OhL&7e--qpEYC zKC$w*Aw}2S@zho^p})5rq=1a3h$A@Or$G9*y&r{%tQ1yfOXYXwzfnNfd6{02$^p1u5_^jM4S?APeJ6nj22p!{NE5L% z0LUHKCVpw1$}j={ei9>;n#nJpv$dIREmmmVIc@pM>Hr2doCEieRDz0{S6s|1!0ODN z<7oXF{zv{X62ux5(O&^j5=iHOE)#~0ZArce%%;fVDsD-!hi7Kw4>MNSMU2QCwVp=c z2#D#cjpduGOV0Oc11HZAH(1CIY|NmZln{b9mB8h88em}vJh6f{_7V{_zSDEs`hT)C z?{^pPO2A0U=uLNU=T9ACmUR;N?xmzyCp&Oi)>8#QiKvi$H^gs2%ujA01p5)>#1Yra zNJR7ZOMkf4%SaDdUQ$s;SB-<8Y>4jW@G9^r1!NstI0qLN=an8Jt z1vA3+N|*cGCOn}>hdU#X=n0}7BIOWEk(>4?+p^hcT`fcD|9th_P>+Sdm9*I(RXwh$ zKyX4OKY~QU>Cj1qJSg%}12mL~68WI167Ao)f&&R^6Cz2GhL}Mrpla)|S^%mFoa=&4 zIUsNkbNbT^vCK4#M!%IeeB81aPy^XkP_?K$)=w6I_}k8URTO%+9MrG=zoiBhz4d}L zcZ1usPtR5zFZ;ki3#2fsLf9eiH>YH1IT`u+b6SSS@%IBv-qU<&xPge7g-WL?t`BFN zY?C@Khh|+CK9~`!uc0eLQqwk_m=}rQR?IxuCw4y#fWVg7^1;7m-MApw>C-zQknueU zm>&-OpouVBcJp2cMJ=+ke4x&&>%G^@#T^Kt?edQ$?fvZ&pJjK`Ct(lEsF2r&kEltx zF5qh!k_~8N0sJYyG-$C&W8C^U3Dh@Ek}U8+ z|FA6u6|!*(xCK$G%d6iXEn+1_&aEe|PPl>%)!xB-oF4FvBWf4=h3i=3+f6Wbm9c`oVz0?_f_Fc@r_LhEH zIZacEf<=A0{w-h8&b+KwK$>r#EF3BOpS_~E@AM%t!fLN)V_`CC=Zp5j=Npu(ee=KM zUDseGV3E$J@%5LQi8#hjP-LxISR@#U;m|k8sr^}=#@2KH^@zA?YNzZ=z|ab1EsAot zpOiIPb{oC6XNQZl3R$nhOf2*U!9#WVQn!cWdXV;4p}dm+{LDLTN^Z^p|%nFAx@P+p_|WbCCW2;p-NI-tuF65xn#o+9Bz>5X6M zzUz@-mZ(+Z4ZlIepI;1IfWf($%yEjJ^UPNd*;WAdE52nfj;T^4P;kRE*mM6!Xz`p| z95>-b1_!V+_xJ(G?_F~KNdnK!l}w*dae z)`rHyQ)Jd()UGa;4g`-GPw=0ULotAd>bUIxL)(@zuczRqx6Nzu-tw~gI`xZd>juD% z{zIWn3je_W`qBo!du4B_d01LC-UkVSm;4|WvDRg8bw$^yVFEcDFIsPvb_ z6QW7K0XEg)#Ofhw_lFsrjXELAzI)%~{ss{xhERPF!n^#vxg=6=+M!+v#`!Fh<+t|j--+1hup z!UlsqB%2^DQf}E2EW&^K@LdvgaZ~K1q+1zoTc?CwYa{g8##{}rfcZ}t<>@xp6`?DG zZ-V9y^2Te6vVb#cWX!DA5klbUG_vuSR+l=uh-dGZ$@HXB zHR2Q;h;xX)(E8KCTn&Gh5xTJep4x8WK6=k&3*Wy(T53Z9`-A>tbfg0M2+>kTthaS9j!CZp7%qijkpY#sgdBk7ac%#LJxFtzUCm<vl{k82o-FzbFKemv49xeUX?aUgT@-!D>)#Hr;1U|_<_oR8N~k!0|zkR-S5u@ ztF$tZhYwY0-R)p+_<@Us!PM+%L}11BFs`v19w7 zjM4%et;EsyAlAh9-a7ZWSbd-L-d`!i0;zU9(ciU+YNYMX7c+*sMFDTa2_g%A#l)^9 zZHgPA_5>c!PO=_HWrlLjJ4pW1v}Rfs#;KSU-lq#@PzVC-Wbm&s$XtnNkk?8TN~FK> zZwlj72ISN`PVd^=pv$rD{hgE^O`9d4P#B6RNEsDZI6zX;Q}e|lHylYzX!=V<)RBa! z3xNj?cV{Bng;&BKi~u;A?#$gqyH`8i8CGyQmhA`Ii7>rf;)xJ?km~7PuIW#GNKHRg z71mUosw1c_;+@2aq1bG`@_3*eVAVZpW)W6+e_!6(CTjppY=-FYg}QK4wmd3+W8Hyl zjF+uykf`tqKxOdK^k~0+j>Og8It+z^Od>MYyCJ7L?f^LyIN*I+34*+3>0FN%lEC%2 zCg23rSQ^KfvCV$+?K^lo95`JG^C`QWGz57npEZWlalb2Js(D#*DkP zkhFjJAfTrF{^y5CK9uyY8lP9a8^>2BlOt%Y>Ng**TK9jL4}EyZY2~arI`Vx>Nom*&t2JR2<2zwT|?WnXbVG> z!(mPR-BPe`@J|l@6&fBxUUGIvuQdx_vJ+6T7bf(wvWOelqNVGotNQ&@I3UsTL%_j? zE@Q-w%?F9RWTP7A?GQ(_cv>M1l)+TeP$A_DzF)(y(G}nj6?m);@Uuu0Betal?-_If zm_LkzfI&lUc^it9C%w#|nzB`;-xZQXM|=lGeUZyU4KRt6^nv9GSgcN1j9Td29q$n0BBirMlfJ_w5$MHM6%aJ zAv>WAKXps@s82?pLfh^f(2f&G($OaU&bg|-ONgkct_b7sYnZO-mSz5DE#AeUFwDoIFvsV^UzEVb ztwAO*MP`83WU=;-IXYmL6z-{HGZVnO^+uzqcp5~i3)T@^9^B~aJa9}2?*7w9mobuX zUG@D;vu$6>wjYUs2&+=A$S-vaE4V|H6cxwr)RsLKe_m+ze;eL_hpeII2{46A2u>7o z*lrmdD1DnJpH;M{52CkkHX?Zy$@TkfgZ-_{cjkM5x|0eKB^R3Ycb32g^>Wb3RZ&O4QkV2pKM>#;l2E@aWMSv#YPhY ze!zFkz(m}8jdY^Vu)sz4^lna{xuN3WtEd6=DBY59H6U4vBZGtv3yw&+qC(T@cB-!& zSQN7X_f2ZSHCJ*5;vKN-^Qx|(e*=xYzfFfqgj_!(gvITrhv+fppT&X3$0-?6^)chCafcqV`%9dJyF!4R;d3=o zIsM82cJ4xiR#2NeQxMh(hFW3hbTBa0xUD8NVe#;W-1DSipGnfIHLw$cu8VYm)`n+p zY)M3kFBbmjNmHwIn(s>UuwQJxTm+_$hIY{Fb9X{Xsq3TcxU1%}UKIs`Wt?M)@~fY6 zzzA;yg#S$(x`U!JI6mw+qdk|lM0m+g33s2S{yZ4KmylOApwxBAKI0d@zUBcq;lZ@rpi z9}(jXhyO^MzuWoyQ_jB_T2i)lCfHVCmGkbUK~5Z5an#u$PlxZAOjpVPd;;+*|eJcZ6}1bTAfyM_#KsGD^K8eKB1>*gtIuK zUV-0tyevL3{9m#D4F`el-N^9{sRB}xhL+x^JU5#u$#=+;3T!p4Qpg6p*WDVVHC{bZ zz~8dcWXCQwEU<%Yn_REr04<`UF`vrxByOxI%V?_?sqz2R@?u35pyScky<#XOq*c$? z&c?kOfXI@-9hi0z0Dac*o+9EE)}H_J3kKFLFj;(GnZUjRt8AQC0?#bi&^k-Bdwy*3~sB|a zK&SGJnKl0Q#nG>xspdUvc{U#`dMr9>29uopn315NdU`ItJwprNkt+(;PeaV^4qD7FoF)x$u)lm1R-*|HY1dO%6`0p{k!3 zfDp2Vvk?M~1Fm@9{PiK*zWntDnz(T`m+i+sP+#V`u3kfsT4AEun|%n(kyfMEa6?C} zrfbu8(Xdh}R2u@=Xh%ns@fRweSKpX?i3&ppHNwOK8KXyd!q8zu4mL~Q;;YUog9T@l z{o&aB)=s$Y|G6x%FEq-k@YAygM0t3_rS(+fctGVcG981W5qWs02fiS;fGuVfKm*Pn zSug&h^q8Hn1MKK-$QQbJcax0=EN(`3Im+{=B|xL?15%LrS2ij@WEmKS+K`To(MNJ$ zw|xh#gY3waqCDT*!rESw#^w2BTb%PRz}iJAF|lKQv3agLXDhAwObB_kIxsfl z8c3^!(I#wJ3HMB38U2|5MD|(ndgMbn1_w8MD!_FVxUrN}3p<8%eozkr%P0#+UbX77 z>NwQ^_puf|JvUta*4KV4pagrYS~dLNPk!1gvDe5IDZrp1^txm zX>O=|HJjK{PfJ33eZj{(bv1V@o%9~uII*pRc4Vh&$ty}1B8$Wi2FEi&yi1QGKD-F{ z<+U2!Cu)MAV4N~qf!ghe)+97SVkVogtGKs0drbkN7MsLl1gb|E^(h$lJnJiN2D`iu zunhS7z1`0zov+cO3!2$}Rg!*z;OgS}#kro(f`zIq31fo}iAW{gj#DoP@9j6ZU)6i) zg7}MJhk~9rw%JUu7UE|UNsYqfzdASp>@a>&^?FYc2eHn~C7yHeJl|m?E!u(x?vCKE z3@?TZwza(N4=vm^61!f3hcdF7|?7TeM-ZtDcaL-v*XN|;4xbOZ1q_qX^d}& zSauoUJpKi<8Yc*-V~WFNz5R6edl8?TEOH1?lJU*jI2Cs>t`)Za9j>a%r5uPUCClaDB9pg!t1RfD147Lb{dm&X$hmaS;=s=QwS_y zGAdV8(yC{E>a{bS(bLfOU$0WAb}a>kE)(O@CRovRr*+mq=5k2uMxY!TAuv9>Nq1(6 zt<{Gk1uH}wIi+~m#)Mv^%7k$X5Fs&=2OL(Y!)vtIMmeGzmNCU#)u!$7Hm7{&{M}E` z$)2yTu#l8kHeybjt6s4QY_`^-rpnlv3^8*!{-Ql$a%!J?B}c`6goNfhwy&^zJVq^2 zE<&(_R52lE^qfRnZCr(`GM|ZRgy2Ps+qY=Kk}ob(q(eWjWqy`N-x^n)_xXOOT8p0# zlS5?->n9BbkDVnq)Y3KKICSMxB?!L#e!%9R5;w;I04B$F3K9oExqfY747c-ZHi`ZN$vi^yeLxvJe4ih-3PXXwZ zl@;|4T(&_x=;Z&%;=K&VI|&PzSmpB~i-{_o_l^x^Cz!03W;i_ACs#G$YdB0heI_U1 zq7#)%tM?4X&=dPxob%28jp-wjPf)-e5L6DCB~*d_}Z(x^-^#g2v1v4*{!GNy?foklqf4$0z0^uGKP z6`=RSTs^^!?HtE*LI8{JjzG6z8s|SK`9d=jhaaEKm@_B++JW$Xj&88D5;S|p({;Id zu90lp$!-31x76Ubpyd03$rLerFBMYO0NBENfB z?39ZAh@GCxp?KXoI1Jb9aFyadKG={t_5jm%Cg5~^%&&hXhcl%DJ=lmplm*uf_T$L* z>!X^7;aj%13JSB9PfYplR!@eW|1cSbI`+p+sKaGJr{P6vUnC)oE)7K)8J24m{CDAf zT`^L(nz=}Kd)j~m3BwUZ5PqjFF5c)*%%IvOWn(CNO~GP? z`Uu+mGMdwTb8J#zXBb0A=d|bsyvs8u9o-D!T*Au-GTG9;~VYO-Tfb QBm)31l(ZB-$y-JK4`@Ap(EtDd literal 0 HcmV?d00001 diff --git a/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/woolworths.png b/mih_ui/lib/mih_package_components/assets/images/loyalty_cards/woolworths.png new file mode 100644 index 0000000000000000000000000000000000000000..77f7353eeb63f0cf06a9ececa049fff2b10df72d GIT binary patch literal 9154 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 { ); } + Color getCardColor(String shopName) { + switch (shopName.toLowerCase()) { + case "apple tree": + return const Color(0xFFffffff); + case "best before": + return const Color(0xFF000000); + case "checkers": + return const Color(0xFF00a6a3); + case "clicks": + return const Color(0xFF005caf); + case "cotton:on": + return const Color(0xFFffffff); + case "dis-chem": + return const Color(0xFF00a950); + case "pick n pay": + return const Color(0xFFffffff); + case "shoprite": + return const Color(0xFFc12514); + case "spar": + return const Color(0xFFffffff); + case "woolworths": + return const Color(0xFF000000); + case "makro": + return const Color(0xFFffffff); + case "fresh stop": + return const Color(0xFF50b849); + case "panarottis": + return const Color(0xFF3c3c3b); + case "shell": + return const Color(0xFF1d232a); + case "edgars": + return const Color(0xFFffffff); + case "jet": + return const Color(0xFFffffff); + case "spur": + return const Color(0xFF0a0157); + case "infinity": + return const Color(0xFFffffff); + case "eskom": + return const Color(0xFF003897); + case "+more": + return const Color(0xFFffffff); + case "bp": + return const Color(0xFF9dc600); + case "builders warehouse": + return const Color(0xFFffcb26); + case "exclusive books": + return const Color(0xFF2abdc5); + case "pna": + return const Color(0xFFcf3339); + case "pq clothing": + return const Color(0xFFed2223); + case "rage": + return const Color(0xFFffffff); + case "sasol": + return const Color(0xFFffffff); + case "tfg group": + return const Color(0xFF622775); + case "toys r us": + return const Color(0xFF0962ad); + case "leroy merlin": + return const Color(0xFFffffff); + case "signature cosmetics & fragrances": + return const Color(0xFFec028b); + case "ok foods": + return const Color(0xFFffffff); + case "choppies": + return const Color(0xFFffffff); + case "boxer": + return const Color(0xFFffffff); + case "carrefour": + return const Color(0xFFffffff); + case "sefalana": + return const Color(0xFFffffff); + case "big save": + return const Color(0xFF333333); + case "justrite": + return const Color(0xFF50b849); + case "naivas": + return const Color(0xFFf26535); + case "kero": + return const Color(0xFF004986); + case "auchan": + return const Color(0xFFffffff); + case "woermann brock": + return const Color(0xFFe31e2d); + case "continente": + return const Color(0xFFffffff); + case "fresmart": + return const Color(0xFF72ba2e); + case "total energies": + return const Color(0xFFffffff); + case "engen": + return const Color(0xFF002b8f); + default: + return const Color(0xFFffffff); + } + } + void viewCardWindow(MzansiProfileProvider mzansiProfileProvider, MzansiWalletProvider walletProvider, int index, double width) { //print(widget.cardList[index].card_number); @@ -357,8 +456,9 @@ class _BuildLoyaltyCardListState extends State { context: context, barrierDismissible: false, builder: (context) => MihPackageWindow( + backgroundColor: getCardColor(widget.cardList[index].shop_name), fullscreen: false, - windowTitle: widget.cardList[index].shop_name.toUpperCase(), + windowTitle: null, menuOptions: [ SpeedDialChild( child: widget.cardList[index].favourite == "" @@ -452,12 +552,14 @@ class _BuildLoyaltyCardListState extends State { windowBody: Column( mainAxisSize: MainAxisSize.max, children: [ - Container( + SizedBox( + height: 15, + ), + SizedBox( width: 500, child: MihCardDisplay( shopName: widget.cardList[index].shop_name, nickname: widget.cardList[index].nickname, - height: 250, ), ), const SizedBox(height: 20), @@ -474,7 +576,7 @@ class _BuildLoyaltyCardListState extends State { Padding( padding: const EdgeInsets.all(10.0), child: SizedBox( - height: 75, + height: 150, // width: 300, child: BarcodeWidget( //color: MihColors.secondary(), @@ -625,16 +727,16 @@ class _BuildLoyaltyCardListState extends State { ), itemCount: widget.cardList.length, gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent( - mainAxisSpacing: 0, + mainAxisSpacing: 5, crossAxisSpacing: 5, maxCrossAxisExtent: 200, + // childAspectRatio: 0.80, ), itemBuilder: (context, index) { return GestureDetector( child: MihCardDisplay( shopName: widget.cardList[index].shop_name, nickname: widget.cardList[index].nickname, - height: 100, ), onTap: () { setScreenBrightness(1.0); diff --git a/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_add_card_window.dart b/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_add_card_window.dart index ec7ae93d..2c0512d4 100644 --- a/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_add_card_window.dart +++ b/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_add_card_window.dart @@ -143,23 +143,31 @@ class _MihAddCardWindowState extends State { "Woolworths", ], ), - ValueListenableBuilder( - valueListenable: _shopName, - builder: - (BuildContext context, String value, Widget? child) { - return Visibility( - visible: value != "", - child: Column( - children: [ - const SizedBox(height: 10), - MihCardDisplay( - shopName: _shopName.value, - nickname: "", - height: 200), - ], - ), - ); - }, + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ValueListenableBuilder( + valueListenable: _shopName, + builder: (BuildContext context, String value, + Widget? child) { + return Visibility( + visible: value != "", + child: Column( + children: [ + const SizedBox(height: 10), + SizedBox( + height: 250, + child: MihCardDisplay( + shopName: _shopName.value, + nickname: "", + ), + ), + ], + ), + ); + }, + ), + ], ), const SizedBox(height: 10), MihTextFormField( diff --git a/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_card_display.dart b/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_card_display.dart index a7facfc3..b281f2eb 100644 --- a/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_card_display.dart +++ b/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_card_display.dart @@ -1,13 +1,12 @@ import 'package:flutter/material.dart'; +import 'package:mih_package_toolkit/mih_package_toolkit.dart'; class MihCardDisplay extends StatefulWidget { final String shopName; final String nickname; - final double height; const MihCardDisplay({ super.key, required this.shopName, - required this.height, required this.nickname, }); @@ -20,142 +19,142 @@ class _MihCardDisplayState extends State { switch (widget.shopName.toLowerCase()) { case "apple tree": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/apple_tree-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/apple_tree.png'); case "best before": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/best_before-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/best_before.png'); case "checkers": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/checkers-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/checkers.png'); case "clicks": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/clicks-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/clicks.png'); case "cotton:on": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/cotton_on-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/cotton_on.png'); case "dis-chem": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/dischem-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/dischem.png'); case "pick n pay": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/pick_n_pay-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/pick_n_pay.png'); case "shoprite": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/shoprite-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/shoprite.png'); case "spar": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/spar-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/spar.png'); case "woolworths": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/woolworths-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/woolworths.png'); case "makro": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/makro-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/makro.png'); case "fresh stop": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/fresh_stop-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/fresh_stop.png'); case "panarottis": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/panarottis-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/panarottis.png'); case "shell": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/shell-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/shell.png'); case "edgars": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/edgars-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/edgars.png'); case "jet": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/jet-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/jet.png'); case "spur": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/spur-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/spur.png'); case "infinity": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/infinity-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/infinity.png'); case "eskom": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/eskom-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/eskom.png'); case "+more": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/plus_more-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/plus_more.png'); case "bp": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/bp-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/bp.png'); case "builders warehouse": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/builders-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/builders.png'); case "exclusive books": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/exclusive_books-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/exclusive_books.png'); case "pna": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/pna-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/pna.png'); case "pq clothing": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/pq-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/pq.png'); case "rage": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/rage-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/rage.png'); case "sasol": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/sasol-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/sasol.png'); case "tfg group": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/tfg-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/tfg.png'); case "toys r us": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/toysrus-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/toys_r_us.png'); case "leroy merlin": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/leroy_merlin-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/leroy_merlin.png'); case "signature cosmetics & fragrances": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/signature_cosmetics-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/signature.png'); case "ok foods": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/ok_food-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/ok_foods.png'); case "choppies": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/choppies-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/choppies.png'); case "boxer": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/boxer-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/boxer.png'); case "carrefour": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/carrefour-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/carrefour.png'); case "sefalana": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/sefalana-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/sefalana.png'); case "big save": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/big_save-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/big_save.png'); case "justrite": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/justrite-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/justrite.png'); case "naivas": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/naivas-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/naivas.png'); case "kero": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/kero-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/kero.png'); case "auchan": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/auchan-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/auchan.png'); case "woermann brock": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/woermann_brock-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/woermann_brock.png'); case "continente": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/continente-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/continente.png'); case "fresmart": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/fresmart-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/fresmart.png'); case "total energies": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/total_energies-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/total.png'); case "engen": return Image.asset( - 'lib/mih_package_components/assets/images/loyalty_cards/mini/engen-min.png'); + 'lib/mih_package_components/assets/images/loyalty_cards/engen.png'); default: return null; } @@ -165,16 +164,34 @@ class _MihCardDisplayState extends State { Widget build(BuildContext context) { return Visibility( visible: displayLoyaltyCard() != null, - child: Column( + child: Stack( children: [ - displayLoyaltyCard() != null ? displayLoyaltyCard()! : SizedBox(), - FittedBox( - child: Text( - widget.nickname, - textAlign: TextAlign.center, - style: const TextStyle( - fontSize: 25, - fontWeight: FontWeight.bold, + if (displayLoyaltyCard() != null) + ClipRRect( + borderRadius: BorderRadius.circular(25), + child: displayLoyaltyCard()!, + ), + Container( + padding: EdgeInsets.symmetric(vertical: 5.0), + alignment: Alignment.bottomCenter, + child: FittedBox( + child: Container( + padding: EdgeInsets.symmetric( + horizontal: widget.nickname.isNotEmpty ? 8.0 : 0.0), + decoration: BoxDecoration( + color: MihColors.primary(), + borderRadius: BorderRadius.circular( + 15, + ), + ), + child: Text( + widget.nickname, + textAlign: TextAlign.center, + style: const TextStyle( + fontSize: 25, + fontWeight: FontWeight.bold, + ), + ), ), ), ) -- 2.52.0 From 0a5c4a3d20264c6fb79512a539940c5f8a359808 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Wed, 15 Apr 2026 12:47:01 +0200 Subject: [PATCH 07/26] Get all user and business data on any ackage load --- mih_ui/lib/mih_packages/access_review/mih_access.dart | 2 +- mih_ui/lib/mih_packages/calendar/mzansi_calendar.dart | 2 +- mih_ui/lib/mih_packages/mine_sweeper/mih_mine_sweeper.dart | 2 +- mih_ui/lib/mih_packages/mzansi_ai/mzansi_ai.dart | 2 +- mih_ui/lib/mih_packages/mzansi_directory/mzansi_directory.dart | 2 +- mih_ui/lib/mih_packages/mzansi_wallet/mih_wallet.dart | 2 +- .../patient_manager/pat_profile/patient_profile.dart | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/mih_ui/lib/mih_packages/access_review/mih_access.dart b/mih_ui/lib/mih_packages/access_review/mih_access.dart index 3cd085a1..8a0f3eaa 100644 --- a/mih_ui/lib/mih_packages/access_review/mih_access.dart +++ b/mih_ui/lib/mih_packages/access_review/mih_access.dart @@ -27,7 +27,7 @@ class _MihAccessState extends State { MzansiProfileProvider mzansiProfileProvider = context.read(); if (mzansiProfileProvider.user == null) { - await MihDataHelperServices().loadUserDataOnly( + await MihDataHelperServices().loadUserDataWithBusinessesData( mzansiProfileProvider, ); } diff --git a/mih_ui/lib/mih_packages/calendar/mzansi_calendar.dart b/mih_ui/lib/mih_packages/calendar/mzansi_calendar.dart index fc081065..97e0cedf 100644 --- a/mih_ui/lib/mih_packages/calendar/mzansi_calendar.dart +++ b/mih_ui/lib/mih_packages/calendar/mzansi_calendar.dart @@ -27,7 +27,7 @@ class _MzansiCalendarState extends State { MzansiProfileProvider mzansiProfileProvider = context.read(); if (mzansiProfileProvider.user == null) { - await MihDataHelperServices().loadUserDataOnly( + await MihDataHelperServices().loadUserDataWithBusinessesData( mzansiProfileProvider, ); } diff --git a/mih_ui/lib/mih_packages/mine_sweeper/mih_mine_sweeper.dart b/mih_ui/lib/mih_packages/mine_sweeper/mih_mine_sweeper.dart index aa94c311..d7f65314 100644 --- a/mih_ui/lib/mih_packages/mine_sweeper/mih_mine_sweeper.dart +++ b/mih_ui/lib/mih_packages/mine_sweeper/mih_mine_sweeper.dart @@ -34,7 +34,7 @@ class _MihMineSweeperState extends State { context.read(); MihBannerAdProvider bannerAdProvider = context.read(); if (mzansiProfileProvider.user == null) { - await MihDataHelperServices().loadUserDataOnly( + await MihDataHelperServices().loadUserDataWithBusinessesData( mzansiProfileProvider, ); } diff --git a/mih_ui/lib/mih_packages/mzansi_ai/mzansi_ai.dart b/mih_ui/lib/mih_packages/mzansi_ai/mzansi_ai.dart index bb2869a1..60bc360b 100644 --- a/mih_ui/lib/mih_packages/mzansi_ai/mzansi_ai.dart +++ b/mih_ui/lib/mih_packages/mzansi_ai/mzansi_ai.dart @@ -27,7 +27,7 @@ class _MzansiAiState extends State { MzansiProfileProvider mzansiProfileProvider = context.read(); if (mzansiProfileProvider.user == null) { - await MihDataHelperServices().loadUserDataOnly( + await MihDataHelperServices().loadUserDataWithBusinessesData( mzansiProfileProvider, ); } diff --git a/mih_ui/lib/mih_packages/mzansi_directory/mzansi_directory.dart b/mih_ui/lib/mih_packages/mzansi_directory/mzansi_directory.dart index 45fe97d9..76abeb9b 100644 --- a/mih_ui/lib/mih_packages/mzansi_directory/mzansi_directory.dart +++ b/mih_ui/lib/mih_packages/mzansi_directory/mzansi_directory.dart @@ -33,7 +33,7 @@ class _MzansiDirectoryState extends State { MzansiProfileProvider mzansiProfileProvider = context.read(); if (mzansiProfileProvider.user == null) { - await MihDataHelperServices().loadUserDataOnly( + await MihDataHelperServices().loadUserDataWithBusinessesData( mzansiProfileProvider, ); } diff --git a/mih_ui/lib/mih_packages/mzansi_wallet/mih_wallet.dart b/mih_ui/lib/mih_packages/mzansi_wallet/mih_wallet.dart index d28e5732..f9b20e4b 100644 --- a/mih_ui/lib/mih_packages/mzansi_wallet/mih_wallet.dart +++ b/mih_ui/lib/mih_packages/mzansi_wallet/mih_wallet.dart @@ -31,7 +31,7 @@ class _MihWalletState extends State { context.read(); MzansiWalletProvider walletProvider = context.read(); if (mzansiProfileProvider.user == null) { - await MihDataHelperServices().loadUserDataOnly( + await MihDataHelperServices().loadUserDataWithBusinessesData( mzansiProfileProvider, ); } diff --git a/mih_ui/lib/mih_packages/patient_manager/pat_profile/patient_profile.dart b/mih_ui/lib/mih_packages/patient_manager/pat_profile/patient_profile.dart index eeac9acf..947512c0 100644 --- a/mih_ui/lib/mih_packages/patient_manager/pat_profile/patient_profile.dart +++ b/mih_ui/lib/mih_packages/patient_manager/pat_profile/patient_profile.dart @@ -40,7 +40,7 @@ class _PatientProfileState extends State { PatientManagerProvider patientManagerProvider = context.read(); if (mzansiProfileProvider.user == null) { - await MihDataHelperServices().loadUserDataOnly( + await MihDataHelperServices().loadUserDataWithBusinessesData( mzansiProfileProvider, ); } -- 2.52.0 From 6c591172df6b39cb28371fb0e2192be2fdb5a2cf Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Thu, 16 Apr 2026 10:00:21 +0200 Subject: [PATCH 08/26] update android skd to 36 --- mih_ui/android/app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mih_ui/android/app/build.gradle.kts b/mih_ui/android/app/build.gradle.kts index 0aea73ef..f28c83e0 100644 --- a/mih_ui/android/app/build.gradle.kts +++ b/mih_ui/android/app/build.gradle.kts @@ -19,7 +19,7 @@ if (keystorePropertiesFile.exists()) { android { namespace = "za.co.mzansiinnovationhub.mih" - compileSdk = 35 + compileSdk = 36 ndkVersion = "27.0.12077973" // ndkVersion = flutter.ndkVersion @@ -69,4 +69,4 @@ android { flutter { source = "../.." -} \ No newline at end of file +} -- 2.52.0 From 26d3638d8041ed6d0dc7a993e728ce8f88d077b2 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Thu, 16 Apr 2026 10:00:53 +0200 Subject: [PATCH 09/26] remove image url print --- mih_ui/lib/mih_services/mih_file_services.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mih_ui/lib/mih_services/mih_file_services.dart b/mih_ui/lib/mih_services/mih_file_services.dart index 76ebf19a..ac9f11c1 100644 --- a/mih_ui/lib/mih_services/mih_file_services.dart +++ b/mih_ui/lib/mih_services/mih_file_services.dart @@ -49,11 +49,11 @@ class MihFileApi { } } catch (e) { // internetConnectionPopUp(context); - print("Error getting url"); + KenLogger.error("Error getting url"); } finally { // Navigator.of(context).pop(); // Always pop loading dialog } - KenLogger.success("File URL: $fileUrl"); + // KenLogger.success("File URL: $fileUrl"); if (AppEnviroment.getEnv() == "Dev" && kIsWeb) { fileUrl = fileUrl.replaceAll("10.0.2.2", "127.0.0.1"); } else if (AppEnviroment.getEnv() == "Dev" && Platform.isIOS) { @@ -61,7 +61,7 @@ class MihFileApi { } else if (AppEnviroment.getEnv() == "Dev" && Platform.isLinux) { fileUrl = fileUrl.replaceAll("10.0.2.2", "127.0.0.1"); } - KenLogger.success("File URL: $fileUrl"); + // KenLogger.success("File URL: $fileUrl"); return fileUrl; } -- 2.52.0 From 62c5634cf6f16597f317b81506ae97951fa8a236 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Wed, 22 Apr 2026 10:45:49 +0200 Subject: [PATCH 10/26] Mzansi Wallet new list display pt1 --- .../builder/build_loyalty_card_list.dart | 4 +- .../components/mih_card_display_slanted.dart | 185 ++++++++++++++++++ mih_ui/pubspec.yaml | 13 +- 3 files changed, 194 insertions(+), 8 deletions(-) create mode 100644 mih_ui/lib/mih_packages/mzansi_wallet/components/mih_card_display_slanted.dart diff --git a/mih_ui/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart b/mih_ui/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart index 078411af..4f0836f1 100644 --- a/mih_ui/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart +++ b/mih_ui/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart @@ -727,8 +727,8 @@ class _BuildLoyaltyCardListState extends State { ), itemCount: widget.cardList.length, gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent( - mainAxisSpacing: 5, - crossAxisSpacing: 5, + mainAxisSpacing: 10, + crossAxisSpacing: 10, maxCrossAxisExtent: 200, // childAspectRatio: 0.80, ), diff --git a/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_card_display_slanted.dart b/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_card_display_slanted.dart new file mode 100644 index 00000000..24ec1fbd --- /dev/null +++ b/mih_ui/lib/mih_packages/mzansi_wallet/components/mih_card_display_slanted.dart @@ -0,0 +1,185 @@ +import 'package:flutter/material.dart'; + +class MihCardDisplaySlanted extends StatefulWidget { + final String shopName; + final String nickname; + final double height; + const MihCardDisplaySlanted({ + super.key, + required this.shopName, + required this.height, + required this.nickname, + }); + + @override + State createState() => _MihCardDisplaySlantedState(); +} + +class _MihCardDisplaySlantedState extends State { + Widget? displayLoyaltyCard() { + switch (widget.shopName.toLowerCase()) { + case "apple tree": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/apple_tree-min.png'); + case "best before": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/best_before-min.png'); + case "checkers": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/checkers-min.png'); + case "clicks": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/clicks-min.png'); + case "cotton:on": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/cotton_on-min.png'); + case "dis-chem": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/dischem-min.png'); + case "pick n pay": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/pick_n_pay-min.png'); + case "shoprite": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/shoprite-min.png'); + case "spar": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/spar-min.png'); + case "woolworths": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/woolworths-min.png'); + case "makro": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/makro-min.png'); + case "fresh stop": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/fresh_stop-min.png'); + case "panarottis": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/panarottis-min.png'); + case "shell": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/shell-min.png'); + case "edgars": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/edgars-min.png'); + case "jet": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/jet-min.png'); + case "spur": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/spur-min.png'); + case "infinity": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/infinity-min.png'); + case "eskom": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/eskom-min.png'); + case "+more": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/plus_more-min.png'); + case "bp": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/bp-min.png'); + case "builders warehouse": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/builders-min.png'); + case "exclusive books": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/exclusive_books-min.png'); + case "pna": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/pna-min.png'); + case "pq clothing": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/pq-min.png'); + case "rage": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/rage-min.png'); + case "sasol": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/sasol-min.png'); + case "tfg group": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/tfg-min.png'); + case "toys r us": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/toysrus-min.png'); + case "leroy merlin": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/leroy_merlin-min.png'); + case "signature cosmetics & fragrances": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/signature_cosmetics-min.png'); + case "ok foods": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/ok_food-min.png'); + case "choppies": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/choppies-min.png'); + case "boxer": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/boxer-min.png'); + case "carrefour": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/carrefour-min.png'); + case "sefalana": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/sefalana-min.png'); + case "big save": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/big_save-min.png'); + case "justrite": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/justrite-min.png'); + case "naivas": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/naivas-min.png'); + case "kero": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/kero-min.png'); + case "auchan": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/auchan-min.png'); + case "woermann brock": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/woermann_brock-min.png'); + case "continente": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/continente-min.png'); + case "fresmart": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/fresmart-min.png'); + case "total energies": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/total_energies-min.png'); + case "engen": + return Image.asset( + 'lib/mih_package_components/assets/images/loyalty_cards/mini/engen-min.png'); + default: + return null; + } + } + + @override + Widget build(BuildContext context) { + return Visibility( + visible: displayLoyaltyCard() != null, + child: Column( + children: [ + displayLoyaltyCard() != null ? displayLoyaltyCard()! : SizedBox(), + FittedBox( + child: Text( + widget.nickname, + textAlign: TextAlign.center, + style: const TextStyle( + fontSize: 25, + fontWeight: FontWeight.bold, + ), + ), + ) + ], + ), + ); + } +} diff --git a/mih_ui/pubspec.yaml b/mih_ui/pubspec.yaml index 7bbba958..647f77c3 100644 --- a/mih_ui/pubspec.yaml +++ b/mih_ui/pubspec.yaml @@ -1,11 +1,11 @@ name: mzansi_innovation_hub description: "" -publish_to: 'none' # Remove this line if you wish to publish to pub.dev +publish_to: "none" # Remove this line if you wish to publish to pub.dev version: 1.2.6+130 # version: 1.1.1+97 #--- Updated version for upgrader package testing environment: - sdk: '>=3.5.3 <4.0.0' + sdk: ">=3.5.3 <4.0.0" # flutter: ">=1.17.0" dependencies: flutter: @@ -45,7 +45,7 @@ dependencies: flutter_chat_types: ^3.6.2 uuid: ^4.5.1 flutter_tts: ^4.2.3 - flutter_speed_dial: ^7.0.0 + flutter_speed_dial: ^7.0.0 share_plus: ^11.0.0 #app_settings: ^6.1.1 pwa_install: ^0.0.6 @@ -70,7 +70,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - + build_runner: ^2.4.8 build_web_compilers: ^4.1.5 @@ -91,7 +91,7 @@ flutter: - family: MihIcons fonts: - asset: lib/mih_package_components/assets/fonts/Mih_Icons.ttf - + flutter_native_splash: color: "#3A4454" image: lib/mih_package_components/assets/images/splash_screen/mih_image_splash.png @@ -103,4 +103,5 @@ flutter_native_splash: android_12: color: "#3A4454" image: lib/mih_package_components/assets/images/splash_screen/mih_image_splash_android.png - branding: lib/mih_package_components/assets/images/splash_screen/mih_branding_splash.png \ No newline at end of file + branding: lib/mih_package_components/assets/images/splash_screen/mih_branding_splash.png + -- 2.52.0 From d71f337d37b8abd6fa495d0fee4d582e37c86335 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Wed, 22 Apr 2026 11:52:54 +0200 Subject: [PATCH 11/26] Mzansi Wallet new list display pt2 --- .../builder/build_loyalty_card_list.dart | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/mih_ui/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart b/mih_ui/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart index 4f0836f1..3b814ad2 100644 --- a/mih_ui/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart +++ b/mih_ui/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart @@ -7,6 +7,7 @@ import 'package:ken_logger/ken_logger.dart'; import 'package:mih_package_toolkit/mih_package_toolkit.dart'; import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_banner_ad.dart'; +import 'package:mzansi_innovation_hub/mih_packages/mzansi_wallet/components/mih_card_display_slanted.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart'; import 'package:mzansi_innovation_hub/mih_providers/mzansi_wallet_provider.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; @@ -727,14 +728,18 @@ class _BuildLoyaltyCardListState extends State { ), itemCount: widget.cardList.length, gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent( - mainAxisSpacing: 10, - crossAxisSpacing: 10, + mainAxisSpacing: 0, + // mainAxisSpacing: 15, + // crossAxisSpacing: 15, + crossAxisSpacing: 5, maxCrossAxisExtent: 200, // childAspectRatio: 0.80, ), itemBuilder: (context, index) { return GestureDetector( - child: MihCardDisplay( + child: MihCardDisplaySlanted( + // child: MihCardDisplay( + height: 100, shopName: widget.cardList[index].shop_name, nickname: widget.cardList[index].nickname, ), -- 2.52.0 From 3e3170b103c1567c9c3f69995ee48030a44c938f Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Fri, 24 Apr 2026 13:02:12 +0200 Subject: [PATCH 12/26] fix supertokens to work with lastest version of flutter --- mih_ui/pubspec.lock | 50 ++-- mih_ui/pubspec.yaml | 4 +- mih_ui/web/flutter_bootstrap.js | 5 + mih_ui/web/index.html | 494 ++++++++++++++------------------ 4 files changed, 252 insertions(+), 301 deletions(-) create mode 100644 mih_ui/web/flutter_bootstrap.js diff --git a/mih_ui/pubspec.lock b/mih_ui/pubspec.lock index bdeb6cfe..90f67804 100644 --- a/mih_ui/pubspec.lock +++ b/mih_ui/pubspec.lock @@ -133,10 +133,10 @@ packages: dependency: transitive description: name: build_modules - sha256: b1fc29a603669b25a5d95cc9610ed649e9f00e6075e5b6b721aa1a095cff13de + sha256: "51422a5753a74fda433d4345b11ce6ad40c2033880a26b2c6b7a8fa7e10e8f2f" url: "https://pub.dev" source: hosted - version: "5.0.13" + version: "5.1.11" build_resolvers: dependency: transitive description: @@ -165,10 +165,10 @@ packages: dependency: "direct dev" description: name: build_web_compilers - sha256: f9b8e84dbfa7688221c2376e6f68ffd796597785a0a5b1e8cd2516a92fdc0a3c + sha256: "311e0b9c797f40eecc8450f0836200b0ad9ea5227f86428a7ed5691f35e347c0" url: "https://pub.dev" source: hosted - version: "4.1.5" + version: "4.4.18" built_collection: dependency: transitive description: @@ -253,10 +253,10 @@ packages: dependency: transitive description: name: characters - sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.4.1" charcode: dependency: transitive description: @@ -1084,26 +1084,26 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" + sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" url: "https://pub.dev" source: hosted - version: "10.0.9" + version: "11.0.2" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" url: "https://pub.dev" source: hosted - version: "3.0.9" + version: "3.0.10" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" linkify: dependency: transitive description: @@ -1180,18 +1180,18 @@ packages: dependency: transitive description: name: matcher - sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 url: "https://pub.dev" source: hosted - version: "0.12.17" + version: "0.12.19" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b" url: "https://pub.dev" source: hosted - version: "0.11.1" + version: "0.13.0" math_expressions: dependency: "direct main" description: @@ -1212,10 +1212,10 @@ packages: dependency: transitive description: name: meta - sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.17.0" mih_package_toolkit: dependency: "direct main" description: @@ -1604,10 +1604,10 @@ packages: dependency: transitive description: name: scratch_space - sha256: "8510fbff458d733a58fc427057d1ac86303b376d609d6e1bc43f240aad9aa445" + sha256: "3417e014d20b12cebc5bfb1c0b1f63806054177158596cc31cc4d9aaca767a60" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.2.0" screen_brightness: dependency: "direct main" description: @@ -1977,10 +1977,10 @@ packages: dependency: transitive description: name: test_api - sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + sha256: "8161c84903fd860b26bfdefb7963b3f0b68fee7adea0f59ef805ecca346f0c7a" url: "https://pub.dev" source: hosted - version: "0.7.4" + version: "0.7.10" timing: dependency: transitive description: @@ -2129,10 +2129,10 @@ packages: dependency: transitive description: name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.2.0" version: dependency: transitive description: @@ -2294,5 +2294,5 @@ packages: source: hosted version: "3.1.1" sdks: - dart: ">=3.8.1 <3.9.0" + dart: ">=3.9.0-0 <3.13.0-z" flutter: ">=3.29.0" diff --git a/mih_ui/pubspec.yaml b/mih_ui/pubspec.yaml index 647f77c3..c96bc53c 100644 --- a/mih_ui/pubspec.yaml +++ b/mih_ui/pubspec.yaml @@ -67,6 +67,9 @@ dependencies: cross_file: ^0.3.5+1 quick_actions: ^1.1.0 +dependency_overrides: + supertokens_flutter: any + dev_dependencies: flutter_test: sdk: flutter @@ -104,4 +107,3 @@ flutter_native_splash: color: "#3A4454" image: lib/mih_package_components/assets/images/splash_screen/mih_image_splash_android.png branding: lib/mih_package_components/assets/images/splash_screen/mih_branding_splash.png - diff --git a/mih_ui/web/flutter_bootstrap.js b/mih_ui/web/flutter_bootstrap.js new file mode 100644 index 00000000..3729212a --- /dev/null +++ b/mih_ui/web/flutter_bootstrap.js @@ -0,0 +1,5 @@ +{{flutter_js}} +{{flutter_build_config}} + +// This is the default loader that Flutter 3.24 expects +_flutter.loader.load(); diff --git a/mih_ui/web/index.html b/mih_ui/web/index.html index 28d53ad3..ae7ceaa7 100644 --- a/mih_ui/web/index.html +++ b/mih_ui/web/index.html @@ -1,74 +1,78 @@ - - + + - - - - + + - - - - + + + + - + + + + - - + - MIH App: Mzansi Innovation Hub - All-in-One Super App for Business & Personal Life - + + - - - - + MIH App: Mzansi Innovation Hub - All-in-One Super App for Business & Personal Life + - + + + + - + + + - - - - - + - - - - - - - + .bottomLeft { + position: absolute; + bottom: 0; + left: 0; + } + + .bottomRight { + position: absolute; + bottom: 0; + right: 0; + } + + - - - - - - - - - - - -