diff --git a/App.tsx b/App.tsx
index 5e963b1..1a9796d 100644
--- a/App.tsx
+++ b/App.tsx
@@ -1,45 +1,23 @@
-/**
- * Sample React Native App
- * https://github.com/facebook/react-native
- *
- * @format
- */
-
-import { NewAppScreen } from '@react-native/new-app-screen';
-import { StatusBar, StyleSheet, useColorScheme, View } from 'react-native';
-import {
- SafeAreaProvider,
- useSafeAreaInsets,
-} from 'react-native-safe-area-context';
-
-function App() {
- const isDarkMode = useColorScheme() === 'dark';
+import React from 'react';
+import { StatusBar, StyleSheet, View } from 'react-native';
+import { SafeAreaProvider } from 'react-native-safe-area-context';
+import HomeScreen from './src/screens/HomeScreen/homeScreen';
+import { COLORS } from './src/constants/color';
+export default function App() {
return (
-
-
+
+
+
+
);
}
-function AppContent() {
- const safeAreaInsets = useSafeAreaInsets();
-
- return (
-
-
-
- );
-}
-
const styles = StyleSheet.create({
container: {
flex: 1,
+ backgroundColor: COLORS.background,
},
-});
-
-export default App;
+});
\ No newline at end of file
diff --git a/android/app/src/main/assets/fonts/AntDesign.ttf b/android/app/src/main/assets/fonts/AntDesign.ttf
new file mode 100644
index 0000000..2abf035
Binary files /dev/null and b/android/app/src/main/assets/fonts/AntDesign.ttf differ
diff --git a/android/app/src/main/assets/fonts/Entypo.ttf b/android/app/src/main/assets/fonts/Entypo.ttf
new file mode 100644
index 0000000..76d91cb
Binary files /dev/null and b/android/app/src/main/assets/fonts/Entypo.ttf differ
diff --git a/android/app/src/main/assets/fonts/EvilIcons.ttf b/android/app/src/main/assets/fonts/EvilIcons.ttf
new file mode 100644
index 0000000..6868f7b
Binary files /dev/null and b/android/app/src/main/assets/fonts/EvilIcons.ttf differ
diff --git a/android/app/src/main/assets/fonts/Feather.ttf b/android/app/src/main/assets/fonts/Feather.ttf
new file mode 100644
index 0000000..49698e7
Binary files /dev/null and b/android/app/src/main/assets/fonts/Feather.ttf differ
diff --git a/android/app/src/main/assets/fonts/FontAwesome.ttf b/android/app/src/main/assets/fonts/FontAwesome.ttf
new file mode 100644
index 0000000..35acda2
Binary files /dev/null and b/android/app/src/main/assets/fonts/FontAwesome.ttf differ
diff --git a/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf b/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf
new file mode 100644
index 0000000..fc567cd
Binary files /dev/null and b/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf differ
diff --git a/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf b/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf
new file mode 100644
index 0000000..d1ac9ba
Binary files /dev/null and b/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf differ
diff --git a/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf b/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf
new file mode 100644
index 0000000..f33e816
Binary files /dev/null and b/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf differ
diff --git a/android/app/src/main/assets/fonts/FontAwesome6_Brands.ttf b/android/app/src/main/assets/fonts/FontAwesome6_Brands.ttf
new file mode 100644
index 0000000..08362f3
Binary files /dev/null and b/android/app/src/main/assets/fonts/FontAwesome6_Brands.ttf differ
diff --git a/android/app/src/main/assets/fonts/FontAwesome6_Regular.ttf b/android/app/src/main/assets/fonts/FontAwesome6_Regular.ttf
new file mode 100644
index 0000000..7f9b53c
Binary files /dev/null and b/android/app/src/main/assets/fonts/FontAwesome6_Regular.ttf differ
diff --git a/android/app/src/main/assets/fonts/FontAwesome6_Solid.ttf b/android/app/src/main/assets/fonts/FontAwesome6_Solid.ttf
new file mode 100644
index 0000000..e7e2ecf
Binary files /dev/null and b/android/app/src/main/assets/fonts/FontAwesome6_Solid.ttf differ
diff --git a/android/app/src/main/assets/fonts/Fontisto.ttf b/android/app/src/main/assets/fonts/Fontisto.ttf
new file mode 100644
index 0000000..96e2e81
Binary files /dev/null and b/android/app/src/main/assets/fonts/Fontisto.ttf differ
diff --git a/android/app/src/main/assets/fonts/Foundation.ttf b/android/app/src/main/assets/fonts/Foundation.ttf
new file mode 100644
index 0000000..6cce217
Binary files /dev/null and b/android/app/src/main/assets/fonts/Foundation.ttf differ
diff --git a/android/app/src/main/assets/fonts/Ionicons.ttf b/android/app/src/main/assets/fonts/Ionicons.ttf
new file mode 100644
index 0000000..c870085
Binary files /dev/null and b/android/app/src/main/assets/fonts/Ionicons.ttf differ
diff --git a/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf b/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf
new file mode 100644
index 0000000..ba87359
Binary files /dev/null and b/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf differ
diff --git a/android/app/src/main/assets/fonts/MaterialIcons.ttf b/android/app/src/main/assets/fonts/MaterialIcons.ttf
new file mode 100644
index 0000000..9d09b0f
Binary files /dev/null and b/android/app/src/main/assets/fonts/MaterialIcons.ttf differ
diff --git a/android/app/src/main/assets/fonts/Octicons.ttf b/android/app/src/main/assets/fonts/Octicons.ttf
new file mode 100644
index 0000000..f8daedc
Binary files /dev/null and b/android/app/src/main/assets/fonts/Octicons.ttf differ
diff --git a/android/app/src/main/assets/fonts/SimpleLineIcons.ttf b/android/app/src/main/assets/fonts/SimpleLineIcons.ttf
new file mode 100644
index 0000000..6ecb686
Binary files /dev/null and b/android/app/src/main/assets/fonts/SimpleLineIcons.ttf differ
diff --git a/android/app/src/main/assets/fonts/Zocial.ttf b/android/app/src/main/assets/fonts/Zocial.ttf
new file mode 100644
index 0000000..e2b5fbb
Binary files /dev/null and b/android/app/src/main/assets/fonts/Zocial.ttf differ
diff --git a/android/link-assets-manifest.json b/android/link-assets-manifest.json
new file mode 100644
index 0000000..f667cd7
--- /dev/null
+++ b/android/link-assets-manifest.json
@@ -0,0 +1,81 @@
+{
+ "migIndex": 1,
+ "data": [
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
+ "sha1": "4e77868439280fb434d4697c7b911271406c81f3"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
+ "sha1": "12b5670eb178138f77285d5f2c246d3cc5fa67d6"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
+ "sha1": "91d377ea3cf47490b256c2ed081704a7dabdae0c"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/Feather.ttf",
+ "sha1": "e6604258b1ced5efd51360875d782fca65381d47"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",
+ "sha1": "13b1eab65a983c7a73bc7997c479d66943f7c6cb"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",
+ "sha1": "3fa2d67cef22da5c3f3eb5730c6afbd6fecf0372"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",
+ "sha1": "7d849a3981a716e2ba4a84634bc57d0b8054a6a3"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",
+ "sha1": "c1b9fae262f42868c075ac865a8ab34920e20a2c"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/FontAwesome6_Brands.ttf",
+ "sha1": "7ce89c71d5a51ac65b159c71422783dd86529c66"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/FontAwesome6_Regular.ttf",
+ "sha1": "775e2ecfc18d22b177274453d4c014ca6be63208"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/FontAwesome6_Solid.ttf",
+ "sha1": "2b8e11389d98122399667cf64941eb58497dc128"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/Fontisto.ttf",
+ "sha1": "c090a3ec96a3f1bb9b615c2f3f204ce0dcdcdbc3"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/Foundation.ttf",
+ "sha1": "4b2bce6c792493a4a5716b6fec2dbefe89492c3f"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/Ionicons.ttf",
+ "sha1": "86e07c3d974eb09099e6e5a9b3b8310303cf0feb"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf",
+ "sha1": "4c2a838b00dbb5e8bb1b368fce0de534e8eb241c"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf",
+ "sha1": "7e02c3f005532ff4d24148567c84089756a7848a"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/Octicons.ttf",
+ "sha1": "56acefc0731f35ee23b195b1c8cb5fa94a0db97b"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf",
+ "sha1": "9ffb81a5a11112e292f2cc323e98486bad597599"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
+ "sha1": "6a48a962b06cc3acbdfd61df0d9a34744eea5e8d"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/index.js b/index.js
index 9b73932..654a93b 100644
--- a/index.js
+++ b/index.js
@@ -1,9 +1,8 @@
/**
* @format
*/
-
import { AppRegistry } from 'react-native';
import App from './App';
import { name as appName } from './app.json';
-AppRegistry.registerComponent(appName, () => App);
+AppRegistry.registerComponent(appName, () => App);
\ No newline at end of file
diff --git a/ios/BuildOptix.xcodeproj/project.pbxproj b/ios/BuildOptix.xcodeproj/project.pbxproj
index d1248eb..68e3100 100644
--- a/ios/BuildOptix.xcodeproj/project.pbxproj
+++ b/ios/BuildOptix.xcodeproj/project.pbxproj
@@ -11,6 +11,25 @@
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
761780ED2CA45674006654EE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761780EC2CA45674006654EE /* AppDelegate.swift */; };
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
+ 35493C0C292A4CBAA1815B40 /* AntDesign.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C4AC39F9749C41118B88631E /* AntDesign.ttf */; };
+ BEB71CD7BFFF4F67A3396FAB /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1B67EEA02C9A474EA015824B /* Entypo.ttf */; };
+ 5A3DFD7BA7C64F35AF649AB4 /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6D61E643BF6A49498E661F76 /* EvilIcons.ttf */; };
+ 4B1521B5AB4047E29FA6E2F8 /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 72B699129215411394AD1BDC /* Feather.ttf */; };
+ 632F21CDE25A4F4FA3C9F0CC /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 65B2E6F9FBCC4CFA9D82F449 /* FontAwesome.ttf */; };
+ 44FBB6B5F88749BC8210BB06 /* FontAwesome5_Brands.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 0687A3E977FD4F4AB2111775 /* FontAwesome5_Brands.ttf */; };
+ BE4ED3ECF7914336ABE4D575 /* FontAwesome5_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6E03228D50094A769F1E5E5E /* FontAwesome5_Regular.ttf */; };
+ 51A7AA073B004B15B0738891 /* FontAwesome5_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 64D8FB5DD07C4FB9AA3BBF0E /* FontAwesome5_Solid.ttf */; };
+ 087243800FE1443DB93CEA52 /* FontAwesome6_Brands.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2D2521772E404891AF670589 /* FontAwesome6_Brands.ttf */; };
+ 10D5C30D720844B98B4E9B0C /* FontAwesome6_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3489D48365394B67900DBD37 /* FontAwesome6_Regular.ttf */; };
+ 6C9AD2C6525646AC86EA26B3 /* FontAwesome6_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = AD6A93783A254AD0ABAEEDA6 /* FontAwesome6_Solid.ttf */; };
+ 539B9217E4794F15986DDB2D /* Fontisto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CC8CEE18284D459091B4B6D4 /* Fontisto.ttf */; };
+ 5D6530BE81D94414A7C94588 /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 12FFF95D326E46E3AA0DDBDE /* Foundation.ttf */; };
+ 9AAC9E10277D4B8D8106FD27 /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D05B2F649F2C4123A0D3D042 /* Ionicons.ttf */; };
+ AA36E243B9624DFF92DB2276 /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C135756F31B449E3B692CB0F /* MaterialCommunityIcons.ttf */; };
+ 2EF3ECEDF90E4000BF4F18B6 /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = F752F67E92644D9A83F5E30D /* MaterialIcons.ttf */; };
+ 2931958586CC40E988CC9579 /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 984AEAAEBFBC40BAAC34B6F5 /* Octicons.ttf */; };
+ 4890F838D5A44F9299F9E45E /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4483EF4054B4492CA8F3A365 /* SimpleLineIcons.ttf */; };
+ 13E1F0E14F1741EB9C497572 /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = F09C00F7ED9745A394C7B049 /* Zocial.ttf */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
@@ -24,6 +43,25 @@
761780EC2CA45674006654EE /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = BuildOptix/AppDelegate.swift; sourceTree = ""; };
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = BuildOptix/LaunchScreen.storyboard; sourceTree = ""; };
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
+ C4AC39F9749C41118B88631E /* AntDesign.ttf */ = {isa = PBXFileReference; name = "AntDesign.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
+ 1B67EEA02C9A474EA015824B /* Entypo.ttf */ = {isa = PBXFileReference; name = "Entypo.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Entypo.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
+ 6D61E643BF6A49498E661F76 /* EvilIcons.ttf */ = {isa = PBXFileReference; name = "EvilIcons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
+ 72B699129215411394AD1BDC /* Feather.ttf */ = {isa = PBXFileReference; name = "Feather.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Feather.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
+ 65B2E6F9FBCC4CFA9D82F449 /* FontAwesome.ttf */ = {isa = PBXFileReference; name = "FontAwesome.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
+ 0687A3E977FD4F4AB2111775 /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; name = "FontAwesome5_Brands.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
+ 6E03228D50094A769F1E5E5E /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; name = "FontAwesome5_Regular.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
+ 64D8FB5DD07C4FB9AA3BBF0E /* FontAwesome5_Solid.ttf */ = {isa = PBXFileReference; name = "FontAwesome5_Solid.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
+ 2D2521772E404891AF670589 /* FontAwesome6_Brands.ttf */ = {isa = PBXFileReference; name = "FontAwesome6_Brands.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome6_Brands.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
+ 3489D48365394B67900DBD37 /* FontAwesome6_Regular.ttf */ = {isa = PBXFileReference; name = "FontAwesome6_Regular.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome6_Regular.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
+ AD6A93783A254AD0ABAEEDA6 /* FontAwesome6_Solid.ttf */ = {isa = PBXFileReference; name = "FontAwesome6_Solid.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome6_Solid.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
+ CC8CEE18284D459091B4B6D4 /* Fontisto.ttf */ = {isa = PBXFileReference; name = "Fontisto.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
+ 12FFF95D326E46E3AA0DDBDE /* Foundation.ttf */ = {isa = PBXFileReference; name = "Foundation.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Foundation.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
+ D05B2F649F2C4123A0D3D042 /* Ionicons.ttf */ = {isa = PBXFileReference; name = "Ionicons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
+ C135756F31B449E3B692CB0F /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; name = "MaterialCommunityIcons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
+ F752F67E92644D9A83F5E30D /* MaterialIcons.ttf */ = {isa = PBXFileReference; name = "MaterialIcons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
+ 984AEAAEBFBC40BAAC34B6F5 /* Octicons.ttf */ = {isa = PBXFileReference; name = "Octicons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Octicons.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
+ 4483EF4054B4492CA8F3A365 /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; name = "SimpleLineIcons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
+ F09C00F7ED9745A394C7B049 /* Zocial.ttf */ = {isa = PBXFileReference; name = "Zocial.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Zocial.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -74,6 +112,7 @@
83CBBA001A601CBA00E9B192 /* Products */,
2D16E6871FA4F8E400B85C8A /* Frameworks */,
BBD78D7AC51CEA395F1C20DB /* Pods */,
+ E5220B1959FB4EB4B93C1E94 /* Resources */,
);
indentWidth = 2;
sourceTree = "";
@@ -97,6 +136,33 @@
path = Pods;
sourceTree = "";
};
+ E5220B1959FB4EB4B93C1E94 /* Resources */ = {
+ isa = "PBXGroup";
+ children = (
+ C4AC39F9749C41118B88631E /* AntDesign.ttf */,
+ 1B67EEA02C9A474EA015824B /* Entypo.ttf */,
+ 6D61E643BF6A49498E661F76 /* EvilIcons.ttf */,
+ 72B699129215411394AD1BDC /* Feather.ttf */,
+ 65B2E6F9FBCC4CFA9D82F449 /* FontAwesome.ttf */,
+ 0687A3E977FD4F4AB2111775 /* FontAwesome5_Brands.ttf */,
+ 6E03228D50094A769F1E5E5E /* FontAwesome5_Regular.ttf */,
+ 64D8FB5DD07C4FB9AA3BBF0E /* FontAwesome5_Solid.ttf */,
+ 2D2521772E404891AF670589 /* FontAwesome6_Brands.ttf */,
+ 3489D48365394B67900DBD37 /* FontAwesome6_Regular.ttf */,
+ AD6A93783A254AD0ABAEEDA6 /* FontAwesome6_Solid.ttf */,
+ CC8CEE18284D459091B4B6D4 /* Fontisto.ttf */,
+ 12FFF95D326E46E3AA0DDBDE /* Foundation.ttf */,
+ D05B2F649F2C4123A0D3D042 /* Ionicons.ttf */,
+ C135756F31B449E3B692CB0F /* MaterialCommunityIcons.ttf */,
+ F752F67E92644D9A83F5E30D /* MaterialIcons.ttf */,
+ 984AEAAEBFBC40BAAC34B6F5 /* Octicons.ttf */,
+ 4483EF4054B4492CA8F3A365 /* SimpleLineIcons.ttf */,
+ F09C00F7ED9745A394C7B049 /* Zocial.ttf */,
+ );
+ name = Resources;
+ sourceTree = "";
+ path = "";
+ };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@@ -159,6 +225,25 @@
files = (
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
+ 35493C0C292A4CBAA1815B40 /* AntDesign.ttf in Resources */,
+ BEB71CD7BFFF4F67A3396FAB /* Entypo.ttf in Resources */,
+ 5A3DFD7BA7C64F35AF649AB4 /* EvilIcons.ttf in Resources */,
+ 4B1521B5AB4047E29FA6E2F8 /* Feather.ttf in Resources */,
+ 632F21CDE25A4F4FA3C9F0CC /* FontAwesome.ttf in Resources */,
+ 44FBB6B5F88749BC8210BB06 /* FontAwesome5_Brands.ttf in Resources */,
+ BE4ED3ECF7914336ABE4D575 /* FontAwesome5_Regular.ttf in Resources */,
+ 51A7AA073B004B15B0738891 /* FontAwesome5_Solid.ttf in Resources */,
+ 087243800FE1443DB93CEA52 /* FontAwesome6_Brands.ttf in Resources */,
+ 10D5C30D720844B98B4E9B0C /* FontAwesome6_Regular.ttf in Resources */,
+ 6C9AD2C6525646AC86EA26B3 /* FontAwesome6_Solid.ttf in Resources */,
+ 539B9217E4794F15986DDB2D /* Fontisto.ttf in Resources */,
+ 5D6530BE81D94414A7C94588 /* Foundation.ttf in Resources */,
+ 9AAC9E10277D4B8D8106FD27 /* Ionicons.ttf in Resources */,
+ AA36E243B9624DFF92DB2276 /* MaterialCommunityIcons.ttf in Resources */,
+ 2EF3ECEDF90E4000BF4F18B6 /* MaterialIcons.ttf in Resources */,
+ 2931958586CC40E988CC9579 /* Octicons.ttf in Resources */,
+ 4890F838D5A44F9299F9E45E /* SimpleLineIcons.ttf in Resources */,
+ 13E1F0E14F1741EB9C497572 /* Zocial.ttf in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/ios/BuildOptix/Info.plist b/ios/BuildOptix/Info.plist
index bee2704..ecb17bd 100644
--- a/ios/BuildOptix/Info.plist
+++ b/ios/BuildOptix/Info.plist
@@ -28,14 +28,13 @@
NSAppTransportSecurity
-
NSAllowsArbitraryLoads
NSAllowsLocalNetworking
NSLocationWhenInUseUsageDescription
-
+
UILaunchStoryboardName
LaunchScreen
UIRequiredDeviceCapabilities
@@ -55,5 +54,27 @@
UIViewControllerBasedStatusBarAppearance
+ UIAppFonts
+
+ AntDesign.ttf
+ Entypo.ttf
+ EvilIcons.ttf
+ Feather.ttf
+ FontAwesome.ttf
+ FontAwesome5_Brands.ttf
+ FontAwesome5_Regular.ttf
+ FontAwesome5_Solid.ttf
+ FontAwesome6_Brands.ttf
+ FontAwesome6_Regular.ttf
+ FontAwesome6_Solid.ttf
+ Fontisto.ttf
+ Foundation.ttf
+ Ionicons.ttf
+ MaterialCommunityIcons.ttf
+ MaterialIcons.ttf
+ Octicons.ttf
+ SimpleLineIcons.ttf
+ Zocial.ttf
+
diff --git a/ios/link-assets-manifest.json b/ios/link-assets-manifest.json
new file mode 100644
index 0000000..f667cd7
--- /dev/null
+++ b/ios/link-assets-manifest.json
@@ -0,0 +1,81 @@
+{
+ "migIndex": 1,
+ "data": [
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
+ "sha1": "4e77868439280fb434d4697c7b911271406c81f3"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
+ "sha1": "12b5670eb178138f77285d5f2c246d3cc5fa67d6"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
+ "sha1": "91d377ea3cf47490b256c2ed081704a7dabdae0c"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/Feather.ttf",
+ "sha1": "e6604258b1ced5efd51360875d782fca65381d47"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",
+ "sha1": "13b1eab65a983c7a73bc7997c479d66943f7c6cb"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",
+ "sha1": "3fa2d67cef22da5c3f3eb5730c6afbd6fecf0372"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",
+ "sha1": "7d849a3981a716e2ba4a84634bc57d0b8054a6a3"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",
+ "sha1": "c1b9fae262f42868c075ac865a8ab34920e20a2c"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/FontAwesome6_Brands.ttf",
+ "sha1": "7ce89c71d5a51ac65b159c71422783dd86529c66"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/FontAwesome6_Regular.ttf",
+ "sha1": "775e2ecfc18d22b177274453d4c014ca6be63208"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/FontAwesome6_Solid.ttf",
+ "sha1": "2b8e11389d98122399667cf64941eb58497dc128"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/Fontisto.ttf",
+ "sha1": "c090a3ec96a3f1bb9b615c2f3f204ce0dcdcdbc3"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/Foundation.ttf",
+ "sha1": "4b2bce6c792493a4a5716b6fec2dbefe89492c3f"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/Ionicons.ttf",
+ "sha1": "86e07c3d974eb09099e6e5a9b3b8310303cf0feb"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf",
+ "sha1": "4c2a838b00dbb5e8bb1b368fce0de534e8eb241c"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf",
+ "sha1": "7e02c3f005532ff4d24148567c84089756a7848a"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/Octicons.ttf",
+ "sha1": "56acefc0731f35ee23b195b1c8cb5fa94a0db97b"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf",
+ "sha1": "9ffb81a5a11112e292f2cc323e98486bad597599"
+ },
+ {
+ "path": "node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
+ "sha1": "6a48a962b06cc3acbdfd61df0d9a34744eea5e8d"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index f2ee01a..4e902d7 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,7 +11,9 @@
"@react-native/new-app-screen": "0.86.0",
"react": "19.2.3",
"react-native": "0.86.0",
- "react-native-safe-area-context": "^5.5.2"
+ "react-native-safe-area-context": "^5.8.0",
+ "react-native-svg": "^15.15.5",
+ "react-native-vector-icons": "^10.3.0"
},
"devDependencies": {
"@babel/core": "^7.25.2",
@@ -26,6 +28,7 @@
"@react-native/typescript-config": "0.86.0",
"@types/jest": "^29.5.13",
"@types/react": "^19.2.0",
+ "@types/react-native-vector-icons": "^6.4.18",
"@types/react-test-renderer": "^19.1.0",
"eslint": "^8.19.0",
"jest": "^29.6.3",
@@ -3501,6 +3504,27 @@
"csstype": "^3.2.2"
}
},
+ "node_modules/@types/react-native": {
+ "version": "0.70.19",
+ "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.70.19.tgz",
+ "integrity": "sha512-c6WbyCgWTBgKKMESj/8b4w+zWcZSsCforson7UdXtXMecG3MxCinYi6ihhrHVPyUrVzORsvEzK8zg32z4pK6Sg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
+ "node_modules/@types/react-native-vector-icons": {
+ "version": "6.4.18",
+ "resolved": "https://registry.npmjs.org/@types/react-native-vector-icons/-/react-native-vector-icons-6.4.18.tgz",
+ "integrity": "sha512-YGlNWb+k5laTBHd7+uZowB9DpIK3SXUneZqAiKQaj1jnJCZM0x71GDim5JCTMi4IFkhc9m8H/Gm28T5BjyivUw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/react": "*",
+ "@types/react-native": "^0.70"
+ }
+ },
"node_modules/@types/react-test-renderer": {
"version": "19.1.0",
"resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-19.1.0.tgz",
@@ -4459,6 +4483,12 @@
"devOptional": true,
"license": "MIT"
},
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "license": "ISC"
+ },
"node_modules/brace-expansion": {
"version": "5.0.7",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz",
@@ -5049,6 +5079,47 @@
"node": ">= 8"
}
},
+ "node_modules/css-select": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
+ "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.1.0",
+ "domhandler": "^5.0.2",
+ "domutils": "^3.0.1",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-tree": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
+ "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
+ "license": "MIT",
+ "dependencies": {
+ "mdn-data": "2.0.14",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
+ "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
"node_modules/csstype": {
"version": "3.2.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
@@ -5277,6 +5348,61 @@
"node": ">=6.0.0"
}
},
+ "node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
@@ -5332,6 +5458,18 @@
"node": ">= 0.8"
}
},
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
"node_modules/env-paths": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
@@ -8780,6 +8918,12 @@
"node": ">= 0.4"
}
},
+ "node_modules/mdn-data": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
+ "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
+ "license": "CC0-1.0"
+ },
"node_modules/media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@@ -9402,6 +9546,18 @@
"node": ">=8"
}
},
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
"node_modules/nullthrows": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz",
@@ -9424,7 +9580,6 @@
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10.0"
@@ -9954,7 +10109,6 @@
"version": "15.8.1",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
"integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"loose-envify": "^1.4.0",
@@ -9966,7 +10120,6 @@
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
- "dev": true,
"license": "MIT"
},
"node_modules/punycode": {
@@ -10183,6 +10336,75 @@
"react-native": "*"
}
},
+ "node_modules/react-native-svg": {
+ "version": "15.15.5",
+ "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.15.5.tgz",
+ "integrity": "sha512-L4go5jA+GWutdJ/JucuN20cjAbMg1HmMtAP+wZ+3JLCf6Jd0bhXQHxciRP/AQm/FlrIEZwkMcHNZP+FXAiic0w==",
+ "license": "MIT",
+ "dependencies": {
+ "css-select": "^5.1.0",
+ "css-tree": "^1.1.3"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/react-native-vector-icons": {
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-10.3.0.tgz",
+ "integrity": "sha512-IFQ0RE57819hOUdFvgK4FowM5aMXg7C7XKsuGLevqXkkIJatc3QopN0wYrb2IrzUgmdpfP+QVIbI3S6h7M0btw==",
+ "deprecated": "react-native-vector-icons package has moved to a new model of per-icon-family packages. See the https://github.com/oblador/react-native-vector-icons/blob/master/MIGRATION.md on how to migrate",
+ "license": "MIT",
+ "dependencies": {
+ "prop-types": "^15.7.2",
+ "yargs": "^16.1.1"
+ },
+ "bin": {
+ "fa-upgrade.sh": "bin/fa-upgrade.sh",
+ "fa5-upgrade": "bin/fa5-upgrade.sh",
+ "fa6-upgrade": "bin/fa6-upgrade.sh",
+ "generate-icon": "bin/generate-icon.js"
+ }
+ },
+ "node_modules/react-native-vector-icons/node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "node_modules/react-native-vector-icons/node_modules/yargs": {
+ "version": "16.2.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.2.tgz",
+ "integrity": "sha512-Nt9ZJjXTv5R8MHbqby/wXQ6Gi0Bb3TcYZkR1bzuL4yB2OxWPkXknz513gEF0GoA6tn00UpbPvERW8rzCuWCA6w==",
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/react-native-vector-icons/node_modules/yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/react-native/node_modules/commander": {
"version": "12.1.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
diff --git a/package.json b/package.json
index c66453b..67d2064 100644
--- a/package.json
+++ b/package.json
@@ -10,10 +10,12 @@
"test": "jest"
},
"dependencies": {
+ "@react-native/new-app-screen": "0.86.0",
"react": "19.2.3",
"react-native": "0.86.0",
- "@react-native/new-app-screen": "0.86.0",
- "react-native-safe-area-context": "^5.5.2"
+ "react-native-safe-area-context": "^5.8.0",
+ "react-native-svg": "^15.15.5",
+ "react-native-vector-icons": "^10.3.0"
},
"devDependencies": {
"@babel/core": "^7.25.2",
@@ -28,6 +30,7 @@
"@react-native/typescript-config": "0.86.0",
"@types/jest": "^29.5.13",
"@types/react": "^19.2.0",
+ "@types/react-native-vector-icons": "^6.4.18",
"@types/react-test-renderer": "^19.1.0",
"eslint": "^8.19.0",
"jest": "^29.6.3",
@@ -38,4 +41,4 @@
"engines": {
"node": ">= 22.11.0"
}
-}
\ No newline at end of file
+}
diff --git a/react-native.config.js b/react-native.config.js
new file mode 100644
index 0000000..8581947
--- /dev/null
+++ b/react-native.config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ assets: ['./node_modules/react-native-vector-icons/Fonts'],
+};
\ No newline at end of file
diff --git a/src/components/actionGrid.tsx b/src/components/actionGrid.tsx
new file mode 100644
index 0000000..2511833
--- /dev/null
+++ b/src/components/actionGrid.tsx
@@ -0,0 +1,29 @@
+import React from 'react';
+import { View, Text, TouchableOpacity } from 'react-native';
+import Ionicons from 'react-native-vector-icons/Ionicons';
+import { styles } from '../styles/ActionGridStyles';
+import { actions } from '../constants/data';
+
+
+
+export default function ActionGrid() {
+ return (
+
+ {actions.map((action) => (
+
+
+
+
+
+ {action.label}
+
+
+
+ ))}
+
+ );
+}
\ No newline at end of file
diff --git a/src/components/header.tsx b/src/components/header.tsx
new file mode 100644
index 0000000..a6b0282
--- /dev/null
+++ b/src/components/header.tsx
@@ -0,0 +1,58 @@
+import React from 'react';
+import { View, Text, TouchableOpacity } from 'react-native';
+import Ionicons from 'react-native-vector-icons/Ionicons';
+import { COLORS } from '../constants/color';
+ import { HeaderProps } from '../types/type';
+ import { styles } from '../styles/HeaderStyles';
+
+
+
+export default function Header({
+ userName,
+ locationName,
+ badgeCount = 0,
+}: HeaderProps) {
+ return (
+
+
+
+
+
+ Good morning, {userName}
+
+
+
+
+ {locationName}
+
+
+
+
+
+
+
+
+
+
+
+ {badgeCount > 0 && (
+
+
+ {badgeCount}
+
+
+ )}
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/components/siteHealthCard.tsx b/src/components/siteHealthCard.tsx
new file mode 100644
index 0000000..085b8fb
--- /dev/null
+++ b/src/components/siteHealthCard.tsx
@@ -0,0 +1,82 @@
+import React from 'react';
+import { View, Text } from 'react-native';
+import Svg, { Circle } from 'react-native-svg';
+
+import { COLORS } from '../constants/color';
+import { styles } from '../styles/SiteHealthCardStyles';
+import Card from '../utils/card';
+
+export default function SiteHealthCard() {
+ return (
+
+
+ {/* Circle */}
+
+
+
+
+
+ SITE HEALTH
+
+
+
+
+ {/* Right Side Data */}
+
+
+
+ Assets online
+
+ 242 / 251
+
+
+
+
+ Active alarms
+
+ 3 critical
+
+
+
+
+ Energy today
+
+ 4,218 kWh
+
+
+
+
+ vs yesterday
+
+ -6.2%
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/components/statCard.tsx b/src/components/statCard.tsx
new file mode 100644
index 0000000..4e26aab
--- /dev/null
+++ b/src/components/statCard.tsx
@@ -0,0 +1,60 @@
+import React from 'react';
+import { View, Text } from 'react-native';
+import Ionicons from 'react-native-vector-icons/Ionicons';
+
+import { StatCardProps } from '../types/type';
+import Card from '../utils/card';
+import { styles } from '../styles/StatCardStyle';
+
+
+
+export default function StatCard({
+ title,
+ icon,
+ iconColor,
+ value,
+ subValue,
+ highlightValueColor,
+}: StatCardProps) {
+ return (
+
+
+
+
+
+
+ {title}
+
+
+
+
+
+
+ {value}
+
+
+ {subValue ? (
+
+ {subValue}
+
+ ) : null}
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/constants/color.ts b/src/constants/color.ts
new file mode 100644
index 0000000..063c141
--- /dev/null
+++ b/src/constants/color.ts
@@ -0,0 +1,18 @@
+export const COLORS = {
+ background: '#0B131F',
+ cardBg: '#152132',
+ cardBorder: '#1F2E45',
+ textPrimary: '#FFFFFF',
+ textSecondary: '#8A9BB4',
+
+ // Accents
+ green: '#00E676',
+ red: '#FF4D4D',
+ orange: '#FF9800',
+ cyan: '#00E5FF',
+ yellow: '#FFD600',
+
+ // Tab Bar
+ tabActive: '#FF9800',
+ tabInactive: '#60728B',
+};
\ No newline at end of file
diff --git a/src/constants/data.ts b/src/constants/data.ts
new file mode 100644
index 0000000..02fafff
--- /dev/null
+++ b/src/constants/data.ts
@@ -0,0 +1,57 @@
+import { COLORS } from "./color";
+
+export const actions = [
+ {
+ id: 1,
+ label: 'Scan',
+ icon: 'scan-outline',
+ color: COLORS.orange,
+ },
+ {
+ id: 2,
+ label: 'Optix AI',
+ icon: 'sparkles-outline',
+ color: COLORS.orange,
+ },
+ {
+ id: 3,
+ label: 'Check In',
+ icon: 'log-in-outline',
+ color: COLORS.cyan,
+ },
+ {
+ id: 4,
+ label: 'Air',
+ icon: 'pulse-outline',
+ color: COLORS.cyan,
+ },
+];
+
+export const cards = [
+ {
+ title: "Critical Alarms",
+ value: "3",
+ color: "#FF4C4C",
+ icon: "warning-outline",
+ },
+ {
+ title: "Energy Today",
+ value: "4,218",
+ unit: "kWh",
+ color: "#F6A52D",
+ icon: "flash-outline",
+ },
+ {
+ title: "Equipment Online",
+ value: "242 / 251",
+ color: "#34E27A",
+ icon: "cube-outline",
+ },
+ {
+ title: "Air Quality",
+ value: "78",
+ unit: "AQI",
+ color: "#47C3FF",
+ icon: "pulse-outline",
+ },
+];
\ No newline at end of file
diff --git a/src/navigation/bottonTabBar.tsx b/src/navigation/bottonTabBar.tsx
new file mode 100644
index 0000000..8fa4462
--- /dev/null
+++ b/src/navigation/bottonTabBar.tsx
@@ -0,0 +1,65 @@
+import React from 'react';
+import { View, Text, TouchableOpacity } from 'react-native';
+import Ionicons from 'react-native-vector-icons/Ionicons';
+
+import { styles } from '../styles/BottontabStyle';
+import { COLORS } from '../constants/color';
+
+export default function BottomTabBar() {
+ return (
+
+
+ {/* Home */}
+
+
+
+ Home
+
+
+
+ {/* Assets */}
+
+
+
+ Assets
+
+
+
+ {/* Scan Button */}
+
+
+
+
+
+
+ Scan
+
+
+
+ {/* Alarms */}
+
+
+
+ Alarms
+
+
+
+ {/* More */}
+
+
+
+ More
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/screens/HomeScreen/homeScreen.tsx b/src/screens/HomeScreen/homeScreen.tsx
new file mode 100644
index 0000000..d43b788
--- /dev/null
+++ b/src/screens/HomeScreen/homeScreen.tsx
@@ -0,0 +1,162 @@
+import React from 'react';
+import { View, StyleSheet, ScrollView,Text } from 'react-native';
+import { SafeAreaProvider } from 'react-native-safe-area-context';
+
+import { cards } from '../../constants/data';
+import { COLORS } from '../../constants/color';
+import Header from '../../components/header';
+import SiteHealthCard from '../../components/siteHealthCard';
+import ActionGrid from '../../components/actionGrid';
+import StatCard from '../../components/statCard';
+import BottomTabBar from '../../navigation/bottonTabBar';
+import Card from '../../utils/card';
+import Ionicons from 'react-native-vector-icons/Ionicons';
+
+export default function HomeScreen() {
+ return (
+
+
+ {/* 2. Main container needs flex: 1 */}
+
+
+ {/* Your content */}
+
+
+
+
+
+ {cards.slice(2, 4).map((card) => (
+
+ ))}
+
+
+
+ {cards.slice(0, 2).map((card) => (
+
+ ))}
+
+
+
+
+
+
+
+
+ OPTIX AI RECOMMENDATION
+
+
+
+
+
+ Chiller CH-02 running 14% below efficiency curve.
+ Shifting load to CH-01 saves ≈ ₹8,400/day.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ backgroundColor: COLORS.background,
+ },
+ scrollContent: {
+ paddingHorizontal: 16,
+ paddingTop: 16,
+ paddingBottom: 20,
+ },
+ gridRow: {
+
+ flexDirection: 'row',
+ flexGrow:1,
+
+ marginBottom: 8,
+ gap:10
+ },
+ card: {
+
+ borderColor: COLORS.orange,
+
+ marginHorizontal: 10,
+
+ marginTop: 10,
+
+ marginBottom: 20,
+ },
+
+ header: {
+ flexDirection: 'row',
+
+ alignItems: 'center',
+
+ marginBottom: 10,
+ },
+
+ title: {
+ color: COLORS.orange,
+
+ fontSize: 18,
+
+ fontWeight: 'bold',
+
+ marginLeft: 8,
+ },
+
+ message: {
+ color: COLORS.textPrimary,
+
+ fontSize: 16,
+
+ lineHeight: 24,
+
+ marginLeft: 20,
+ },
+});
diff --git a/src/styles/ActionGridStyles.ts b/src/styles/ActionGridStyles.ts
new file mode 100644
index 0000000..9214013
--- /dev/null
+++ b/src/styles/ActionGridStyles.ts
@@ -0,0 +1,35 @@
+import { StyleSheet } from 'react-native';
+import { COLORS } from '../constants/color';
+
+export const styles = StyleSheet.create({
+
+ grid: {
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ marginBottom: 20,
+ },
+
+ button: {
+ flex: 1,
+ backgroundColor: COLORS.cardBg,
+ borderRadius: 16,
+
+ paddingVertical: 18,
+
+ marginHorizontal: 5,
+
+ justifyContent: 'center',
+ alignItems: 'center',
+ },
+
+ text: {
+ color: COLORS.textPrimary,
+
+ fontSize: 14,
+
+ fontWeight: '600',
+
+ marginTop: 8,
+ },
+
+});
\ No newline at end of file
diff --git a/src/styles/BottontabStyle.ts b/src/styles/BottontabStyle.ts
new file mode 100644
index 0000000..3380e52
--- /dev/null
+++ b/src/styles/BottontabStyle.ts
@@ -0,0 +1,58 @@
+import { StyleSheet } from 'react-native';
+import { COLORS } from '../constants/color';
+
+export const styles = StyleSheet.create({
+
+ container: {
+ flexDirection: 'row',
+
+ justifyContent: 'space-around',
+
+ alignItems: 'flex-end',
+
+ backgroundColor: COLORS.background,
+
+ borderTopWidth: 1,
+
+ borderTopColor: COLORS.cardBorder,
+
+ paddingVertical: 10,
+ },
+
+ tab: {
+ flex: 1,
+
+ alignItems: 'center',
+ },
+
+ label: {
+ color: COLORS.tabInactive,
+
+ fontSize: 12,
+
+ marginTop: 4,
+ },
+
+ scanContainer: {
+ alignItems: 'center',
+
+ marginTop: -20,
+ },
+
+ scanButton: {
+ width: 60,
+
+ height: 60,
+
+ borderRadius: 30,
+
+ backgroundColor: COLORS.orange,
+
+ justifyContent: 'center',
+
+ alignItems: 'center',
+
+ elevation: 6,
+ },
+
+});
\ No newline at end of file
diff --git a/src/styles/HeaderStyles.ts b/src/styles/HeaderStyles.ts
new file mode 100644
index 0000000..1356c99
--- /dev/null
+++ b/src/styles/HeaderStyles.ts
@@ -0,0 +1,66 @@
+import { StyleSheet } from 'react-native';
+import { COLORS } from '../constants/color';
+
+export const styles = StyleSheet.create({
+
+ container: {
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ alignItems: 'center',
+
+ paddingTop: 25, // space above
+ paddingHorizontal: 10,
+
+ marginBottom: 25,
+ },
+
+ greeting: {
+ color: COLORS.textSecondary,
+ fontSize: 16,
+ marginBottom: 8,
+ },
+
+ locationContainer: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ },
+
+ location: {
+ color: COLORS.textPrimary,
+ fontSize: 26,
+ fontWeight: 'bold',
+ marginRight: 6,
+ },
+
+ notificationBtn: {
+ width: 48,
+ height: 48,
+ borderRadius: 15,
+ backgroundColor: COLORS.cardBg,
+ justifyContent: 'center',
+ alignItems: 'center',
+ },
+
+ badge: {
+ position: 'absolute',
+ top: -3,
+ right: -3,
+
+ backgroundColor: COLORS.red,
+
+ borderRadius: 10,
+
+ width: 20,
+ height: 20,
+
+ justifyContent: 'center',
+ alignItems: 'center',
+ },
+
+ badgeText: {
+ color: '#fff',
+ fontSize: 10,
+ fontWeight: 'bold',
+ },
+
+});
\ No newline at end of file
diff --git a/src/styles/SiteHealthCardStyles.ts b/src/styles/SiteHealthCardStyles.ts
new file mode 100644
index 0000000..f71a641
--- /dev/null
+++ b/src/styles/SiteHealthCardStyles.ts
@@ -0,0 +1,68 @@
+import { StyleSheet } from 'react-native';
+import { COLORS } from '../constants/color';
+
+export const styles = StyleSheet.create({
+
+ card: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ marginBottom:20
+ },
+
+ circleContainer: {
+ justifyContent: 'center',
+
+ alignItems: 'center',
+
+ marginRight: 20,
+
+ position: 'relative',
+ },
+
+ circleText: {
+ position: 'absolute',
+
+ color: COLORS.textSecondary,
+
+ fontSize: 10,
+
+ fontWeight: 'bold',
+
+ textAlign: 'center',
+
+ width: 70,
+ },
+
+ details: {
+ flex: 1,
+ },
+
+ row: {
+ flexDirection: 'row',
+
+ justifyContent: 'space-between',
+
+ alignItems: 'center',
+
+ marginBottom: 12,
+ },
+
+ label: {
+ color: COLORS.textSecondary,
+
+ fontSize: 14,
+ },
+
+ value: {
+ color: COLORS.textPrimary,
+
+ fontSize: 15,
+ },
+
+ bold: {
+ fontSize: 18,
+
+ fontWeight: 'bold',
+ },
+
+});
\ No newline at end of file
diff --git a/src/styles/StatCardStyle.ts b/src/styles/StatCardStyle.ts
new file mode 100644
index 0000000..acb04db
--- /dev/null
+++ b/src/styles/StatCardStyle.ts
@@ -0,0 +1,42 @@
+import { StyleSheet } from 'react-native';
+import { COLORS } from '../constants/color';
+
+export const styles = StyleSheet.create({
+
+ header: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ },
+
+ title: {
+ fontSize: 12,
+ fontWeight: 'bold',
+
+ marginLeft: 6,
+ },
+
+ valueContainer: {
+ flexDirection: 'row',
+ alignItems: 'flex-end',
+
+ marginTop: 12,
+ },
+
+ value: {
+ color: COLORS.textPrimary,
+
+ fontSize: 30,
+
+ fontWeight: 'bold',
+ },
+
+ subValue: {
+ color: COLORS.textSecondary,
+
+ fontSize: 14,
+
+ marginLeft: 6,
+ marginBottom: 4,
+ },
+
+});
\ No newline at end of file
diff --git a/src/styles/cardStyle.ts b/src/styles/cardStyle.ts
new file mode 100644
index 0000000..7407274
--- /dev/null
+++ b/src/styles/cardStyle.ts
@@ -0,0 +1,19 @@
+import { StyleSheet } from 'react-native';
+import { COLORS } from '../constants/color';
+
+export const styles = StyleSheet.create({
+
+ card: {
+ backgroundColor: COLORS.cardBg,
+
+ borderRadius: 18,
+
+ borderWidth: 1,
+
+ borderColor: COLORS.cardBorder,
+
+ padding: 16,
+
+ },
+
+});
\ No newline at end of file
diff --git a/src/types/type.ts b/src/types/type.ts
new file mode 100644
index 0000000..d930d1e
--- /dev/null
+++ b/src/types/type.ts
@@ -0,0 +1,18 @@
+export interface HeaderProps {
+ userName: string;
+ locationName: string;
+ badgeCount?: number;
+}
+
+export interface StatCardProps {
+ title: string;
+ icon: string;
+ iconColor: string;
+ value: string;
+ subValue?: string;
+ highlightValueColor?: string;
+}
+export interface CardProps {
+ children: React.ReactNode;
+ style?: object;
+}
\ No newline at end of file
diff --git a/src/utils/card.tsx b/src/utils/card.tsx
new file mode 100644
index 0000000..faf582b
--- /dev/null
+++ b/src/utils/card.tsx
@@ -0,0 +1,15 @@
+import React from 'react';
+import { View } from 'react-native';
+
+import { styles } from '../styles/cardStyle';
+import { CardProps } from '../types/type';
+
+
+
+export default function Card({ children, style }: CardProps) {
+ return (
+
+ {children}
+
+ );
+}
\ No newline at end of file