diff --git a/Auth/InsufficientPermissions.tsx b/Auth/InsufficientPermissions.tsx
new file mode 100644
index 0000000..df89778
--- /dev/null
+++ b/Auth/InsufficientPermissions.tsx
@@ -0,0 +1,104 @@
+import MaterialIcons from '@react-native-vector-icons/material-icons';
+import React, { useState } from 'react';
+import { Button, Modal, StyleSheet, Text, View } from 'react-native';
+
+type InsufficientPermissionsProps = {
+ featureName: string,
+ onRetry: () => void,
+ missingPermissions: string[],
+ requiredPermissions: string[],
+};
+
+function InsufficientPermissions({ featureName, onRetry,
+ missingPermissions, requiredPermissions }: InsufficientPermissionsProps) {
+ const [detailsVisible, setDetailsVisible] = useState(false);
+
+ type PermissionDetailsListProps = {
+ permissions: string[],
+ hasPermission: boolean
+ };
+ const PermissionDetailsList = ({permissions, hasPermission} : PermissionDetailsListProps) => {
+ return permissions.map((permission, index) => (
+
+ {hasPermission?
+
+ :
+
+ }
+ {permission}
+
+ ));
+ }
+
+ const PermissionDetailsDialog = () => {
+ return (
+
+
+
+ Required Permissions
+
+
+
+
+
+
+
+ );
+ };
+
+ return (
+
+ {
+ detailsVisible &&
+
+ }
+
+
+ {featureName} permissions required
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ modalView: {
+ margin: 30,
+ backgroundColor: 'white',
+ borderRadius: 20,
+ padding: 20,
+ shadowOffset: {
+ width: 0,
+ height: 2,
+ },
+ shadowOpacity: 0.25,
+ shadowRadius: 4,
+ elevation: 5,
+ width:"75%"
+ },
+ permissionItem: {
+ justifyContent: 'flex-start',
+ alignItems: "center",
+ flexDirection:"row",
+ borderBlockColor:"gray",
+ borderBottomWidth: 1
+ }
+});
+
+export default InsufficientPermissions;
\ No newline at end of file