main
alex 2023-07-13 22:03:29 +00:00
parent 835c97a20f
commit 5ec0f4510c
16 changed files with 367 additions and 973 deletions

20
App.js
View File

@ -1,12 +1,9 @@
import "react-native-gesture-handler";
import { StatusBar } from "expo-status-bar";
import { Appearance, StyleSheet, Text, View } from "react-native";
import { Text, View } from "react-native";
import { createDrawerNavigator } from "@react-navigation/drawer";
import { NavigationContainer } from "@react-navigation/native";
import SideBar from "./src/Components/SideBar";
import FaqScreen from "./src/Screens/FAQ";
import FeedbackScreen from "./src/Screens/Feedback";
import { PaperProvider } from "react-native-paper";
import {
AppContext,
AppProvider,
@ -14,11 +11,14 @@ import {
GetDataFromList,
GetMultipleData,
} from "./src/utils";
import DeviceScreen from "./src/Screens/Device";
import SettingsScreen from "./src/Screens/Settings";
import { Suspense, useContext, useEffect } from "react";
import { Suspense, lazy, useContext, useEffect } from "react";
import { SafeAreaView } from "react-native-safe-area-context";
import "./i18n";
import DeviceScreen from "./src/Screens/Device";
const SettingsScreen = lazy(() => import("./src/Screens/Settings"));
const FaqScreen = lazy(() => import("./src/Screens/FAQ"));
const FeedbackScreen = lazy(() => import("./src/Screens/Feedback"));
const Drawer = createDrawerNavigator();
@ -60,11 +60,14 @@ export function MyApp() {
return (
<SafeAreaView style={{ height: "100%" }}>
<PaperProvider>
<NavigationContainer>
<Drawer.Navigator
screenOptions={{
// headerShown: false,
headerStyle: {
backgroundColor: appContext.appTheme.drawer.backgroundColor,
},
headerTintColor: appContext.appTheme.text,
drawerStyle: {
backgroundColor: appContext.appTheme.drawer.backgroundColor,
},
@ -77,7 +80,6 @@ export function MyApp() {
<Drawer.Screen name="Settings" component={SettingsScreen} />
</Drawer.Navigator>
</NavigationContainer>
</PaperProvider>
<StatusBar
backgroundColor={appContext.appTheme.backgroundColor}

View File

@ -8,6 +8,10 @@
},
"screens": {
"device": {
"light": {
"pickerColorModeText": "Farbauswahl",
"pickerColorModePlaceholder": "Wählen Sie einen Farbmodus"
},
"settings": {
"settingsTitle": "Einstellungen",
"wifiStandByTitle": "WLAN im Standby",
@ -15,7 +19,7 @@
"deviceInformationTitle": "Geräteinformationen",
"deviceModelTitle": "Gerätemodell",
"deviceFirmwareVersionTitle": "Firmware Version",
"deviceLastUpdated": "Letzte Aktualisierung"
"deviceLastUpdatedTitle": "Letzte Aktualisierung"
}
},
"settings": {

View File

@ -8,6 +8,10 @@
},
"screens": {
"device": {
"light": {
"pickerColorModeText": "Color selection",
"pickerColorModePlaceholder": "Select a color mode"
},
"settings": {
"settingsTitle": "Settings",
"wifiStandByTitle": "WLAN in standby",
@ -15,7 +19,7 @@
"deviceInformationTitle": "Device information",
"deviceModelTitle": "Device model",
"deviceFirmwareVersionTitle": "Firmware Version",
"deviceLastUpdated": "Last updated"
"deviceLastUpdatedTitle": "Last updated"
}
},
"settings": {

760
package-lock.json generated
View File

@ -9,6 +9,7 @@
"version": "1.0.0",
"dependencies": {
"@react-native-async-storage/async-storage": "1.17.11",
"@react-native-community/slider": "^4.4.2",
"@react-navigation/drawer": "^6.6.3",
"@react-navigation/native": "^6.1.7",
"@react-navigation/native-stack": "^6.9.13",
@ -21,12 +22,10 @@
"react-native": "0.71.8",
"react-native-gesture-handler": "~2.9.0",
"react-native-pager-view": "6.1.2",
"react-native-paper": "^5.9.1",
"react-native-reanimated": "~2.14.4",
"react-native-safe-area-context": "4.5.0",
"react-native-screens": "~3.20.0",
"react-native-tab-view": "^3.5.2",
"react-native-ui-lib": "^7.5.2",
"reanimated-color-picker": "^2.3.1"
},
"devDependencies": {
@ -1974,18 +1973,6 @@
"node": ">=6.9.0"
}
},
"node_modules/@callstack/react-theme-provider": {
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/@callstack/react-theme-provider/-/react-theme-provider-3.0.8.tgz",
"integrity": "sha512-5U231sYY2sqQOaELX0WBCn+iluV8bFaXIS7em03k4W5Xz0AhGvKlnpLIhDGFP8im/SvNW7/2XoR0BsClhn9t6Q==",
"dependencies": {
"deepmerge": "^3.2.0",
"hoist-non-react-statics": "^3.3.0"
},
"peerDependencies": {
"react": ">=16.3.0"
}
},
"node_modules/@egjs/hammerjs": {
"version": "2.0.17",
"resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz",
@ -4952,6 +4939,11 @@
"node": ">=8"
}
},
"node_modules/@react-native-community/slider": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/@react-native-community/slider/-/slider-4.4.2.tgz",
"integrity": "sha512-D9bv+3Vd2gairAhnRPAghwccgEmoM7g562pm8i4qB3Esrms5mggF81G3UvCyc0w3jjtFHh8dpQkfEoKiP0NW/Q=="
},
"node_modules/@react-native/assets": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz",
@ -5236,11 +5228,6 @@
"node": ">=10.0.0"
}
},
"node_modules/@yarnpkg/lockfile": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz",
"integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ=="
},
"node_modules/abort-controller": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
@ -5252,11 +5239,6 @@
"node": ">=6.5"
}
},
"node_modules/abs-svg-path": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/abs-svg-path/-/abs-svg-path-0.1.1.tgz",
"integrity": "sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA=="
},
"node_modules/absolute-path": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz",
@ -5414,17 +5396,6 @@
"node": ">=0.10.0"
}
},
"node_modules/array-back": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz",
"integrity": "sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==",
"dependencies": {
"typical": "^2.6.0"
},
"engines": {
"node": ">=0.12.0"
}
},
"node_modules/array-union": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
@ -5576,11 +5547,6 @@
"resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz",
"integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ=="
},
"node_modules/babel-plugin-transform-inline-environment-variables": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-environment-variables/-/babel-plugin-transform-inline-environment-variables-0.0.2.tgz",
"integrity": "sha512-8gobU7uuTIjz62aXTEZOH5yhuIPojNVAgLK0xnepdGS19aqOEphy7FVWBsojPa14yrQGM/w63uDox4thYcHCnA=="
},
"node_modules/babel-preset-expo": {
"version": "9.3.2",
"resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.3.2.tgz",
@ -5767,32 +5733,6 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/bower": {
"version": "1.8.14",
"resolved": "https://registry.npmjs.org/bower/-/bower-1.8.14.tgz",
"integrity": "sha512-8Rq058FD91q9Nwthyhw0la9fzpBz0iwZTrt51LWl+w+PnJgZk9J+5wp3nibsJcIUPglMYXr4NRBaR+TUj0OkBQ==",
"bin": {
"bower": "bin/bower"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/bower-auto-release": {
"version": "1.1.358",
"resolved": "https://registry.npmjs.org/bower-auto-release/-/bower-auto-release-1.1.358.tgz",
"integrity": "sha512-uWpR29K93+Ue3UJJPiVH9Q3L5+kpAQN7LlB8zdQe0unvVn4sTIIzrdSYkuIml55TEvSFewtov6OB3jmpAY4jsQ==",
"dependencies": {
"bower": "^1.7.9",
"command-line-args": "^3.0.0"
},
"bin": {
"bower-auto-release": "index.js"
},
"optionalDependencies": {
"wnpm-ci": "*"
}
},
"node_modules/bplist-creator": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz",
@ -6351,15 +6291,6 @@
"node": ">=0.10.0"
}
},
"node_modules/color": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
"integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
"dependencies": {
"color-convert": "^1.9.3",
"color-string": "^1.6.0"
}
},
"node_modules/color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@ -6403,20 +6334,6 @@
"resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
"integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w=="
},
"node_modules/command-line-args": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-3.0.5.tgz",
"integrity": "sha512-M29kjOI24VF4HqatnqVyDqyeq3SYYZbq6LWv/AdVZ5LvrcqVNSN2XeYPrBxcO19T8YkGmyCqTUqYR07DFjVhyg==",
"dependencies": {
"array-back": "^1.0.4",
"feature-detect-es6": "^1.3.1",
"find-replace": "^1.0.2",
"typical": "^2.6.0"
},
"bin": {
"command-line-args": "bin.js"
}
},
"node_modules/commander": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
@ -6430,17 +6347,6 @@
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
"integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="
},
"node_modules/commons-validator-js": {
"version": "1.0.1668",
"resolved": "https://registry.npmjs.org/commons-validator-js/-/commons-validator-js-1.0.1668.tgz",
"integrity": "sha512-zGSjqN958s9P9nFyK0qs8ipKnh+g+DFMpcnz7BajJrzsPDd8KdbyfostuZiT1l6Vm/WxiMHTxAzWFLGiMRpUCA==",
"dependencies": {
"bower-auto-release": "^1.1.358",
"lodash.includes": "^4.3.0",
"punycode": "^1.4.1",
"wnpm-ci": "^8.0.131"
}
},
"node_modules/compare-versions": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz",
@ -6641,21 +6547,6 @@
"resolved": "https://registry.npmjs.org/dag-map/-/dag-map-1.0.2.tgz",
"integrity": "sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw=="
},
"node_modules/date-fns": {
"version": "2.30.0",
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
"integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
"dependencies": {
"@babel/runtime": "^7.21.0"
},
"engines": {
"node": ">=0.11"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/date-fns"
}
},
"node_modules/dayjs": {
"version": "1.11.9",
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz",
@ -7522,17 +7413,6 @@
"resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz",
"integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ=="
},
"node_modules/feature-detect-es6": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/feature-detect-es6/-/feature-detect-es6-1.5.0.tgz",
"integrity": "sha512-DzWPIGzTnfp3/KK1d/YPfmgLqeDju9F2DQYBL35VusgSApcA7XGqVtXfR4ETOOFEzdFJ3J7zh0Gkk011TiA4uQ==",
"dependencies": {
"array-back": "^1.0.4"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/fetch-retry": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-4.1.1.tgz",
@ -7631,18 +7511,6 @@
"node": ">=6"
}
},
"node_modules/find-replace": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz",
"integrity": "sha512-KrUnjzDCD9426YnCP56zGYy/eieTnhtK6Vn++j+JJzmlsWWwEkDnsyVF575spT6HJ6Ow9tlbT3TQTDsa+O4UWA==",
"dependencies": {
"array-back": "^1.0.4",
"test-value": "^2.1.0"
},
"engines": {
"node": ">=4.0.0"
}
},
"node_modules/find-up": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
@ -9536,14 +9404,6 @@
"node": ">=0.10.0"
}
},
"node_modules/klaw-sync": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz",
"integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==",
"dependencies": {
"graceful-fs": "^4.1.11"
}
},
"node_modules/kleur": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
@ -9589,11 +9449,6 @@
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
"integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
},
"node_modules/lodash.includes": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
"integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
},
"node_modules/lodash.isequal": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
@ -11057,14 +10912,6 @@
"node": ">=0.10.0"
}
},
"node_modules/normalize-svg-path": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/normalize-svg-path/-/normalize-svg-path-1.1.0.tgz",
"integrity": "sha512-r9KHKG2UUeB5LoTouwDzBy2VxXlHsiM6fyLQvnJa0S5hrhzqElH/CH7TUGhT1fVvIYBIKf3OpY4YJ4CK+iaqHg==",
"dependencies": {
"svg-arc-to-cubic-bezier": "^3.0.0"
}
},
"node_modules/npm-package-arg": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz",
@ -11397,11 +11244,6 @@
"node": ">=10"
}
},
"node_modules/parse-svg-path": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz",
"integrity": "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ=="
},
"node_modules/parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@ -11427,216 +11269,6 @@
"cross-spawn": "^6.0.5"
}
},
"node_modules/patch-package": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/patch-package/-/patch-package-7.0.0.tgz",
"integrity": "sha512-eYunHbnnB2ghjTNc5iL1Uo7TsGMuXk0vibX3RFcE/CdVdXzmdbMsG/4K4IgoSuIkLTI5oHrMQk4+NkFqSed0BQ==",
"dependencies": {
"@yarnpkg/lockfile": "^1.1.0",
"chalk": "^4.1.2",
"ci-info": "^3.7.0",
"cross-spawn": "^7.0.3",
"find-yarn-workspace-root": "^2.0.0",
"fs-extra": "^9.0.0",
"klaw-sync": "^6.0.0",
"minimist": "^1.2.6",
"open": "^7.4.2",
"rimraf": "^2.6.3",
"semver": "^5.6.0",
"slash": "^2.0.0",
"tmp": "^0.0.33",
"yaml": "^2.2.2"
},
"bin": {
"patch-package": "index.js"
},
"engines": {
"node": ">=14",
"npm": ">5"
}
},
"node_modules/patch-package/node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/patch-package/node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/patch-package/node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/patch-package/node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"node_modules/patch-package/node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
"which": "^2.0.1"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/patch-package/node_modules/fs-extra": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
"integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
"dependencies": {
"at-least-node": "^1.0.0",
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/patch-package/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"engines": {
"node": ">=8"
}
},
"node_modules/patch-package/node_modules/jsonfile": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dependencies": {
"universalify": "^2.0.0"
},
"optionalDependencies": {
"graceful-fs": "^4.1.6"
}
},
"node_modules/patch-package/node_modules/open": {
"version": "7.4.2",
"resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
"integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
"dependencies": {
"is-docker": "^2.0.0",
"is-wsl": "^2.1.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/patch-package/node_modules/path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"engines": {
"node": ">=8"
}
},
"node_modules/patch-package/node_modules/semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"bin": {
"semver": "bin/semver"
}
},
"node_modules/patch-package/node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dependencies": {
"shebang-regex": "^3.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/patch-package/node_modules/shebang-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"engines": {
"node": ">=8"
}
},
"node_modules/patch-package/node_modules/slash": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
"integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
"engines": {
"node": ">=6"
}
},
"node_modules/patch-package/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/patch-package/node_modules/universalify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
"engines": {
"node": ">= 10.0.0"
}
},
"node_modules/patch-package/node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dependencies": {
"isexe": "^2.0.0"
},
"bin": {
"node-which": "bin/node-which"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/path-browserify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
@ -11991,11 +11623,6 @@
"once": "^1.3.1"
}
},
"node_modules/punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
"integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ=="
},
"node_modules/qrcode-terminal": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz",
@ -12263,24 +11890,6 @@
"react-native": "*"
}
},
"node_modules/react-native-paper": {
"version": "5.9.1",
"resolved": "https://registry.npmjs.org/react-native-paper/-/react-native-paper-5.9.1.tgz",
"integrity": "sha512-zsOdKQ+mXxeY+qZDSpizBTFVFrnV4P/84ZgSjTKQjbmPU5MnO1xJtntWVmk7Pba81x5Hbcf3Q1/9VP3LHy1anA==",
"hasInstallScript": true,
"dependencies": {
"@callstack/react-theme-provider": "^3.0.8",
"color": "^3.1.2",
"patch-package": "^7.0.0",
"use-latest-callback": "^0.1.5"
},
"peerDependencies": {
"react": "*",
"react-native": "*",
"react-native-safe-area-context": "*",
"react-native-vector-icons": "*"
}
},
"node_modules/react-native-reanimated": {
"version": "2.14.4",
"resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-2.14.4.tgz",
@ -12300,23 +11909,6 @@
"react-native": "*"
}
},
"node_modules/react-native-redash": {
"version": "12.6.1",
"resolved": "https://registry.npmjs.org/react-native-redash/-/react-native-redash-12.6.1.tgz",
"integrity": "sha512-SChHzssVr512PfZxGCcVMmlAzQ20k5BkC8BiSfZls6bFohLiJT3ih6Of9mPmaTENCQWe7ywTx7gzr3tAnIu2mg==",
"dependencies": {
"abs-svg-path": "^0.1.1",
"normalize-svg-path": "^1.0.1",
"parse-svg-path": "^0.1.2",
"use-memo-one": "^1.1.1"
},
"peerDependencies": {
"react": "*",
"react-native": "*",
"react-native-gesture-handler": "*",
"react-native-reanimated": "*"
}
},
"node_modules/react-native-safe-area-context": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.5.0.tgz",
@ -12352,125 +11944,6 @@
"react-native-pager-view": "*"
}
},
"node_modules/react-native-ui-lib": {
"version": "7.5.2",
"resolved": "https://registry.npmjs.org/react-native-ui-lib/-/react-native-ui-lib-7.5.2.tgz",
"integrity": "sha512-RPMNGnuOsvk1j+kx9yhScRfDYQr9kuEPwZLJPSUSteoiyshkkXaRMxNPfZ/sut/b6pw1ExOO5aTN4lYDZMu2TA==",
"dependencies": {
"babel-plugin-transform-inline-environment-variables": "^0.0.2",
"color": "^3.1.0",
"commons-validator-js": "^1.0.237",
"date-fns": "^2.29.3",
"deprecated-react-native-prop-types": "^2.3.0",
"hoist-non-react-statics": "^3.0.0",
"lodash": "^4.17.21",
"memoize-one": "^5.0.5",
"prop-types": "^15.5.10",
"react-freeze": "^1.0.0",
"react-native-redash": "^12.0.3",
"semver": "^5.5.0",
"tinycolor2": "^1.4.2",
"url-parse": "^1.2.0",
"wix-react-native-text-size": "~1.0.0"
},
"peerDependencies": {
"react": ">=17.0.1",
"react-native": ">=0.64.1",
"react-native-gesture-handler": ">=2.5.0",
"react-native-reanimated": ">=2.0.0"
}
},
"node_modules/react-native-ui-lib/node_modules/deprecated-react-native-prop-types": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-2.3.0.tgz",
"integrity": "sha512-pWD0voFtNYxrVqvBMYf5gq3NA2GCpfodS1yNynTPc93AYA/KEMGeWDqqeUB6R2Z9ZofVhks2aeJXiuQqKNpesA==",
"dependencies": {
"@react-native/normalize-color": "*",
"invariant": "*",
"prop-types": "*"
}
},
"node_modules/react-native-ui-lib/node_modules/semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"bin": {
"semver": "bin/semver"
}
},
"node_modules/react-native-vector-icons": {
"version": "9.2.0",
"resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-9.2.0.tgz",
"integrity": "sha512-wKYLaFuQST/chH3AJRjmOLoLy3JEs1JR6zMNgTaemFpNoXs0ztRnTxcxFD9xhX7cJe1/zoN5BpQYe7kL0m5yyA==",
"peer": true,
"dependencies": {
"prop-types": "^15.7.2",
"yargs": "^16.1.1"
},
"bin": {
"fa5-upgrade": "bin/fa5-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==",
"peer": true,
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
"wrap-ansi": "^7.0.0"
}
},
"node_modules/react-native-vector-icons/node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"peer": true,
"dependencies": {
"ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/react-native-vector-icons/node_modules/y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"peer": true,
"engines": {
"node": ">=10"
}
},
"node_modules/react-native-vector-icons/node_modules/yargs": {
"version": "16.2.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"peer": true,
"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==",
"peer": true,
"engines": {
"node": ">=10"
}
},
"node_modules/react-native/node_modules/promise": {
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz",
@ -13606,14 +13079,6 @@
"node": ">=0.10.0"
}
},
"node_modules/strip-final-newline": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
"engines": {
"node": ">=6"
}
},
"node_modules/strip-json-comments": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
@ -13719,11 +13184,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/svg-arc-to-cubic-bezier": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/svg-arc-to-cubic-bezier/-/svg-arc-to-cubic-bezier-3.2.0.tgz",
"integrity": "sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g=="
},
"node_modules/tar": {
"version": "6.1.15",
"resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz",
@ -13894,18 +13354,6 @@
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
},
"node_modules/test-value": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz",
"integrity": "sha512-+1epbAxtKeXttkGFMTX9H42oqzOTufR1ceCF+GYA5aOmvaPq9wd4PUS8329fn2RRLGNeUkgRLnVpycjx8DsO2w==",
"dependencies": {
"array-back": "^1.0.3",
"typical": "^2.6.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
@ -13949,11 +13397,6 @@
"xtend": "~4.0.1"
}
},
"node_modules/tinycolor2": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz",
"integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="
},
"node_modules/tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
@ -14087,11 +13530,6 @@
"node": ">= 0.6"
}
},
"node_modules/typical": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz",
"integrity": "sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg=="
},
"node_modules/ua-parser-js": {
"version": "1.0.35",
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.35.tgz",
@ -14349,14 +13787,6 @@
"react": ">=16.8"
}
},
"node_modules/use-memo-one": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz",
"integrity": "sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==",
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/use-sync-external-store": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
@ -14477,176 +13907,6 @@
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
"integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
},
"node_modules/wix-react-native-text-size": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/wix-react-native-text-size/-/wix-react-native-text-size-1.0.8.tgz",
"integrity": "sha512-mSv4ILmqmBDDbSPkUPGLzLchuQ2Q5nlVUawjM2NiXXf3/S4vDeMIo7rT7C5/Ph9K2+gUR7geLDvdwiY0V/A7XQ==",
"peerDependencies": {
"react-native": ">=0.59.0"
}
},
"node_modules/wnpm-ci": {
"version": "8.0.131",
"resolved": "https://registry.npmjs.org/wnpm-ci/-/wnpm-ci-8.0.131.tgz",
"integrity": "sha512-mC+8NQOleSlx7KPj939eRXNkXzOOPL6R62nX/fb+6TbFd2TXXTdriPQxW9HlpjJ3bnp8nsaezBRlJovJwWSNPg==",
"dependencies": {
"execa": "^2.0.3",
"fs-extra": "^8.1.0",
"mkdirp": "^0.5.1",
"semver": "^5.2.0",
"tmp": "^0.0.33"
},
"bin": {
"wnpm-release": "scripts/wnpm-release.js"
}
},
"node_modules/wnpm-ci/node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
"which": "^2.0.1"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/wnpm-ci/node_modules/execa": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-2.1.0.tgz",
"integrity": "sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw==",
"dependencies": {
"cross-spawn": "^7.0.0",
"get-stream": "^5.0.0",
"is-stream": "^2.0.0",
"merge-stream": "^2.0.0",
"npm-run-path": "^3.0.0",
"onetime": "^5.1.0",
"p-finally": "^2.0.0",
"signal-exit": "^3.0.2",
"strip-final-newline": "^2.0.0"
},
"engines": {
"node": "^8.12.0 || >=9.7.0"
}
},
"node_modules/wnpm-ci/node_modules/get-stream": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
"integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
"dependencies": {
"pump": "^3.0.0"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/wnpm-ci/node_modules/is-stream": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/wnpm-ci/node_modules/mimic-fn": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"engines": {
"node": ">=6"
}
},
"node_modules/wnpm-ci/node_modules/npm-run-path": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz",
"integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==",
"dependencies": {
"path-key": "^3.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/wnpm-ci/node_modules/onetime": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
"dependencies": {
"mimic-fn": "^2.1.0"
},
"engines": {
"node": ">=6"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/wnpm-ci/node_modules/p-finally": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz",
"integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==",
"engines": {
"node": ">=8"
}
},
"node_modules/wnpm-ci/node_modules/path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"engines": {
"node": ">=8"
}
},
"node_modules/wnpm-ci/node_modules/semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"bin": {
"semver": "bin/semver"
}
},
"node_modules/wnpm-ci/node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dependencies": {
"shebang-regex": "^3.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/wnpm-ci/node_modules/shebang-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"engines": {
"node": ">=8"
}
},
"node_modules/wnpm-ci/node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dependencies": {
"isexe": "^2.0.0"
},
"bin": {
"node-which": "bin/node-which"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/wonka": {
"version": "4.0.15",
"resolved": "https://registry.npmjs.org/wonka/-/wonka-4.0.15.tgz",
@ -14810,14 +14070,6 @@
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
},
"node_modules/yaml": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz",
"integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==",
"engines": {
"node": ">= 14"
}
},
"node_modules/yargs": {
"version": "15.4.1",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",

View File

@ -10,6 +10,7 @@
},
"dependencies": {
"@react-native-async-storage/async-storage": "1.17.11",
"@react-native-community/slider": "^4.4.2",
"@react-navigation/drawer": "^6.6.3",
"@react-navigation/native": "^6.1.7",
"@react-navigation/native-stack": "^6.9.13",
@ -22,12 +23,10 @@
"react-native": "0.71.8",
"react-native-gesture-handler": "~2.9.0",
"react-native-pager-view": "6.1.2",
"react-native-paper": "^5.9.1",
"react-native-reanimated": "~2.14.4",
"react-native-safe-area-context": "4.5.0",
"react-native-screens": "~3.20.0",
"react-native-tab-view": "^3.5.2",
"react-native-ui-lib": "^7.5.2",
"reanimated-color-picker": "^2.3.1"
},
"devDependencies": {

View File

@ -1,5 +1,5 @@
import { useContext } from "react";
import { ScrollView, View } from "react-native";
import { View } from "react-native";
import { AppContext } from "../../utils";
export default function Card({ children }) {

View File

@ -0,0 +1,5 @@
import Icon from "@expo/vector-icons/MaterialCommunityIcons";
export default function MyIcon({ name, color, size }) {
return <Icon name={name} color={color} size={size} />;
}

View File

@ -3,8 +3,8 @@ import { useContext } from "react";
import { Image, Text, TouchableOpacity, View } from "react-native";
import { AppContext, AppStyles } from "../../utils";
import { Divider } from "../Divider";
import Icon from "@expo/vector-icons/MaterialCommunityIcons";
import { useTranslation } from "react-i18next";
import MyIcon from "../Icon";
export default function Sidebar(props) {
const appContext = useContext(AppContext);
@ -57,7 +57,7 @@ export default function Sidebar(props) {
onPress={() => console.log("Pressed power")}
style={{ right: -30 }}
>
<Icon
<MyIcon
name="power"
color={appContext.appTheme.drawer.item.iconColor}
size={24}
@ -77,7 +77,7 @@ export default function Sidebar(props) {
}
onPress={onPress}
icon={({ size }) => (
<Icon
<MyIcon
name={iconName}
color={appContext.appTheme.drawer.item.iconColor}
size={size}

View File

@ -0,0 +1,26 @@
import Slider from "@react-native-community/slider";
import { useContext } from "react";
import { AppContext } from "../../utils";
export default function MySlider({
style,
value,
onValueChange,
minimumValue,
maximumValue,
}) {
const appContext = useContext(AppContext);
return (
<Slider
style={style}
minimumValue={minimumValue}
maximumValue={maximumValue}
value={value}
onValueChange={onValueChange}
minimumTrackTintColor={appContext.appTheme.slider.minimumTrackTintColor}
maximumTrackTintColor={appContext.appTheme.slider.maximumTrackTintColor}
thumbTintColor={appContext.appTheme.slider.thumbTintColor}
/>
);
}

View File

@ -0,0 +1,24 @@
import { useContext } from "react";
import { Switch } from "react-native";
import { AppContext } from "../../utils";
export default function MySwitch({ value, onValueChange }) {
const appContext = useContext(AppContext);
return (
<Switch
value={value}
onValueChange={onValueChange}
trackColor={{
true: appContext.appTheme.switch.trackColorTrue,
false: appContext.appTheme.switch.trackColorFalse,
}}
thumbColor={
value === true
? appContext.appTheme.switch.thumbColorTrue
: appContext.appTheme.switch.thumbColorFalse
}
ios_backgroundColor={appContext.appTheme.switch.ios_backgroundColor}
/>
);
}

View File

@ -1,11 +1,21 @@
import { useContext, useEffect, useState } from "react";
import { Image, ScrollView, StyleSheet, View, Text } from "react-native";
import { IconButton } from "react-native-paper";
import { Colors } from "react-native-ui-lib";
import { Suspense, lazy, useContext, useState } from "react";
import {
Image,
ScrollView,
StyleSheet,
View,
Text,
TouchableHighlight,
TouchableOpacity,
} from "react-native";
import LightView from "./light";
import { AppContext, GetData } from "../../utils";
import MotorView from "./motor";
import SettingsView from "./settings";
import { AppContext } from "../../utils";
//import MotorView from "./motor";
//import SettingsView from "./settings";
import MyIcon from "../../Components/Icon";
const MotorView = lazy(() => import("./motor"));
const SettingsView = lazy(() => import("./settings"));
const spaceToSide = 10; // left and right
const top = 35;
@ -15,9 +25,6 @@ const topFirst = top;
const topSecond = top + spaceBetweenButtons;
const topThird = top + 2 * spaceBetweenButtons;
const iconButtonActiveColor = "#e67e22";
const iconButtonNotActiveColor = "#fff";
export default function DeviceScreen() {
const appContext = useContext(AppContext);
const [selectedView, setSelectedView] = useState(0);
@ -35,6 +42,39 @@ export default function DeviceScreen() {
}
};
const MyButton = ({ selectedViewNumber, top, left, space, iconName }) => {
const TouchComponent =
appContext.appColorScheme === "dark"
? TouchableHighlight
: TouchableOpacity;
return (
<TouchComponent
onPress={() => setSelectedView(selectedViewNumber)}
style={[
{
position: "absolute",
backgroundColor: appContext.appTheme.card.backgroundColor,
borderRadius: 10,
padding: 8,
},
{ top: top },
left === true ? { left: space } : { right: space },
]}
>
<MyIcon
name={iconName}
size={30}
color={
selectedView === selectedViewNumber
? appContext.appTheme.colors.primary
: appContext.appTheme.icon
}
/>
</TouchComponent>
);
};
return (
<View
style={{
@ -51,60 +91,48 @@ export default function DeviceScreen() {
<View style={[styles.image, { backgroundColor: "#ddd" }]} />
)}
<IconButton
icon="lightbulb-on-outline"
iconColor={
selectedView === 0 ? iconButtonActiveColor : iconButtonNotActiveColor
}
style={[styles.iconButton, { top: topFirst, left: spaceToSide }]}
size={30}
onPress={() => setSelectedView(0)}
<MyButton
iconName={"lightbulb-on-outline"}
left
selectedViewNumber={0}
space={spaceToSide}
top={topFirst}
/>
<IconButton
icon="television-ambient-light"
iconColor={
selectedView === 1 ? iconButtonActiveColor : iconButtonNotActiveColor
}
style={[styles.iconButton, { top: topSecond, left: spaceToSide }]}
size={30}
onPress={() => setSelectedView(1)}
<MyButton
iconName={"television-ambient-light"}
left
selectedViewNumber={1}
space={spaceToSide}
top={topSecond}
/>
<IconButton
icon="axis-z-rotate-counterclockwise"
iconColor={
selectedView === 2 ? iconButtonActiveColor : iconButtonNotActiveColor
}
style={[styles.iconButton, { top: topThird, left: spaceToSide }]}
size={30}
onPress={() => setSelectedView(2)}
<MyButton
iconName={"axis-z-rotate-counterclockwise"}
left
selectedViewNumber={2}
space={spaceToSide}
top={topThird}
/>
<IconButton
icon="cog-outline"
iconColor={
selectedView === 3 ? iconButtonActiveColor : iconButtonNotActiveColor
}
style={[styles.iconButton, { top: topFirst, right: spaceToSide }]}
size={30}
onPress={() => setSelectedView(3)}
<MyButton
iconName={"cog-outline"}
left={false}
selectedViewNumber={3}
space={spaceToSide}
top={topFirst}
/>
<IconButton
icon="palette-outline"
iconColor={"#fff"}
style={[styles.iconButton, { top: topSecond, right: spaceToSide }]}
size={30}
onPress={() => {
console.log("Pressed light");
}}
<MyButton
iconName={"palette-outline"}
left={false}
selectedViewNumber={4}
space={spaceToSide}
top={topSecond}
/>
<IconButton
icon="rotate-3d-variant"
iconColor={"#fff"}
style={[styles.iconButton, { top: topThird, right: spaceToSide }]}
size={30}
onPress={() => {
console.log("Pressed dark");
}}
<MyButton
iconName={"rotate-3d-variant"}
left={false}
selectedViewNumber={5}
space={spaceToSide}
top={topThird}
/>
<ScrollView style={{ height: "100%" }}>
@ -129,9 +157,4 @@ const styles = StyleSheet.create({
width: "100%",
height: 250,
},
iconButton: {
position: "absolute",
backgroundColor: "#333333",
borderRadius: 10,
},
});

View File

@ -1,23 +1,30 @@
import { useContext, useEffect, useState } from "react";
import { StyleSheet, Text, View } from "react-native";
import { IconButton, TouchableRipple } from "react-native-paper";
import { useContext, useState } from "react";
import {
StyleSheet,
Text,
TouchableOpacity,
View,
TouchableHighlight,
} from "react-native";
import Animated, {
useAnimatedStyle,
useSharedValue,
} from "react-native-reanimated";
import { Icon, Incubator, Picker, Switch } from "react-native-ui-lib";
import ColorPicker, {
Swatches,
InputWidget,
HueCircular,
Panel1,
} from "reanimated-color-picker";
import { AppContext, GetData } from "../../utils";
import { AppContext } from "../../utils";
import Card from "../../Components/Card";
import MySwitch from "../../Components/Switch";
import MyIcon from "../../Components/Icon";
import PickerModal from "../../Components/PickerModal";
import { useTranslation } from "react-i18next";
import MySlider from "../../Components/Slider";
const dropdown = require("../../../assets/icons/chevronDown.png");
const options = [
const colorModePickerOptions = [
{ label: "Pulse", value: "pulse" },
{ label: "Random", value: "random" },
{ label: "Rainbow", value: "rainbow" },
@ -55,8 +62,7 @@ function ColorLayer({ layerNumber, sharedColor, selected, onPress }) {
});
return (
<TouchableRipple
borderless
<TouchableHighlight
style={[
{
width: 30,
@ -76,6 +82,7 @@ function ColorLayer({ layerNumber, sharedColor, selected, onPress }) {
height: "100%",
justifyContent: "center",
alignItems: "center",
borderRadius: 10,
},
backgroundColorStyle,
]}
@ -86,43 +93,19 @@ function ColorLayer({ layerNumber, sharedColor, selected, onPress }) {
{layerNumber}
</Animated.Text>
</Animated.View>
</TouchableRipple>
</TouchableHighlight>
);
}
/*
function ColorSwatch({ color, onPress }) {
return (
<TouchableRipple
borderless
style={{
width: 25,
height: 25,
borderRadius: 16,
marginLeft: 5,
marginTop: 5,
}}
onPress={onPress}
rippleColor="rgba(0, 0, 0, .32)"
>
<View
style={{
width: "100%",
height: "100%",
backgroundColor: color,
}}
/>
</TouchableRipple>
);
} */
export default function LightView() {
const appContext = useContext(AppContext);
const [pickerValue, setPickerValue] = useState("");
const { t } = useTranslation();
const [switchState, setSwitchState] = useState(false);
const [sliderValue, setSliderValue] = useState(0);
const [selectedGlasLayer, setSelectedGlasLayer] = useState(1);
const [colorSwatchesFavorites, setColorSwatchesFavorites] = useState([]);
const [modalDeviceColorModeVisible, setModalDeviceColorModeVisible] =
useState(false);
const [selectedDeviceColorMode, setSelectedDeviceColorMode] = useState("");
const selectedColorPickerColor = useSharedValue("#ddd");
const selectedColorLayer1 = useSharedValue(selectedColorPickerColor.value);
@ -151,52 +134,58 @@ export default function LightView() {
return (
<Card>
<Picker
label="Farbmodus"
placeholder="Pick a Language"
useWheelPicker
value={pickerValue}
onChange={(nativePickerValue) => setPickerValue(nativePickerValue)}
trailingAccessory={<Icon source={dropdown} />}
//containerStyle={{ marginTop: 20 }}
//renderPicker={() => {
//return (
//<View>
// <Text>Open Native Picker!</Text>
// </View>
// );
//}}
//topBarProps={{ doneLabel: "YES", cancelLabel: "NO" }}
<TouchableOpacity onPress={() => setModalDeviceColorModeVisible(true)}>
<View
style={{
flexDirection: "row",
alignItems: "center",
justifyContent: "space-between",
}}
>
{options.map((option) => (
<Picker.Item
key={option.value}
value={option.value}
label={option.label}
<View>
<Text style={{ color: appContext.appTheme.text }}>
{t("screens.device.light.pickerColorModeText")}
</Text>
<Text style={{ color: appContext.appTheme.colors.primary }}>
{selectedDeviceColorMode === ""
? t("screens.device.light.pickerColorModePlaceholder")
: colorModePickerOptions.find(
(item) => item.value === selectedDeviceColorMode
).label}
</Text>
</View>
<MyIcon
name="chevron-down"
size={24}
color={appContext.appTheme.icon}
/>
</View>
</TouchableOpacity>
<PickerModal
isOpen={modalDeviceColorModeVisible}
setIsOpen={setModalDeviceColorModeVisible}
items={colorModePickerOptions.map((item) => {
return {
label: item.label,
onPress: () => setSelectedDeviceColorMode(item.value),
selected: selectedDeviceColorMode === item.value,
};
})}
/>
))}
</Picker>
<View style={{ flexDirection: "row", alignItems: "center" }}>
<Switch value={switchState} onValueChange={(e) => setSwitchState(e)} />
<IconButton
icon="brightness-7"
iconColor={appContext.appTheme.icon}
<MySwitch
value={switchState}
onValueChange={(e) => setSwitchState(e)}
/>
<MyIcon
name={"brightness-7"}
color={appContext.appTheme.icon}
size={20}
/>
<View style={{ flex: 1 }}>
<Incubator.Slider
value={sliderValue}
step={1}
initialMinimumValue={0}
minimumValue={0}
maximumValue={100}
onValueChange={(v) => setSliderValue(v)}
containerStyle={{
flex: 1,
marginHorizontal: 8,
}}
/>
<MySlider />
</View>
</View>
@ -253,17 +242,25 @@ export default function LightView() {
/>
</View>
<IconButton
style={{ position: "absolute", top: 40, right: -5 }}
icon={"star-outline"}
size={20}
onPress={() => {
<TouchableOpacity
onPress={() =>
setColorSwatchesFavorites([
...colorSwatchesFavorites,
selectedColorPickerColor.value,
]);
])
}
style={{
position: "absolute",
top: 20,
right: 0,
}}
>
<MyIcon
name="star-outline"
color={appContext.appTheme.icon}
size={20}
/>
</TouchableOpacity>
<View style={{ marginLeft: 30, marginRight: 30 }}>
<HueCircular

View File

@ -1,31 +1,26 @@
import { Text, View } from "react-native";
import { View } from "react-native";
import Card from "../../Components/Card";
import { Incubator, Switch } from "react-native-ui-lib";
import { IconButton } from "react-native-paper";
import { useState } from "react";
import { useContext, useState } from "react";
import MySwitch from "../../Components/Switch";
import MySlider from "../../Components/Slider";
import { AppContext } from "../../utils";
import MyIcon from "../../Components/Icon";
export default function MotorView() {
const appContext = useContext(AppContext);
const [switchState, setSwitchState] = useState(false);
const [sliderValue, setSliderValue] = useState(0);
return (
<Card>
<View style={{ flexDirection: "row", alignItems: "center" }}>
<Switch value={switchState} onValueChange={(e) => setSwitchState(e)} />
<IconButton icon="fan" iconColor={"#fff"} size={20} />
<View style={{ flex: 1 }}>
<Incubator.Slider
value={sliderValue}
step={1}
initialMinimumValue={0}
minimumValue={0}
maximumValue={100}
onValueChange={(v) => setSliderValue(v)}
containerStyle={{
flex: 1,
marginHorizontal: 8,
}}
<MySwitch
value={switchState}
onValueChange={(e) => setSwitchState(e)}
/>
<MyIcon name="fan" color={appContext.appTheme.icon} size={20} />
<View style={{ flex: 1 }}>
<MySlider />
</View>
</View>
</Card>

View File

@ -1,10 +1,10 @@
import { Text, View } from "react-native";
import Card from "../../Components/Card";
import { Incubator, Switch } from "react-native-ui-lib";
import { useContext, useState } from "react";
import { AppContext, AppStyles } from "../../utils";
import { Divider } from "../../Components/Divider";
import { useTranslation } from "react-i18next";
import MySwitch from "../../Components/Switch";
export default function SettingsView() {
const appContext = useContext(AppContext);
@ -36,14 +36,24 @@ export default function SettingsView() {
}}
>
<View style={{ width: "80%" }}>
<Text style={[AppStyles.typography16, { color: "#fff" }]}>
<Text
style={[
AppStyles.typography16,
{ color: appContext.appTheme.text },
]}
>
{t("screens.device.settings.wifiStandByTitle")}
</Text>
<Text style={[AppStyles.typography14, { color: "#ddd" }]}>
<Text
style={[
AppStyles.typography14,
{ color: appContext.appTheme.textSecondary },
]}
>
{t("screens.device.settings.wifiStandByDescription")}
</Text>
</View>
<Switch
<MySwitch
value={switchState}
onValueChange={(e) => setSwitchState(e)}
/>
@ -55,29 +65,58 @@ export default function SettingsView() {
style={[
AppStyles.typography20,
{
color: "#fff",
color: appContext.appTheme.text,
marginBottom: 10,
},
]}
>
{t("screens.device.settings.deviceInformationTitle")}
</Text>
<Text style={([AppStyles.typography16], { color: "#fff" })}>
<Text
style={
([AppStyles.typography16], { color: appContext.appTheme.text })
}
>
{t("screens.device.settings.deviceModelTitle")}
</Text>
<Text style={([AppStyles.typography14], { color: "#ddd" })}>
<Text
style={
([AppStyles.typography14],
{ color: appContext.appTheme.textSecondary })
}
>
Shimmex Aurora
</Text>
<Divider />
<Text style={([AppStyles.typography16], { color: "#fff" })}>
<Text
style={
([AppStyles.typography16], { color: appContext.appTheme.text })
}
>
{t("screens.device.settings.deviceFirmwareVersionTitle")}
</Text>
<Text style={([AppStyles.typography14], { color: "#ddd" })}>1.0.1</Text>
<Divider />
<Text style={([AppStyles.typography16], { color: "#fff" })}>
{t("screens.device.settings.deviceLastUpdated")}
<Text
style={
([AppStyles.typography14],
{ color: appContext.appTheme.textSecondary })
}
>
1.0.1
</Text>
<Text style={([AppStyles.typography14], { color: "#ddd" })}>
<Divider />
<Text
style={
([AppStyles.typography16], { color: appContext.appTheme.text })
}
>
{t("screens.device.settings.deviceLastUpdatedTitle")}
</Text>
<Text
style={
([AppStyles.typography14],
{ color: appContext.appTheme.textSecondary })
}
>
11.07.2023 um 20:33 Uhr
</Text>
</Card>

View File

@ -1,11 +1,11 @@
import { useContext, useState } from "react";
import { Modal, Text, TouchableOpacity, View } from "react-native";
import { Picker, Switch } from "react-native-ui-lib";
import { Text, TouchableOpacity, View } from "react-native";
import Card from "../../Components/Card";
import { AppContext, AppStyles, Constants } from "../../utils";
import { Divider } from "../../Components/Divider";
import PickerModal from "../../Components/PickerModal";
import { useTranslation } from "react-i18next";
import MySwitch from "../../Components/Switch";
export default function SettingsScreen() {
const appContext = useContext(AppContext);
@ -115,7 +115,7 @@ export default function SettingsScreen() {
{t("screens.settings.expertModeDescription")}
</Text>
</View>
<Switch
<MySwitch
value={appContext.isUserExpertModeEnabled}
onValueChange={(e) => appContext.setIsUserExpertModeEnabled(e)}
/>
@ -133,7 +133,7 @@ export default function SettingsScreen() {
<Text style={{ color: appContext.appTheme.text }}>
Developer Mode
</Text>
<Switch
<MySwitch
value={appContext.isUserDeveloperModeEnabled}
onValueChange={(e) => appContext.setUserIsDeveloperModeEnabled(e)}
/>

View File

@ -54,8 +54,20 @@ const DarkAppTheme = {
activeBackgroundColor: "rgba(0, 0, 0, 0.1)",
},
},
divider: "#ddd",
divider: "#888",
icon: "#ddd",
switch: {
trackColorTrue: "#b2b3b3",
trackColorFalse: "#b2b3b3",
thumbColorTrue: "#e67e22",
thumbColorFalse: "#f4f3f4",
ios_backgroundColor: "#3e3e3e",
},
slider: {
minimumTrackTintColor: "#e67e22",
maximumTrackTintColor: "#fff",
thumbTintColor: "#e67e22",
},
};
const LightAppTheme = {
@ -80,6 +92,18 @@ const LightAppTheme = {
},
divider: "#ddd",
icon: "#000",
switch: {
trackColorTrue: "#b2b3b3",
trackColorFalse: "#b2b3b3",
thumbColorTrue: "#e67e22",
thumbColorFalse: "#f4f3f4",
ios_backgroundColor: "#3e3e3e",
},
slider: {
minimumTrackTintColor: "#e67e22",
maximumTrackTintColor: "#555",
thumbTintColor: "#e67e22",
},
};
export async function StoreData(key, value) {