diff --git a/assets/icons/active_user.svg b/assets/icons/active_user.svg
new file mode 100644
index 00000000..5e0806e0
--- /dev/null
+++ b/assets/icons/active_user.svg
@@ -0,0 +1,18 @@
+
diff --git a/assets/icons/arrow_down.svg b/assets/icons/arrow_down.svg
new file mode 100644
index 00000000..2b4be77b
--- /dev/null
+++ b/assets/icons/arrow_down.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/arrow_forward.svg b/assets/icons/arrow_forward.svg
new file mode 100644
index 00000000..e5866360
--- /dev/null
+++ b/assets/icons/arrow_forward.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/atoz_icon.png b/assets/icons/atoz_icon.png
new file mode 100644
index 00000000..33a9c351
Binary files /dev/null and b/assets/icons/atoz_icon.png differ
diff --git a/assets/icons/box_checked.png b/assets/icons/box_checked.png
new file mode 100644
index 00000000..d93b9d76
Binary files /dev/null and b/assets/icons/box_checked.png differ
diff --git a/assets/icons/compleate_process_icon.svg b/assets/icons/compleate_process_icon.svg
new file mode 100644
index 00000000..a4159de2
--- /dev/null
+++ b/assets/icons/compleate_process_icon.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/icons/current_process_icon.svg b/assets/icons/current_process_icon.svg
new file mode 100644
index 00000000..967928e3
--- /dev/null
+++ b/assets/icons/current_process_icon.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/deactive_user.svg b/assets/icons/deactive_user.svg
new file mode 100644
index 00000000..7011f5fb
--- /dev/null
+++ b/assets/icons/deactive_user.svg
@@ -0,0 +1,18 @@
+
diff --git a/assets/icons/empty_box.png b/assets/icons/empty_box.png
new file mode 100644
index 00000000..71e79875
Binary files /dev/null and b/assets/icons/empty_box.png differ
diff --git a/assets/icons/filter_table_icon.svg b/assets/icons/filter_table_icon.svg
new file mode 100644
index 00000000..d90e983e
--- /dev/null
+++ b/assets/icons/filter_table_icon.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/invited_icon.svg b/assets/icons/invited_icon.svg
new file mode 100644
index 00000000..5563de14
--- /dev/null
+++ b/assets/icons/invited_icon.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/icons/rectangle_check_box.png b/assets/icons/rectangle_check_box.png
new file mode 100644
index 00000000..3404c79c
Binary files /dev/null and b/assets/icons/rectangle_check_box.png differ
diff --git a/assets/icons/search_icon_user.svg b/assets/icons/search_icon_user.svg
new file mode 100644
index 00000000..61eca62d
--- /dev/null
+++ b/assets/icons/search_icon_user.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/uncompleate_process_icon.svg b/assets/icons/uncompleate_process_icon.svg
new file mode 100644
index 00000000..4ede6757
--- /dev/null
+++ b/assets/icons/uncompleate_process_icon.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/user_management.svg b/assets/icons/user_management.svg
new file mode 100644
index 00000000..3255117a
--- /dev/null
+++ b/assets/icons/user_management.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/icons/wrong_process_icon.svg b/assets/icons/wrong_process_icon.svg
new file mode 100644
index 00000000..de5b475c
--- /dev/null
+++ b/assets/icons/wrong_process_icon.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/icons/ztoa_icon.png b/assets/icons/ztoa_icon.png
new file mode 100644
index 00000000..003e5725
Binary files /dev/null and b/assets/icons/ztoa_icon.png differ
diff --git a/lib/pages/common/custom_dialog.dart b/lib/pages/common/custom_dialog.dart
index a40ef10f..9899bda4 100644
--- a/lib/pages/common/custom_dialog.dart
+++ b/lib/pages/common/custom_dialog.dart
@@ -12,7 +12,7 @@ Future showCustomDialog({
double? iconWidth,
VoidCallback? onOkPressed,
bool barrierDismissible = false,
- required List actions,
+ List? actions,
}) {
return showDialog(
context: context,
diff --git a/lib/pages/home/bloc/home_bloc.dart b/lib/pages/home/bloc/home_bloc.dart
index 1772ef88..416e9d92 100644
--- a/lib/pages/home/bloc/home_bloc.dart
+++ b/lib/pages/home/bloc/home_bloc.dart
@@ -42,7 +42,8 @@ class HomeBloc extends Bloc {
Future _fetchUserInfo(FetchUserInfo event, Emitter emit) async {
try {
- var uuid = await const FlutterSecureStorage().read(key: UserModel.userUuidKey);
+ var uuid =
+ await const FlutterSecureStorage().read(key: UserModel.userUuidKey);
user = await HomeApi().fetchUserInfo(uuid);
emit(HomeInitial());
} catch (e) {
diff --git a/lib/pages/roles_and_permission/bloc/roles_permission_bloc.dart b/lib/pages/roles_and_permission/bloc/roles_permission_bloc.dart
new file mode 100644
index 00000000..4f4988b3
--- /dev/null
+++ b/lib/pages/roles_and_permission/bloc/roles_permission_bloc.dart
@@ -0,0 +1,42 @@
+import 'dart:async';
+import 'package:bloc/bloc.dart';
+import 'package:syncrow_web/pages/roles_and_permission/bloc/roles_permission_event.dart';
+import 'package:syncrow_web/pages/roles_and_permission/bloc/roles_permission_state.dart';
+import 'package:syncrow_web/pages/roles_and_permission/model/role_model.dart';
+
+class RolesPermissionBloc
+ extends Bloc {
+ RolesPermissionBloc() : super(RolesInitial()) {
+ on(_getRoles);
+ on(changeTapSelected);
+ }
+ List roleModel = [];
+
+ FutureOr _getRoles(
+ GetRoles event, Emitter emit) async {
+ emit(UsersLoadingState());
+ try {
+ roleModel = [
+ RoleModel(roleId: '1', roleImage: '', roleName: 'Admin'),
+ RoleModel(roleId: '2', roleImage: '', roleName: 'Security'),
+ RoleModel(roleId: '2', roleImage: '', roleName: 'Reception'),
+ ];
+ emit(UsersLoadedState());
+ } catch (e) {
+ emit(ErrorState(e.toString()));
+ }
+ }
+
+ bool tapSelect = true;
+
+ changeTapSelected(
+ ChangeTapSelected event, Emitter emit) {
+ try {
+ emit(RolesLoadingState());
+ tapSelect = event.selected;
+ emit(ChangeTapStatus(select: !tapSelect));
+ } catch (e) {
+ emit(ErrorState(e.toString()));
+ }
+ }
+}
diff --git a/lib/pages/roles_and_permission/bloc/roles_permission_event.dart b/lib/pages/roles_and_permission/bloc/roles_permission_event.dart
new file mode 100644
index 00000000..d5dce346
--- /dev/null
+++ b/lib/pages/roles_and_permission/bloc/roles_permission_event.dart
@@ -0,0 +1,41 @@
+import 'package:equatable/equatable.dart';
+
+sealed class RolesPermissionEvent extends Equatable {
+ const RolesPermissionEvent();
+}
+
+class GetRoles extends RolesPermissionEvent {
+ const GetRoles();
+ @override
+ List