├── .DS_Store ├── .expo ├── README.md ├── devices.json ├── prebuild │ └── cached-packages.json └── web │ └── cache │ └── production │ └── images │ ├── android-adaptive-foreground │ └── android-adaptive-foreground-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-transparent │ │ ├── icon_108.png │ │ ├── icon_162.png │ │ ├── icon_216.png │ │ ├── icon_324.png │ │ └── icon_432.png │ ├── android-standard-circle │ └── android-standard-circle-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-#ffffff │ │ ├── icon_108.png │ │ ├── icon_162.png │ │ ├── icon_216.png │ │ ├── icon_324.png │ │ └── icon_432.png │ ├── android-standard-square │ └── android-standard-square-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-#ffffff │ │ ├── icon_108.png │ │ ├── icon_162.png │ │ ├── icon_216.png │ │ ├── icon_324.png │ │ └── icon_432.png │ ├── iconsuniversal-icon │ └── iconsuniversal-icon-74c64047eb557b1341bba7a2831eedde9ddb705e6451a9ad9f5552bf558f13de-cover-#ffffff │ │ └── App-Icon-1024x1024@1x.png │ ├── splash-android │ └── splash-android-bc25a616b4e31cf7300cd97b9cbf8894e855e6373aa797d0badd7e211111c5e5-contain │ │ └── icon_undefined.png │ └── splash-ios │ └── splash-ios-bc25a616b4e31cf7300cd97b9cbf8894e855e6373aa797d0badd7e211111c5e5-contain │ └── icon_undefined.png ├── .gitignore ├── .prettierrc ├── App.jsx ├── README.md ├── android ├── .gitignore ├── app │ ├── build.gradle │ ├── debug.keystore │ ├── proguard-rules.pro │ └── src │ │ ├── debug │ │ ├── AndroidManifest.xml │ │ └── java │ │ │ └── test │ │ │ └── twiggers │ │ │ └── com │ │ │ └── ReactNativeFlipper.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── test │ │ │ │ └── twiggers │ │ │ │ └── com │ │ │ │ ├── MainActivity.java │ │ │ │ └── MainApplication.java │ │ └── res │ │ │ ├── drawable-hdpi │ │ │ └── splashscreen_image.png │ │ │ ├── drawable-mdpi │ │ │ └── splashscreen_image.png │ │ │ ├── drawable-xhdpi │ │ │ └── splashscreen_image.png │ │ │ ├── drawable-xxhdpi │ │ │ └── splashscreen_image.png │ │ │ ├── drawable-xxxhdpi │ │ │ └── splashscreen_image.png │ │ │ ├── drawable │ │ │ ├── rn_edit_text_material.xml │ │ │ └── splashscreen.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── values-night │ │ │ └── colors.xml │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── release │ │ └── java │ │ └── test │ │ └── twiggers │ │ └── com │ │ └── ReactNativeFlipper.java ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── app.json ├── assets ├── .DS_Store ├── adaptive-icon.png ├── expo.jpg ├── favicon.png ├── fonts │ ├── Montserrat-Bold.ttf │ └── Montserrat-Regular.ttf ├── icon.png ├── rn.webp ├── splash.png └── users │ ├── .DS_Store │ ├── user1.png │ ├── user2.png │ ├── user3.png │ ├── user4.png │ ├── user5.png │ ├── user6.png │ ├── user7.png │ ├── user8.png │ └── user9.png ├── babel.config.js ├── components ├── Header.jsx ├── NavigationContainer.jsx ├── Post.jsx ├── Story.jsx ├── Tabs.jsx └── ThemeWrapper.jsx ├── index.js ├── ios ├── .gitignore ├── .xcode.env ├── Podfile ├── Podfile.lock ├── Podfile.properties.json ├── ReactNativeThemeSwitcher.xcodeproj │ ├── project.pbxproj │ └── xcshareddata │ │ └── xcschemes │ │ └── ReactNativeThemeSwitcher.xcscheme ├── ReactNativeThemeSwitcher.xcworkspace │ └── contents.xcworkspacedata └── ReactNativeThemeSwitcher │ ├── AppDelegate.h │ ├── AppDelegate.mm │ ├── Images.xcassets │ ├── AppIcon.appiconset │ │ ├── App-Icon-1024x1024@1x.png │ │ └── Contents.json │ ├── Contents.json │ ├── SplashScreen.imageset │ │ ├── Contents.json │ │ └── image.png │ └── SplashScreenBackground.imageset │ │ ├── Contents.json │ │ └── image.png │ ├── Info.plist │ ├── ReactNativeThemeSwitcher-Bridging-Header.h │ ├── ReactNativeThemeSwitcher.entitlements │ ├── SplashScreen.storyboard │ ├── Supporting │ └── Expo.plist │ ├── main.m │ └── noop-file.swift ├── metro.config.js ├── package.json ├── store └── store.js ├── utils ├── dimensions.js ├── mmkv.js └── svgs.js └── yarn.lock /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/.DS_Store -------------------------------------------------------------------------------- /.expo/README.md: -------------------------------------------------------------------------------- 1 | > Why do I have a folder named ".expo" in my project? 2 | The ".expo" folder is created when an Expo project is started using "expo start" command. 3 | > What do the files contain? 4 | - "devices.json": contains information about devices that have recently opened this project. This is used to populate the "Development sessions" list in your development builds. 5 | - "settings.json": contains the server configuration that is used to serve the application manifest. 6 | > Should I commit the ".expo" folder? 7 | No, you should not share the ".expo" folder. It does not contain any information that is relevant for other developers working on the project, it is specific to your machine. 8 | Upon project creation, the ".expo" folder is already added to your ".gitignore" file. 9 | -------------------------------------------------------------------------------- /.expo/devices.json: -------------------------------------------------------------------------------- 1 | { 2 | "devices": [] 3 | } 4 | -------------------------------------------------------------------------------- /.expo/prebuild/cached-packages.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": "e71004cf97a0ca76a0e3d151d6035e69bab4e89b", 3 | "devDependencies": "22cea332cd706134262a920c3e22760d9c1d82da" 4 | } 5 | -------------------------------------------------------------------------------- /.expo/web/cache/production/images/android-adaptive-foreground/android-adaptive-foreground-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-transparent/icon_108.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/.expo/web/cache/production/images/android-adaptive-foreground/android-adaptive-foreground-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-transparent/icon_108.png -------------------------------------------------------------------------------- /.expo/web/cache/production/images/android-adaptive-foreground/android-adaptive-foreground-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-transparent/icon_162.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/.expo/web/cache/production/images/android-adaptive-foreground/android-adaptive-foreground-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-transparent/icon_162.png -------------------------------------------------------------------------------- /.expo/web/cache/production/images/android-adaptive-foreground/android-adaptive-foreground-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-transparent/icon_216.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/.expo/web/cache/production/images/android-adaptive-foreground/android-adaptive-foreground-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-transparent/icon_216.png -------------------------------------------------------------------------------- /.expo/web/cache/production/images/android-adaptive-foreground/android-adaptive-foreground-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-transparent/icon_324.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/.expo/web/cache/production/images/android-adaptive-foreground/android-adaptive-foreground-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-transparent/icon_324.png -------------------------------------------------------------------------------- /.expo/web/cache/production/images/android-adaptive-foreground/android-adaptive-foreground-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-transparent/icon_432.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/.expo/web/cache/production/images/android-adaptive-foreground/android-adaptive-foreground-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-transparent/icon_432.png -------------------------------------------------------------------------------- /.expo/web/cache/production/images/android-standard-circle/android-standard-circle-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-#ffffff/icon_108.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/.expo/web/cache/production/images/android-standard-circle/android-standard-circle-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-#ffffff/icon_108.png -------------------------------------------------------------------------------- /.expo/web/cache/production/images/android-standard-circle/android-standard-circle-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-#ffffff/icon_162.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/.expo/web/cache/production/images/android-standard-circle/android-standard-circle-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-#ffffff/icon_162.png -------------------------------------------------------------------------------- /.expo/web/cache/production/images/android-standard-circle/android-standard-circle-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-#ffffff/icon_216.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/.expo/web/cache/production/images/android-standard-circle/android-standard-circle-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-#ffffff/icon_216.png -------------------------------------------------------------------------------- /.expo/web/cache/production/images/android-standard-circle/android-standard-circle-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-#ffffff/icon_324.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/.expo/web/cache/production/images/android-standard-circle/android-standard-circle-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-#ffffff/icon_324.png -------------------------------------------------------------------------------- /.expo/web/cache/production/images/android-standard-circle/android-standard-circle-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-#ffffff/icon_432.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/.expo/web/cache/production/images/android-standard-circle/android-standard-circle-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-#ffffff/icon_432.png -------------------------------------------------------------------------------- /.expo/web/cache/production/images/android-standard-square/android-standard-square-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-#ffffff/icon_108.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/.expo/web/cache/production/images/android-standard-square/android-standard-square-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-#ffffff/icon_108.png -------------------------------------------------------------------------------- /.expo/web/cache/production/images/android-standard-square/android-standard-square-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-#ffffff/icon_162.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/.expo/web/cache/production/images/android-standard-square/android-standard-square-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-#ffffff/icon_162.png -------------------------------------------------------------------------------- /.expo/web/cache/production/images/android-standard-square/android-standard-square-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-#ffffff/icon_216.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/.expo/web/cache/production/images/android-standard-square/android-standard-square-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-#ffffff/icon_216.png -------------------------------------------------------------------------------- /.expo/web/cache/production/images/android-standard-square/android-standard-square-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-#ffffff/icon_324.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/.expo/web/cache/production/images/android-standard-square/android-standard-square-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-#ffffff/icon_324.png -------------------------------------------------------------------------------- /.expo/web/cache/production/images/android-standard-square/android-standard-square-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-#ffffff/icon_432.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/.expo/web/cache/production/images/android-standard-square/android-standard-square-5f4c0a732b6325bf4071d9124d2ae67e037cb24fcc9c482ef82bea742109a3b8-cover-#ffffff/icon_432.png -------------------------------------------------------------------------------- /.expo/web/cache/production/images/iconsuniversal-icon/iconsuniversal-icon-74c64047eb557b1341bba7a2831eedde9ddb705e6451a9ad9f5552bf558f13de-cover-#ffffff/App-Icon-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/.expo/web/cache/production/images/iconsuniversal-icon/iconsuniversal-icon-74c64047eb557b1341bba7a2831eedde9ddb705e6451a9ad9f5552bf558f13de-cover-#ffffff/App-Icon-1024x1024@1x.png -------------------------------------------------------------------------------- /.expo/web/cache/production/images/splash-android/splash-android-bc25a616b4e31cf7300cd97b9cbf8894e855e6373aa797d0badd7e211111c5e5-contain/icon_undefined.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/.expo/web/cache/production/images/splash-android/splash-android-bc25a616b4e31cf7300cd97b9cbf8894e855e6373aa797d0badd7e211111c5e5-contain/icon_undefined.png -------------------------------------------------------------------------------- /.expo/web/cache/production/images/splash-ios/splash-ios-bc25a616b4e31cf7300cd97b9cbf8894e855e6373aa797d0badd7e211111c5e5-contain/icon_undefined.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/.expo/web/cache/production/images/splash-ios/splash-ios-bc25a616b4e31cf7300cd97b9cbf8894e855e6373aa797d0badd7e211111c5e5-contain/icon_undefined.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | .pnpm-debug.log* 9 | 10 | # Diagnostic reports (https://nodejs.org/api/report.html) 11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 | 13 | # Runtime data 14 | pids 15 | *.pid 16 | *.seed 17 | *.pid.lock 18 | 19 | # Directory for instrumented libs generated by jscoverage/JSCover 20 | lib-cov 21 | 22 | # Coverage directory used by tools like istanbul 23 | coverage 24 | *.lcov 25 | 26 | # nyc test coverage 27 | .nyc_output 28 | 29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 | .grunt 31 | 32 | # Bower dependency directory (https://bower.io/) 33 | bower_components 34 | 35 | # node-waf configuration 36 | .lock-wscript 37 | 38 | # Compiled binary addons (https://nodejs.org/api/addons.html) 39 | build/Release 40 | 41 | # Dependency directories 42 | node_modules/ 43 | jspm_packages/ 44 | 45 | # Snowpack dependency directory (https://snowpack.dev/) 46 | web_modules/ 47 | 48 | # TypeScript cache 49 | *.tsbuildinfo 50 | 51 | # Optional npm cache directory 52 | .npm 53 | 54 | # Optional eslint cache 55 | .eslintcache 56 | 57 | # Optional stylelint cache 58 | .stylelintcache 59 | 60 | # Microbundle cache 61 | .rpt2_cache/ 62 | .rts2_cache_cjs/ 63 | .rts2_cache_es/ 64 | .rts2_cache_umd/ 65 | 66 | # Optional REPL history 67 | .node_repl_history 68 | 69 | # Output of 'npm pack' 70 | *.tgz 71 | 72 | # Yarn Integrity file 73 | .yarn-integrity 74 | 75 | # dotenv environment variable files 76 | .env 77 | .env.development.local 78 | .env.test.local 79 | .env.production.local 80 | .env.local 81 | 82 | # parcel-bundler cache (https://parceljs.org/) 83 | .cache 84 | .parcel-cache 85 | 86 | # Next.js build output 87 | .next 88 | out 89 | 90 | # Nuxt.js build / generate output 91 | .nuxt 92 | dist 93 | 94 | # Gatsby files 95 | .cache/ 96 | # Comment in the public line in if your project uses Gatsby and not Next.js 97 | # https://nextjs.org/blog/next-9-1#public-directory-support 98 | # public 99 | 100 | # vuepress build output 101 | .vuepress/dist 102 | 103 | # vuepress v2.x temp and cache directory 104 | .temp 105 | .cache 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "jsxSingleQuote": true, 4 | "useTabs": false, 5 | "printWidth": 80, 6 | "tabWidth": 1, 7 | "bracketSameLine": true, 8 | "trailingComma": "es5" 9 | } 10 | -------------------------------------------------------------------------------- /App.jsx: -------------------------------------------------------------------------------- 1 | import { useFonts } from 'expo-font'; 2 | import { useSnapshot } from 'valtio'; 3 | import React, { useEffect } from 'react'; 4 | import { Platform, StatusBar } from 'react-native'; 5 | 6 | import { store } from './store/store'; 7 | import NavigationContainer from './components/NavigationContainer'; 8 | import { isDarkMode, storage } from './utils/mmkv'; 9 | import ThemeWrapper from './components/ThemeWrapper'; 10 | 11 | if (Platform.OS === 'android') { 12 | StatusBar.setTranslucent(true); 13 | StatusBar.setBackgroundColor('transparent'); 14 | } 15 | 16 | const App = () => { 17 | const [fontsLoaded] = useFonts({ 18 | MontserratRegular: require('./assets/fonts/Montserrat-Regular.ttf'), 19 | MontserratBold: require('./assets/fonts/Montserrat-Bold.ttf'), 20 | }); 21 | 22 | const { mode, isAnimating } = useSnapshot(store); 23 | 24 | const onToggle = () => { 25 | store.isAnimating = !store.isAnimating; 26 | storage.set('isDarkMode', !isDarkMode()); 27 | }; 28 | 29 | useEffect(() => { 30 | if (isDarkMode()) { 31 | store.mode = 'dark'; 32 | } 33 | }, []); 34 | 35 | if (fontsLoaded) { 36 | return ( 37 | 38 | 43 | 44 | ); 45 | } 46 | 47 | return null; 48 | }; 49 | 50 | export default App; 51 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Here's the result 2 | 3 | https://github.com/4TWIGGERS/React-Native-Theme-Switcher/assets/43757639/516a6bb0-eb61-4018-8c54-36b0835251ce 4 | 5 | -------------------------------------------------------------------------------- /android/.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Android/IntelliJ 6 | # 7 | build/ 8 | .idea 9 | .gradle 10 | local.properties 11 | *.iml 12 | *.hprof 13 | 14 | # Bundle artifacts 15 | *.jsbundle 16 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: "com.android.application" 2 | apply plugin: "com.facebook.react" 3 | 4 | def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath() 5 | 6 | /** 7 | * This is the configuration block to customize your React Native Android app. 8 | * By default you don't need to apply any configuration, just uncomment the lines you need. 9 | */ 10 | react { 11 | entryFile = file(["node", "-e", "require('expo/scripts/resolveAppEntry')", projectRoot, "android", "absolute"].execute(null, rootDir).text.trim()) 12 | reactNativeDir = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile() 13 | hermesCommand = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/sdks/hermesc/%OS-BIN%/hermesc" 14 | codegenDir = new File(["node", "--print", "require.resolve('@react-native/codegen/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile() 15 | 16 | // Use Expo CLI to bundle the app, this ensures the Metro config 17 | // works correctly with Expo projects. 18 | cliFile = new File(["node", "--print", "require.resolve('@expo/cli')"].execute(null, rootDir).text.trim()) 19 | bundleCommand = "export:embed" 20 | 21 | /* Folders */ 22 | // The root of your project, i.e. where "package.json" lives. Default is '..' 23 | // root = file("../") 24 | // The folder where the react-native NPM package is. Default is ../node_modules/react-native 25 | // reactNativeDir = file("../node_modules/react-native") 26 | // The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen 27 | // codegenDir = file("../node_modules/@react-native/codegen") 28 | 29 | /* Variants */ 30 | // The list of variants to that are debuggable. For those we're going to 31 | // skip the bundling of the JS bundle and the assets. By default is just 'debug'. 32 | // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. 33 | // debuggableVariants = ["liteDebug", "prodDebug"] 34 | 35 | /* Bundling */ 36 | // A list containing the node command and its flags. Default is just 'node'. 37 | // nodeExecutableAndArgs = ["node"] 38 | 39 | // 40 | // The path to the CLI configuration file. Default is empty. 41 | // bundleConfig = file(../rn-cli.config.js) 42 | // 43 | // The name of the generated asset file containing your JS bundle 44 | // bundleAssetName = "MyApplication.android.bundle" 45 | // 46 | // The entry file for bundle generation. Default is 'index.android.js' or 'index.js' 47 | // entryFile = file("../js/MyApplication.android.js") 48 | // 49 | // A list of extra flags to pass to the 'bundle' commands. 50 | // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle 51 | // extraPackagerArgs = [] 52 | 53 | /* Hermes Commands */ 54 | // The hermes compiler command to run. By default it is 'hermesc' 55 | // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc" 56 | // 57 | // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" 58 | // hermesFlags = ["-O", "-output-source-map"] 59 | } 60 | 61 | /** 62 | * Set this to true to Run Proguard on Release builds to minify the Java bytecode. 63 | */ 64 | def enableProguardInReleaseBuilds = (findProperty('android.enableProguardInReleaseBuilds') ?: false).toBoolean() 65 | 66 | /** 67 | * The preferred build flavor of JavaScriptCore (JSC) 68 | * 69 | * For example, to use the international variant, you can use: 70 | * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` 71 | * 72 | * The international variant includes ICU i18n library and necessary data 73 | * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that 74 | * give correct results when using with locales other than en-US. Note that 75 | * this variant is about 6MiB larger per architecture than default. 76 | */ 77 | def jscFlavor = 'org.webkit:android-jsc:+' 78 | 79 | android { 80 | ndkVersion rootProject.ext.ndkVersion 81 | 82 | compileSdkVersion rootProject.ext.compileSdkVersion 83 | 84 | namespace 'test.twiggers.com' 85 | defaultConfig { 86 | applicationId 'test.twiggers.com' 87 | minSdkVersion rootProject.ext.minSdkVersion 88 | targetSdkVersion rootProject.ext.targetSdkVersion 89 | versionCode 1 90 | versionName "1.0.0" 91 | 92 | buildConfigField("boolean", "REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS", (findProperty("reactNative.unstable_useRuntimeSchedulerAlways") ?: true).toString()) 93 | } 94 | signingConfigs { 95 | debug { 96 | storeFile file('debug.keystore') 97 | storePassword 'android' 98 | keyAlias 'androiddebugkey' 99 | keyPassword 'android' 100 | } 101 | } 102 | buildTypes { 103 | debug { 104 | signingConfig signingConfigs.debug 105 | } 106 | release { 107 | // Caution! In production, you need to generate your own keystore file. 108 | // see https://reactnative.dev/docs/signed-apk-android. 109 | signingConfig signingConfigs.debug 110 | shrinkResources (findProperty('android.enableShrinkResourcesInReleaseBuilds')?.toBoolean() ?: false) 111 | minifyEnabled enableProguardInReleaseBuilds 112 | proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" 113 | } 114 | } 115 | } 116 | 117 | // Apply static values from `gradle.properties` to the `android.packagingOptions` 118 | // Accepts values in comma delimited lists, example: 119 | // android.packagingOptions.pickFirsts=/LICENSE,**/picasa.ini 120 | ["pickFirsts", "excludes", "merges", "doNotStrip"].each { prop -> 121 | // Split option: 'foo,bar' -> ['foo', 'bar'] 122 | def options = (findProperty("android.packagingOptions.$prop") ?: "").split(","); 123 | // Trim all elements in place. 124 | for (i in 0.. 0) { 129 | println "android.packagingOptions.$prop += $options ($options.length)" 130 | // Ex: android.packagingOptions.pickFirsts += '**/SCCS/**' 131 | options.each { 132 | android.packagingOptions[prop] += it 133 | } 134 | } 135 | } 136 | 137 | dependencies { 138 | // The version of react-native is set by the React Native Gradle Plugin 139 | implementation("com.facebook.react:react-android") 140 | 141 | def isGifEnabled = (findProperty('expo.gif.enabled') ?: "") == "true"; 142 | def isWebpEnabled = (findProperty('expo.webp.enabled') ?: "") == "true"; 143 | def isWebpAnimatedEnabled = (findProperty('expo.webp.animated') ?: "") == "true"; 144 | def frescoVersion = rootProject.ext.frescoVersion 145 | 146 | // If your app supports Android versions before Ice Cream Sandwich (API level 14) 147 | if (isGifEnabled || isWebpEnabled) { 148 | implementation("com.facebook.fresco:fresco:${frescoVersion}") 149 | implementation("com.facebook.fresco:imagepipeline-okhttp3:${frescoVersion}") 150 | } 151 | 152 | if (isGifEnabled) { 153 | // For animated gif support 154 | implementation("com.facebook.fresco:animated-gif:${frescoVersion}") 155 | } 156 | 157 | if (isWebpEnabled) { 158 | // For webp support 159 | implementation("com.facebook.fresco:webpsupport:${frescoVersion}") 160 | if (isWebpAnimatedEnabled) { 161 | // Animated webp support 162 | implementation("com.facebook.fresco:animated-webp:${frescoVersion}") 163 | } 164 | } 165 | 166 | debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") 167 | debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { 168 | exclude group:'com.squareup.okhttp3', module:'okhttp' 169 | } 170 | debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") 171 | 172 | if (hermesEnabled.toBoolean()) { 173 | implementation("com.facebook.react:hermes-android") 174 | } else { 175 | implementation jscFlavor 176 | } 177 | } 178 | 179 | apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json')"].execute(null, rootDir).text.trim(), "../native_modules.gradle"); 180 | applyNativeModulesAppBuildGradle(project) 181 | -------------------------------------------------------------------------------- /android/app/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/android/app/debug.keystore -------------------------------------------------------------------------------- /android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # react-native-reanimated 11 | -keep class com.swmansion.reanimated.** { *; } 12 | -keep class com.facebook.react.turbomodule.** { *; } 13 | 14 | # Add any project specific keep options here: 15 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/debug/java/test/twiggers/com/ReactNativeFlipper.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | *

This source code is licensed under the MIT license found in the LICENSE file in the root 5 | * directory of this source tree. 6 | */ 7 | package test.twiggers.com; 8 | 9 | import android.content.Context; 10 | import com.facebook.flipper.android.AndroidFlipperClient; 11 | import com.facebook.flipper.android.utils.FlipperUtils; 12 | import com.facebook.flipper.core.FlipperClient; 13 | import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin; 14 | import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin; 15 | import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin; 16 | import com.facebook.flipper.plugins.inspector.DescriptorMapping; 17 | import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin; 18 | import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor; 19 | import com.facebook.flipper.plugins.network.NetworkFlipperPlugin; 20 | import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin; 21 | import com.facebook.react.ReactInstanceEventListener; 22 | import com.facebook.react.ReactInstanceManager; 23 | import com.facebook.react.bridge.ReactContext; 24 | import com.facebook.react.modules.network.NetworkingModule; 25 | import okhttp3.OkHttpClient; 26 | 27 | /** 28 | * Class responsible of loading Flipper inside your React Native application. This is the debug 29 | * flavor of it. Here you can add your own plugins and customize the Flipper setup. 30 | */ 31 | public class ReactNativeFlipper { 32 | public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { 33 | if (FlipperUtils.shouldEnableFlipper(context)) { 34 | final FlipperClient client = AndroidFlipperClient.getInstance(context); 35 | 36 | client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())); 37 | client.addPlugin(new DatabasesFlipperPlugin(context)); 38 | client.addPlugin(new SharedPreferencesFlipperPlugin(context)); 39 | client.addPlugin(CrashReporterPlugin.getInstance()); 40 | 41 | NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin(); 42 | NetworkingModule.setCustomClientBuilder( 43 | new NetworkingModule.CustomClientBuilder() { 44 | @Override 45 | public void apply(OkHttpClient.Builder builder) { 46 | builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin)); 47 | } 48 | }); 49 | client.addPlugin(networkFlipperPlugin); 50 | client.start(); 51 | 52 | // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized 53 | // Hence we run if after all native modules have been initialized 54 | ReactContext reactContext = reactInstanceManager.getCurrentReactContext(); 55 | if (reactContext == null) { 56 | reactInstanceManager.addReactInstanceEventListener( 57 | new ReactInstanceEventListener() { 58 | @Override 59 | public void onReactContextInitialized(ReactContext reactContext) { 60 | reactInstanceManager.removeReactInstanceEventListener(this); 61 | reactContext.runOnNativeModulesQueueThread( 62 | new Runnable() { 63 | @Override 64 | public void run() { 65 | client.addPlugin(new FrescoFlipperPlugin()); 66 | } 67 | }); 68 | } 69 | }); 70 | } else { 71 | client.addPlugin(new FrescoFlipperPlugin()); 72 | } 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /android/app/src/main/java/test/twiggers/com/MainActivity.java: -------------------------------------------------------------------------------- 1 | package test.twiggers.com; 2 | 3 | import android.os.Build; 4 | import android.os.Bundle; 5 | 6 | import com.facebook.react.ReactActivity; 7 | import com.facebook.react.ReactActivityDelegate; 8 | import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; 9 | import com.facebook.react.defaults.DefaultReactActivityDelegate; 10 | 11 | import expo.modules.ReactActivityDelegateWrapper; 12 | 13 | public class MainActivity extends ReactActivity { 14 | @Override 15 | protected void onCreate(Bundle savedInstanceState) { 16 | // Set the theme to AppTheme BEFORE onCreate to support 17 | // coloring the background, status bar, and navigation bar. 18 | // This is required for expo-splash-screen. 19 | setTheme(R.style.AppTheme); 20 | super.onCreate(null); 21 | } 22 | 23 | /** 24 | * Returns the name of the main component registered from JavaScript. 25 | * This is used to schedule rendering of the component. 26 | */ 27 | @Override 28 | protected String getMainComponentName() { 29 | return "main"; 30 | } 31 | 32 | /** 33 | * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link 34 | * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React 35 | * (aka React 18) with two boolean flags. 36 | */ 37 | @Override 38 | protected ReactActivityDelegate createReactActivityDelegate() { 39 | return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, new DefaultReactActivityDelegate( 40 | this, 41 | getMainComponentName(), 42 | // If you opted-in for the New Architecture, we enable the Fabric Renderer. 43 | DefaultNewArchitectureEntryPoint.getFabricEnabled())); 44 | } 45 | 46 | /** 47 | * Align the back button behavior with Android S 48 | * where moving root activities to background instead of finishing activities. 49 | * @see onBackPressed 50 | */ 51 | @Override 52 | public void invokeDefaultOnBackPressed() { 53 | if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) { 54 | if (!moveTaskToBack(false)) { 55 | // For non-root activities, use the default implementation to finish them. 56 | super.invokeDefaultOnBackPressed(); 57 | } 58 | return; 59 | } 60 | 61 | // Use the default back button implementation on Android S 62 | // because it's doing more than {@link Activity#moveTaskToBack} in fact. 63 | super.invokeDefaultOnBackPressed(); 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /android/app/src/main/java/test/twiggers/com/MainApplication.java: -------------------------------------------------------------------------------- 1 | package test.twiggers.com; 2 | 3 | import android.app.Application; 4 | import android.content.res.Configuration; 5 | import androidx.annotation.NonNull; 6 | 7 | import com.facebook.react.PackageList; 8 | import com.facebook.react.ReactApplication; 9 | import com.facebook.react.ReactNativeHost; 10 | import com.facebook.react.ReactPackage; 11 | import com.facebook.react.config.ReactFeatureFlags; 12 | import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; 13 | import com.facebook.react.defaults.DefaultReactNativeHost; 14 | import com.facebook.soloader.SoLoader; 15 | 16 | import expo.modules.ApplicationLifecycleDispatcher; 17 | import expo.modules.ReactNativeHostWrapper; 18 | 19 | import java.util.List; 20 | 21 | public class MainApplication extends Application implements ReactApplication { 22 | 23 | private final ReactNativeHost mReactNativeHost = 24 | new ReactNativeHostWrapper(this, new DefaultReactNativeHost(this) { 25 | @Override 26 | public boolean getUseDeveloperSupport() { 27 | return BuildConfig.DEBUG; 28 | } 29 | 30 | @Override 31 | protected List getPackages() { 32 | @SuppressWarnings("UnnecessaryLocalVariable") 33 | List packages = new PackageList(this).getPackages(); 34 | // Packages that cannot be autolinked yet can be added manually here, for example: 35 | // packages.add(new MyReactNativePackage()); 36 | return packages; 37 | } 38 | 39 | @Override 40 | protected String getJSMainModuleName() { 41 | return ".expo/.virtual-metro-entry"; 42 | } 43 | 44 | @Override 45 | protected boolean isNewArchEnabled() { 46 | return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; 47 | } 48 | 49 | @Override 50 | protected Boolean isHermesEnabled() { 51 | return BuildConfig.IS_HERMES_ENABLED; 52 | } 53 | }); 54 | 55 | @Override 56 | public ReactNativeHost getReactNativeHost() { 57 | return mReactNativeHost; 58 | } 59 | 60 | @Override 61 | public void onCreate() { 62 | super.onCreate(); 63 | SoLoader.init(this, /* native exopackage */ false); 64 | if (!BuildConfig.REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS) { 65 | ReactFeatureFlags.unstable_useRuntimeSchedulerAlways = false; 66 | } 67 | if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { 68 | // If you opted-in for the New Architecture, we load the native entry point for this app. 69 | DefaultNewArchitectureEntryPoint.load(); 70 | } 71 | ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); 72 | ApplicationLifecycleDispatcher.onApplicationCreate(this); 73 | } 74 | 75 | @Override 76 | public void onConfigurationChanged(@NonNull Configuration newConfig) { 77 | super.onConfigurationChanged(newConfig); 78 | ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig); 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-hdpi/splashscreen_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/android/app/src/main/res/drawable-hdpi/splashscreen_image.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/splashscreen_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/android/app/src/main/res/drawable-mdpi/splashscreen_image.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xhdpi/splashscreen_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/android/app/src/main/res/drawable-xhdpi/splashscreen_image.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xxhdpi/splashscreen_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/android/app/src/main/res/drawable-xxhdpi/splashscreen_image.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xxxhdpi/splashscreen_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/android/app/src/main/res/drawable-xxxhdpi/splashscreen_image.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/rn_edit_text_material.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 21 | 22 | 23 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/splashscreen.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/values-night/colors.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | #ffffff 3 | #ffffff 4 | #023c69 5 | #ffffff 6 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | React-Native-Theme-Switcher 3 | contain 4 | false 5 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 14 | 17 | -------------------------------------------------------------------------------- /android/app/src/release/java/test/twiggers/com/ReactNativeFlipper.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | *

This source code is licensed under the MIT license found in the LICENSE file in the root 5 | * directory of this source tree. 6 | */ 7 | package test.twiggers.com; 8 | 9 | import android.content.Context; 10 | import com.facebook.react.ReactInstanceManager; 11 | 12 | /** 13 | * Class responsible of loading Flipper inside your React Native application. This is the release 14 | * flavor of it so it's empty as we don't want to load Flipper. 15 | */ 16 | public class ReactNativeFlipper { 17 | public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { 18 | // Do nothing as we don't want to initialize Flipper on Release. 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | ext { 5 | buildToolsVersion = findProperty('android.buildToolsVersion') ?: '33.0.0' 6 | minSdkVersion = Integer.parseInt(findProperty('android.minSdkVersion') ?: '21') 7 | compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '33') 8 | targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '33') 9 | kotlinVersion = findProperty('android.kotlinVersion') ?: '1.8.10' 10 | frescoVersion = findProperty('expo.frescoVersion') ?: '2.5.0' 11 | 12 | // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP. 13 | ndkVersion = "23.1.7779620" 14 | } 15 | repositories { 16 | google() 17 | mavenCentral() 18 | } 19 | dependencies { 20 | classpath('com.android.tools.build:gradle:7.4.2') 21 | classpath('com.facebook.react:react-native-gradle-plugin') 22 | } 23 | } 24 | 25 | allprojects { 26 | repositories { 27 | maven { 28 | // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm 29 | url(new File(['node', '--print', "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim(), '../android')) 30 | } 31 | maven { 32 | // Android JSC is installed from npm 33 | url(new File(['node', '--print', "require.resolve('jsc-android/package.json')"].execute(null, rootDir).text.trim(), '../dist')) 34 | } 35 | 36 | google() 37 | mavenCentral() 38 | maven { url 'https://www.jitpack.io' } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx512m -XX:MaxMetaspaceSize=256m 13 | org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true 19 | 20 | # AndroidX package structure to make it clearer which packages are bundled with the 21 | # Android operating system, and which are packaged with your app's APK 22 | # https://developer.android.com/topic/libraries/support-library/androidx-rn 23 | android.useAndroidX=true 24 | 25 | # Automatically convert third-party libraries to use AndroidX 26 | android.enableJetifier=true 27 | 28 | # Version of flipper SDK to use with React Native 29 | FLIPPER_VERSION=0.182.0 30 | 31 | # Use this property to specify which architecture you want to build. 32 | # You can also override it from the CLI using 33 | # ./gradlew -PreactNativeArchitectures=x86_64 34 | reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 35 | 36 | # Use this property to enable support to the new architecture. 37 | # This will allow you to use TurboModules and the Fabric render in 38 | # your application. You should enable this flag either if you want 39 | # to write custom TurboModules/Fabric components OR use libraries that 40 | # are providing them. 41 | newArchEnabled=false 42 | 43 | # Use this property to enable or disable the Hermes JS engine. 44 | # If set to false, you will be using JSC instead. 45 | hermesEnabled=true 46 | 47 | # Enable GIF support in React Native images (~200 B increase) 48 | expo.gif.enabled=true 49 | # Enable webp support in React Native images (~85 KB increase) 50 | expo.webp.enabled=true 51 | # Enable animated webp support (~3.4 MB increase) 52 | # Disabled by default because iOS doesn't support animated webp 53 | expo.webp.animated=false 54 | 55 | # Enable network inspector 56 | EX_DEV_CLIENT_NETWORK_INSPECTOR=true 57 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-all.zip 4 | networkTimeout=10000 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | -------------------------------------------------------------------------------- /android/gradlew: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # 4 | # Copyright © 2015-2021 the original authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # https://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | ############################################################################## 20 | # 21 | # Gradle start up script for POSIX generated by Gradle. 22 | # 23 | # Important for running: 24 | # 25 | # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is 26 | # noncompliant, but you have some other compliant shell such as ksh or 27 | # bash, then to run this script, type that shell name before the whole 28 | # command line, like: 29 | # 30 | # ksh Gradle 31 | # 32 | # Busybox and similar reduced shells will NOT work, because this script 33 | # requires all of these POSIX shell features: 34 | # * functions; 35 | # * expansions «$var», «${var}», «${var:-default}», «${var+SET}», 36 | # «${var#prefix}», «${var%suffix}», and «$( cmd )»; 37 | # * compound commands having a testable exit status, especially «case»; 38 | # * various built-in commands including «command», «set», and «ulimit». 39 | # 40 | # Important for patching: 41 | # 42 | # (2) This script targets any POSIX shell, so it avoids extensions provided 43 | # by Bash, Ksh, etc; in particular arrays are avoided. 44 | # 45 | # The "traditional" practice of packing multiple parameters into a 46 | # space-separated string is a well documented source of bugs and security 47 | # problems, so this is (mostly) avoided, by progressively accumulating 48 | # options in "$@", and eventually passing that to Java. 49 | # 50 | # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, 51 | # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; 52 | # see the in-line comments for details. 53 | # 54 | # There are tweaks for specific operating systems such as AIX, CygWin, 55 | # Darwin, MinGW, and NonStop. 56 | # 57 | # (3) This script is generated from the Groovy template 58 | # https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt 59 | # within the Gradle project. 60 | # 61 | # You can find Gradle at https://github.com/gradle/gradle/. 62 | # 63 | ############################################################################## 64 | 65 | # Attempt to set APP_HOME 66 | 67 | # Resolve links: $0 may be a link 68 | app_path=$0 69 | 70 | # Need this for daisy-chained symlinks. 71 | while 72 | APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path 73 | [ -h "$app_path" ] 74 | do 75 | ls=$( ls -ld "$app_path" ) 76 | link=${ls#*' -> '} 77 | case $link in #( 78 | /*) app_path=$link ;; #( 79 | *) app_path=$APP_HOME$link ;; 80 | esac 81 | done 82 | 83 | APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit 84 | 85 | APP_NAME="Gradle" 86 | APP_BASE_NAME=${0##*/} 87 | 88 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 89 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 90 | 91 | # Use the maximum available, or set MAX_FD != -1 to use that value. 92 | MAX_FD=maximum 93 | 94 | warn () { 95 | echo "$*" 96 | } >&2 97 | 98 | die () { 99 | echo 100 | echo "$*" 101 | echo 102 | exit 1 103 | } >&2 104 | 105 | # OS specific support (must be 'true' or 'false'). 106 | cygwin=false 107 | msys=false 108 | darwin=false 109 | nonstop=false 110 | case "$( uname )" in #( 111 | CYGWIN* ) cygwin=true ;; #( 112 | Darwin* ) darwin=true ;; #( 113 | MSYS* | MINGW* ) msys=true ;; #( 114 | NONSTOP* ) nonstop=true ;; 115 | esac 116 | 117 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 118 | 119 | 120 | # Determine the Java command to use to start the JVM. 121 | if [ -n "$JAVA_HOME" ] ; then 122 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 123 | # IBM's JDK on AIX uses strange locations for the executables 124 | JAVACMD=$JAVA_HOME/jre/sh/java 125 | else 126 | JAVACMD=$JAVA_HOME/bin/java 127 | fi 128 | if [ ! -x "$JAVACMD" ] ; then 129 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 130 | 131 | Please set the JAVA_HOME variable in your environment to match the 132 | location of your Java installation." 133 | fi 134 | else 135 | JAVACMD=java 136 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 137 | 138 | Please set the JAVA_HOME variable in your environment to match the 139 | location of your Java installation." 140 | fi 141 | 142 | # Increase the maximum file descriptors if we can. 143 | if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then 144 | case $MAX_FD in #( 145 | max*) 146 | MAX_FD=$( ulimit -H -n ) || 147 | warn "Could not query maximum file descriptor limit" 148 | esac 149 | case $MAX_FD in #( 150 | '' | soft) :;; #( 151 | *) 152 | ulimit -n "$MAX_FD" || 153 | warn "Could not set maximum file descriptor limit to $MAX_FD" 154 | esac 155 | fi 156 | 157 | # Collect all arguments for the java command, stacking in reverse order: 158 | # * args from the command line 159 | # * the main class name 160 | # * -classpath 161 | # * -D...appname settings 162 | # * --module-path (only if needed) 163 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. 164 | 165 | # For Cygwin or MSYS, switch paths to Windows format before running java 166 | if "$cygwin" || "$msys" ; then 167 | APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) 168 | CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) 169 | 170 | JAVACMD=$( cygpath --unix "$JAVACMD" ) 171 | 172 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 173 | for arg do 174 | if 175 | case $arg in #( 176 | -*) false ;; # don't mess with options #( 177 | /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath 178 | [ -e "$t" ] ;; #( 179 | *) false ;; 180 | esac 181 | then 182 | arg=$( cygpath --path --ignore --mixed "$arg" ) 183 | fi 184 | # Roll the args list around exactly as many times as the number of 185 | # args, so each arg winds up back in the position where it started, but 186 | # possibly modified. 187 | # 188 | # NB: a `for` loop captures its iteration list before it begins, so 189 | # changing the positional parameters here affects neither the number of 190 | # iterations, nor the values presented in `arg`. 191 | shift # remove old arg 192 | set -- "$@" "$arg" # push replacement arg 193 | done 194 | fi 195 | 196 | # Collect all arguments for the java command; 197 | # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of 198 | # shell script including quotes and variable substitutions, so put them in 199 | # double quotes to make sure that they get re-expanded; and 200 | # * put everything else in single quotes, so that it's not re-expanded. 201 | 202 | set -- \ 203 | "-Dorg.gradle.appname=$APP_BASE_NAME" \ 204 | -classpath "$CLASSPATH" \ 205 | org.gradle.wrapper.GradleWrapperMain \ 206 | "$@" 207 | 208 | # Stop when "xargs" is not available. 209 | if ! command -v xargs >/dev/null 2>&1 210 | then 211 | die "xargs is not available" 212 | fi 213 | 214 | # Use "xargs" to parse quoted args. 215 | # 216 | # With -n1 it outputs one arg per line, with the quotes and backslashes removed. 217 | # 218 | # In Bash we could simply go: 219 | # 220 | # readarray ARGS < <( xargs -n1 <<<"$var" ) && 221 | # set -- "${ARGS[@]}" "$@" 222 | # 223 | # but POSIX shell has neither arrays nor command substitution, so instead we 224 | # post-process each arg (as a line of input to sed) to backslash-escape any 225 | # character that might be a shell metacharacter, then use eval to reverse 226 | # that process (while maintaining the separation between arguments), and wrap 227 | # the whole thing up as a single "set" statement. 228 | # 229 | # This will of course break if any of these variables contains a newline or 230 | # an unmatched quote. 231 | # 232 | 233 | eval "set -- $( 234 | printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | 235 | xargs -n1 | 236 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | 237 | tr '\n' ' ' 238 | )" '"$@"' 239 | 240 | exec "$JAVACMD" "$@" 241 | -------------------------------------------------------------------------------- /android/gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%"=="" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%"=="" set DIRNAME=. 29 | set APP_BASE_NAME=%~n0 30 | set APP_HOME=%DIRNAME% 31 | 32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 34 | 35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 37 | 38 | @rem Find java.exe 39 | if defined JAVA_HOME goto findJavaFromJavaHome 40 | 41 | set JAVA_EXE=java.exe 42 | %JAVA_EXE% -version >NUL 2>&1 43 | if %ERRORLEVEL% equ 0 goto execute 44 | 45 | echo. 46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 47 | echo. 48 | echo Please set the JAVA_HOME variable in your environment to match the 49 | echo location of your Java installation. 50 | 51 | goto fail 52 | 53 | :findJavaFromJavaHome 54 | set JAVA_HOME=%JAVA_HOME:"=% 55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 56 | 57 | if exist "%JAVA_EXE%" goto execute 58 | 59 | echo. 60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 61 | echo. 62 | echo Please set the JAVA_HOME variable in your environment to match the 63 | echo location of your Java installation. 64 | 65 | goto fail 66 | 67 | :execute 68 | @rem Setup the command line 69 | 70 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 71 | 72 | 73 | @rem Execute Gradle 74 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 75 | 76 | :end 77 | @rem End local scope for the variables with windows NT shell 78 | if %ERRORLEVEL% equ 0 goto mainEnd 79 | 80 | :fail 81 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 82 | rem the _cmd.exe /c_ return code! 83 | set EXIT_CODE=%ERRORLEVEL% 84 | if %EXIT_CODE% equ 0 set EXIT_CODE=1 85 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% 86 | exit /b %EXIT_CODE% 87 | 88 | :mainEnd 89 | if "%OS%"=="Windows_NT" endlocal 90 | 91 | :omega 92 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'React-Native-Theme-Switcher' 2 | 3 | apply from: new File(["node", "--print", "require.resolve('expo/package.json')"].execute(null, rootDir).text.trim(), "../scripts/autolinking.gradle"); 4 | useExpoModules() 5 | 6 | apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json')"].execute(null, rootDir).text.trim(), "../native_modules.gradle"); 7 | applyNativeModulesSettingsGradle(settings) 8 | 9 | include ':app' 10 | includeBuild(new File(["node", "--print", "require.resolve('@react-native/gradle-plugin/package.json')"].execute(null, rootDir).text.trim()).getParentFile()) 11 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "name": "React-Native-Theme-Switcher", 4 | "slug": "themeSwitcher", 5 | "version": "1.0.0", 6 | "orientation": "portrait", 7 | "icon": "./assets/icon.png", 8 | "userInterfaceStyle": "light", 9 | "splash": { 10 | "image": "./assets/splash.png", 11 | "resizeMode": "contain", 12 | "backgroundColor": "#ffffff" 13 | }, 14 | "assetBundlePatterns": ["**/*"], 15 | "ios": { 16 | "supportsTablet": true, 17 | "bundleIdentifier": "com.4twiggers.theme-switcher" 18 | }, 19 | "android": { 20 | "adaptiveIcon": { 21 | "foregroundImage": "./assets/adaptive-icon.png", 22 | "backgroundColor": "#ffffff" 23 | }, 24 | "package": "test.twiggers.com" 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /assets/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/assets/.DS_Store -------------------------------------------------------------------------------- /assets/adaptive-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/assets/adaptive-icon.png -------------------------------------------------------------------------------- /assets/expo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/assets/expo.jpg -------------------------------------------------------------------------------- /assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/assets/favicon.png -------------------------------------------------------------------------------- /assets/fonts/Montserrat-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/assets/fonts/Montserrat-Bold.ttf -------------------------------------------------------------------------------- /assets/fonts/Montserrat-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/assets/fonts/Montserrat-Regular.ttf -------------------------------------------------------------------------------- /assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/assets/icon.png -------------------------------------------------------------------------------- /assets/rn.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/assets/rn.webp -------------------------------------------------------------------------------- /assets/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/assets/splash.png -------------------------------------------------------------------------------- /assets/users/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/assets/users/.DS_Store -------------------------------------------------------------------------------- /assets/users/user1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/assets/users/user1.png -------------------------------------------------------------------------------- /assets/users/user2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/assets/users/user2.png -------------------------------------------------------------------------------- /assets/users/user3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/assets/users/user3.png -------------------------------------------------------------------------------- /assets/users/user4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/assets/users/user4.png -------------------------------------------------------------------------------- /assets/users/user5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/assets/users/user5.png -------------------------------------------------------------------------------- /assets/users/user6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/assets/users/user6.png -------------------------------------------------------------------------------- /assets/users/user7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/assets/users/user7.png -------------------------------------------------------------------------------- /assets/users/user8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/assets/users/user8.png -------------------------------------------------------------------------------- /assets/users/user9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/assets/users/user9.png -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function (api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | plugins: ['react-native-reanimated/plugin'], 6 | }; 7 | }; 8 | -------------------------------------------------------------------------------- /components/Header.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Platform, Pressable, StyleSheet, View } from 'react-native'; 3 | 4 | import { TwiggersIcon } from '../utils/svgs'; 5 | 6 | const Header = ({ onPress, color }) => { 7 | return ( 8 | 9 | 10 | 11 | ); 12 | }; 13 | 14 | export default Header; 15 | 16 | const styles = StyleSheet.create({ 17 | twiggersIcon: { 18 | height: 70, 19 | justifyContent: 'center', 20 | marginTop: Platform.OS === 'ios' ? 70 : 20, 21 | flexDirection: 'row', 22 | }, 23 | }); 24 | -------------------------------------------------------------------------------- /components/NavigationContainer.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { ScrollView, StyleSheet, View } from 'react-native'; 3 | 4 | import Post from './Post'; 5 | import Tabs from './Tabs'; 6 | import Story from './Story'; 7 | import Header from './Header'; 8 | 9 | const usersArray = [ 10 | { 11 | name: 'Nika Gabunia', 12 | role: 'Chief Executive Officer', 13 | }, 14 | { 15 | name: 'Jeko Tediashvili', 16 | role: 'Web/Mobile Developer', 17 | }, 18 | { 19 | name: 'Niko Chopikashvili', 20 | role: 'NodeJS Developer', 21 | }, 22 | { 23 | name: 'Alexander Pataridze', 24 | role: "Neighbor's Kid", 25 | }, 26 | { 27 | name: 'Miranda Pagava', 28 | role: 'Project Manager', 29 | }, 30 | { 31 | name: 'Nika Kereselidze', 32 | role: 'NodeJS Developer', 33 | }, 34 | ]; 35 | 36 | const NavigationContainer = ({ mode, onPress }) => { 37 | const color = mode === 'light' ? 'black' : 'white'; 38 | 39 | return ( 40 | 41 |

42 | 43 | 44 | 45 | 46 | {usersArray.map((user, i) => ( 47 | 48 | ))} 49 | 50 | 51 | 52 | 53 | ); 54 | }; 55 | 56 | export default NavigationContainer; 57 | 58 | const styles = StyleSheet.create({ 59 | scrollViewStyle: { marginBottom: 60, top: 0, flex: 1 }, 60 | screenContainerStyle: { 61 | flex: 1, 62 | backgroundColor: 'transparent', 63 | }, 64 | }); 65 | -------------------------------------------------------------------------------- /components/Post.jsx: -------------------------------------------------------------------------------- 1 | import { StyleSheet, Text, View } from 'react-native'; 2 | import React from 'react'; 3 | 4 | const Post = ({ user, color }) => { 5 | return ( 6 | 7 | 8 | 9 | 10 | {user.name} 11 | 12 | {user.role} 13 | 14 | 15 | 16 | ); 17 | }; 18 | 19 | export default Post; 20 | 21 | const styles = StyleSheet.create({ 22 | postContainer: { 23 | marginTop: 15, 24 | flexDirection: 'row', 25 | alignItems: 'center', 26 | }, 27 | userPhoto: { 28 | width: 70, 29 | height: 70, 30 | borderRadius: 70, 31 | marginLeft: 10, 32 | borderWidth: 3, 33 | marginRight: 20, 34 | }, 35 | textStyle: { 36 | fontSize: 17, 37 | fontFamily: 'MontserratBold', 38 | }, 39 | descStyle: { marginTop: 10, fontFamily: 'MontserratRegular', fontSize: 15 }, 40 | }); 41 | -------------------------------------------------------------------------------- /components/Story.jsx: -------------------------------------------------------------------------------- 1 | import { StyleSheet, View } from 'react-native'; 2 | import React from 'react'; 3 | 4 | import { SCREEN_WIDTH } from '../utils/dimensions'; 5 | 6 | const size = SCREEN_WIDTH / 4 - 10; 7 | 8 | const Story = ({ color }) => { 9 | return ( 10 | 11 | 12 | 13 | 14 | 15 | 16 | ); 17 | }; 18 | 19 | export default Story; 20 | 21 | const styles = StyleSheet.create({ 22 | storyContainer: { 23 | flexDirection: 'row', 24 | justifyContent: 'space-evenly', 25 | marginBottom: 10, 26 | }, 27 | userPhoto: { 28 | width: size, 29 | height: size, 30 | borderRadius: size, 31 | borderWidth: 3, 32 | marginRight: 0, 33 | }, 34 | }); 35 | -------------------------------------------------------------------------------- /components/Tabs.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Platform, StyleSheet, View } from 'react-native'; 3 | 4 | import { SCREEN_WIDTH } from '../utils/dimensions'; 5 | import { 6 | HomeIcon, 7 | BellIcon, 8 | SearchIcon, 9 | GroupIcon, 10 | EnvelopeIcon, 11 | } from '../utils/svgs'; 12 | 13 | const Tabs = ({ color }) => { 14 | return ( 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | ); 23 | }; 24 | 25 | export default Tabs; 26 | 27 | const styles = StyleSheet.create({ 28 | tabStyle: { 29 | width: SCREEN_WIDTH, 30 | height: 40, 31 | position: 'absolute', 32 | bottom: Platform.OS === 'ios' ? 40 : 40, 33 | flexDirection: 'row', 34 | justifyContent: 'space-evenly', 35 | alignItems: 'center', 36 | }, 37 | iconsStyle: { 38 | width: 30, 39 | height: 30, 40 | }, 41 | }); 42 | -------------------------------------------------------------------------------- /components/ThemeWrapper.jsx: -------------------------------------------------------------------------------- 1 | import { StyleSheet, Pressable, View, Image, Platform } from 'react-native'; 2 | import React, { useState, useEffect, useRef, cloneElement } from 'react'; 3 | import ViewShot from 'react-native-view-shot'; 4 | import MaskedView from '@react-native-masked-view/masked-view'; 5 | import Animated, { 6 | useSharedValue, 7 | useAnimatedStyle, 8 | withTiming, 9 | runOnJS, 10 | } from 'react-native-reanimated'; 11 | 12 | import { SCREEN_HEIGHT, SCREEN_WIDTH } from '../utils/dimensions'; 13 | import { store } from '../store/store'; 14 | import { isDarkMode } from '../utils/mmkv'; 15 | 16 | const AnimatedPressable = Animated.createAnimatedComponent(Pressable); 17 | 18 | const viewShotOptions = { quality: 1, format: 'png' }; 19 | 20 | const ThemeWrapper = ({ mode, isAnimating, children }, props) => { 21 | const mods = useRef(); 22 | const imageRef = useRef(); 23 | const imageRef2 = useRef(); 24 | 25 | const [isLoading, setLoading] = useState(false); 26 | const [lightImage, setLightImage] = useState(''); 27 | const [darkImage, setDarkImage] = useState(''); 28 | 29 | const width = useSharedValue(0); 30 | 31 | const appColor = mode === 'dark' ? 'light' : 'dark'; 32 | 33 | const onSaveImageAsync = () => { 34 | if (imageRef.current && imageRef2.current) { 35 | imageRef.current.capture().then((uri) => { 36 | setDarkImage(uri); 37 | }); 38 | 39 | imageRef2.current.capture().then((uri) => { 40 | setLightImage(uri); 41 | }); 42 | } 43 | }; 44 | 45 | const animatedStyles = useAnimatedStyle(() => { 46 | return { 47 | width: width.value, 48 | height: width.value, 49 | borderRadius: width.value, 50 | left: SCREEN_WIDTH / 2 - width.value / 2, 51 | top: Platform.OS === 'android' ? 35 : 80, 52 | transform: [{ scale: 60 }], 53 | }; 54 | }); 55 | 56 | useEffect(() => { 57 | onSaveImageAsync(); 58 | }, []); 59 | 60 | useEffect(() => { 61 | if (isDarkMode()) { 62 | mods.current = { 63 | light: darkImage, 64 | dark: lightImage, 65 | }; 66 | } else { 67 | mods.current = { 68 | light: lightImage, 69 | dark: darkImage, 70 | }; 71 | } 72 | }, [lightImage, darkImage]); 73 | 74 | const clearAnimation = () => { 75 | setLoading(false); 76 | width.value = 0; 77 | store.isAnimating = false; 78 | store.mode = store.mode === 'dark' ? 'light' : 'dark'; 79 | }; 80 | 81 | useEffect(() => { 82 | if (isAnimating) { 83 | setLoading(true); 84 | width.value = withTiming(50, { duration: 900 }, () => 85 | runOnJS(clearAnimation)() 86 | ); 87 | } 88 | }, [isAnimating]); 89 | 90 | return ( 91 | 92 | {isLoading && ( 93 | 97 | 98 | 99 | }> 100 | <> 101 | 102 | 108 | 109 | 110 | 111 | )} 112 | 113 | {!lightImage && ( 114 | 121 | {cloneElement(children, { ...props, mode: appColor })} 122 | 123 | )} 124 | 125 | 132 | {children} 133 | 134 | 135 | ); 136 | }; 137 | 138 | export default ThemeWrapper; 139 | 140 | const styles = StyleSheet.create({ 141 | maskViewStyle: { 142 | width: '100%', 143 | height: '100%', 144 | position: 'absolute', 145 | top: 0, 146 | left: 0, 147 | bottom: 0, 148 | right: 0, 149 | zIndex: 100, 150 | }, 151 | maskViewStyle2: { 152 | width: '100%', 153 | height: '100%', 154 | position: 'absolute', 155 | top: 0, 156 | left: 0, 157 | right: 0, 158 | height: SCREEN_HEIGHT, 159 | }, 160 | captureImgStyle: { 161 | flex: 1, 162 | backgroundColor: 'transparent', 163 | }, 164 | pressableStyle: { 165 | position: 'absolute', 166 | backgroundColor: 'white', 167 | zIndex: 100, 168 | }, 169 | screenShotImgContainer: { 170 | width: '100%', 171 | height: '100%', 172 | position: 'absolute', 173 | top: 0, 174 | left: 0, 175 | bottom: 0, 176 | right: 0, 177 | zIndex: 100, 178 | }, 179 | viewShotContainer: { 180 | width: '100%', 181 | height: '100%', 182 | height: SCREEN_HEIGHT, 183 | position: 'absolute', 184 | top: 0, 185 | left: 0, 186 | bottom: 0, 187 | right: 0, 188 | zIndex: 500, 189 | }, 190 | }); 191 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | import { registerRootComponent } from 'expo'; 2 | 3 | import App from './App'; 4 | 5 | // registerRootComponent calls AppRegistry.registerComponent('main', () => App); 6 | // It also ensures that whether you load the app in Expo Go or in a native build, 7 | // the environment is set up appropriately 8 | registerRootComponent(App); 9 | -------------------------------------------------------------------------------- /ios/.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | project.xcworkspace 24 | .xcode.env.local 25 | 26 | # Bundle artifacts 27 | *.jsbundle 28 | 29 | # CocoaPods 30 | /Pods/ 31 | -------------------------------------------------------------------------------- /ios/.xcode.env: -------------------------------------------------------------------------------- 1 | # This `.xcode.env` file is versioned and is used to source the environment 2 | # used when running script phases inside Xcode. 3 | # To customize your local environment, you can create an `.xcode.env.local` 4 | # file that is not versioned. 5 | 6 | # NODE_BINARY variable contains the PATH to the node executable. 7 | # 8 | # Customize the NODE_BINARY variable here. 9 | # For example, to use nvm with brew, add the following line 10 | # . "$(brew --prefix nvm)/nvm.sh" --no-use 11 | export NODE_BINARY=$(command -v node) 12 | -------------------------------------------------------------------------------- /ios/Podfile: -------------------------------------------------------------------------------- 1 | require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking") 2 | require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods") 3 | 4 | require 'json' 5 | podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {} 6 | 7 | ENV['RCT_NEW_ARCH_ENABLED'] = podfile_properties['newArchEnabled'] == 'true' ? '1' : '0' 8 | ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] = podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR'] 9 | 10 | platform :ios, podfile_properties['ios.deploymentTarget'] || '13.0' 11 | install! 'cocoapods', 12 | :deterministic_uuids => false 13 | 14 | prepare_react_native_project! 15 | 16 | # If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set. 17 | # because `react-native-flipper` depends on (FlipperKit,...), which will be excluded. To fix this, 18 | # you can also exclude `react-native-flipper` in `react-native.config.js` 19 | # 20 | # ```js 21 | # module.exports = { 22 | # dependencies: { 23 | # ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}), 24 | # } 25 | # } 26 | # ``` 27 | flipper_config = FlipperConfiguration.disabled 28 | if ENV['NO_FLIPPER'] == '1' then 29 | # Explicitly disabled through environment variables 30 | flipper_config = FlipperConfiguration.disabled 31 | elsif podfile_properties.key?('ios.flipper') then 32 | # Configure Flipper in Podfile.properties.json 33 | if podfile_properties['ios.flipper'] == 'true' then 34 | flipper_config = FlipperConfiguration.enabled(["Debug", "Release"]) 35 | elsif podfile_properties['ios.flipper'] != 'false' then 36 | flipper_config = FlipperConfiguration.enabled(["Debug", "Release"], { 'Flipper' => podfile_properties['ios.flipper'] }) 37 | end 38 | end 39 | 40 | target 'ReactNativeThemeSwitcher' do 41 | use_expo_modules! 42 | config = use_native_modules! 43 | 44 | use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks'] 45 | use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS'] 46 | 47 | # Flags change depending on the env values. 48 | flags = get_default_flags() 49 | 50 | use_react_native!( 51 | :path => config[:reactNativePath], 52 | :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes', 53 | :fabric_enabled => flags[:fabric_enabled], 54 | # An absolute path to your application root. 55 | :app_path => "#{Pod::Config.instance.installation_root}/..", 56 | # Note that if you have use_frameworks! enabled, Flipper will not work if enabled 57 | :flipper_configuration => flipper_config 58 | ) 59 | 60 | post_install do |installer| 61 | react_native_post_install( 62 | installer, 63 | config[:reactNativePath], 64 | :mac_catalyst_enabled => false 65 | ) 66 | __apply_Xcode_12_5_M1_post_install_workaround(installer) 67 | 68 | # This is necessary for Xcode 14, because it signs resource bundles by default 69 | # when building for devices. 70 | installer.target_installation_results.pod_target_installation_results 71 | .each do |pod_name, target_installation_result| 72 | target_installation_result.resource_bundle_targets.each do |resource_bundle_target| 73 | resource_bundle_target.build_configurations.each do |config| 74 | config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO' 75 | end 76 | end 77 | end 78 | end 79 | 80 | post_integrate do |installer| 81 | begin 82 | expo_patch_react_imports!(installer) 83 | rescue => e 84 | Pod::UI.warn e 85 | end 86 | end 87 | end 88 | -------------------------------------------------------------------------------- /ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - boost (1.76.0) 3 | - DoubleConversion (1.1.6) 4 | - EXApplication (5.3.1): 5 | - ExpoModulesCore 6 | - EXConstants (14.4.2): 7 | - ExpoModulesCore 8 | - EXFileSystem (15.4.4): 9 | - ExpoModulesCore 10 | - EXFont (11.4.0): 11 | - ExpoModulesCore 12 | - Expo (49.0.13): 13 | - ExpoModulesCore 14 | - ExpoKeepAwake (12.3.0): 15 | - ExpoModulesCore 16 | - ExpoModulesCore (1.5.11): 17 | - RCT-Folly (= 2021.07.22.00) 18 | - React-Core 19 | - React-NativeModulesApple 20 | - React-RCTAppDelegate 21 | - ReactCommon/turbomodule/core 22 | - EXSplashScreen (0.20.5): 23 | - ExpoModulesCore 24 | - RCT-Folly (= 2021.07.22.00) 25 | - React-Core 26 | - FBLazyVector (0.72.6) 27 | - FBReactNativeSpec (0.72.6): 28 | - RCT-Folly (= 2021.07.22.00) 29 | - RCTRequired (= 0.72.6) 30 | - RCTTypeSafety (= 0.72.6) 31 | - React-Core (= 0.72.6) 32 | - React-jsi (= 0.72.6) 33 | - ReactCommon/turbomodule/core (= 0.72.6) 34 | - fmt (6.2.1) 35 | - glog (0.3.5) 36 | - hermes-engine (0.72.5): 37 | - hermes-engine/Pre-built (= 0.72.5) 38 | - hermes-engine/Pre-built (0.72.5) 39 | - libevent (2.1.12) 40 | - MMKV (1.3.1): 41 | - MMKVCore (~> 1.3.1) 42 | - MMKVCore (1.3.1) 43 | - RCT-Folly (2021.07.22.00): 44 | - boost 45 | - DoubleConversion 46 | - fmt (~> 6.2.1) 47 | - glog 48 | - RCT-Folly/Default (= 2021.07.22.00) 49 | - RCT-Folly/Default (2021.07.22.00): 50 | - boost 51 | - DoubleConversion 52 | - fmt (~> 6.2.1) 53 | - glog 54 | - RCT-Folly/Futures (2021.07.22.00): 55 | - boost 56 | - DoubleConversion 57 | - fmt (~> 6.2.1) 58 | - glog 59 | - libevent 60 | - RCTRequired (0.72.6) 61 | - RCTTypeSafety (0.72.6): 62 | - FBLazyVector (= 0.72.6) 63 | - RCTRequired (= 0.72.6) 64 | - React-Core (= 0.72.6) 65 | - React (0.72.6): 66 | - React-Core (= 0.72.6) 67 | - React-Core/DevSupport (= 0.72.6) 68 | - React-Core/RCTWebSocket (= 0.72.6) 69 | - React-RCTActionSheet (= 0.72.6) 70 | - React-RCTAnimation (= 0.72.6) 71 | - React-RCTBlob (= 0.72.6) 72 | - React-RCTImage (= 0.72.6) 73 | - React-RCTLinking (= 0.72.6) 74 | - React-RCTNetwork (= 0.72.6) 75 | - React-RCTSettings (= 0.72.6) 76 | - React-RCTText (= 0.72.6) 77 | - React-RCTVibration (= 0.72.6) 78 | - React-callinvoker (0.72.6) 79 | - React-Codegen (0.72.6): 80 | - DoubleConversion 81 | - FBReactNativeSpec 82 | - glog 83 | - hermes-engine 84 | - RCT-Folly 85 | - RCTRequired 86 | - RCTTypeSafety 87 | - React-Core 88 | - React-jsi 89 | - React-jsiexecutor 90 | - React-NativeModulesApple 91 | - React-rncore 92 | - ReactCommon/turbomodule/bridging 93 | - ReactCommon/turbomodule/core 94 | - React-Core (0.72.6): 95 | - glog 96 | - hermes-engine 97 | - RCT-Folly (= 2021.07.22.00) 98 | - React-Core/Default (= 0.72.6) 99 | - React-cxxreact 100 | - React-hermes 101 | - React-jsi 102 | - React-jsiexecutor 103 | - React-perflogger 104 | - React-runtimeexecutor 105 | - React-utils 106 | - SocketRocket (= 0.6.1) 107 | - Yoga 108 | - React-Core/CoreModulesHeaders (0.72.6): 109 | - glog 110 | - hermes-engine 111 | - RCT-Folly (= 2021.07.22.00) 112 | - React-Core/Default 113 | - React-cxxreact 114 | - React-hermes 115 | - React-jsi 116 | - React-jsiexecutor 117 | - React-perflogger 118 | - React-runtimeexecutor 119 | - React-utils 120 | - SocketRocket (= 0.6.1) 121 | - Yoga 122 | - React-Core/Default (0.72.6): 123 | - glog 124 | - hermes-engine 125 | - RCT-Folly (= 2021.07.22.00) 126 | - React-cxxreact 127 | - React-hermes 128 | - React-jsi 129 | - React-jsiexecutor 130 | - React-perflogger 131 | - React-runtimeexecutor 132 | - React-utils 133 | - SocketRocket (= 0.6.1) 134 | - Yoga 135 | - React-Core/DevSupport (0.72.6): 136 | - glog 137 | - hermes-engine 138 | - RCT-Folly (= 2021.07.22.00) 139 | - React-Core/Default (= 0.72.6) 140 | - React-Core/RCTWebSocket (= 0.72.6) 141 | - React-cxxreact 142 | - React-hermes 143 | - React-jsi 144 | - React-jsiexecutor 145 | - React-jsinspector (= 0.72.6) 146 | - React-perflogger 147 | - React-runtimeexecutor 148 | - React-utils 149 | - SocketRocket (= 0.6.1) 150 | - Yoga 151 | - React-Core/RCTActionSheetHeaders (0.72.6): 152 | - glog 153 | - hermes-engine 154 | - RCT-Folly (= 2021.07.22.00) 155 | - React-Core/Default 156 | - React-cxxreact 157 | - React-hermes 158 | - React-jsi 159 | - React-jsiexecutor 160 | - React-perflogger 161 | - React-runtimeexecutor 162 | - React-utils 163 | - SocketRocket (= 0.6.1) 164 | - Yoga 165 | - React-Core/RCTAnimationHeaders (0.72.6): 166 | - glog 167 | - hermes-engine 168 | - RCT-Folly (= 2021.07.22.00) 169 | - React-Core/Default 170 | - React-cxxreact 171 | - React-hermes 172 | - React-jsi 173 | - React-jsiexecutor 174 | - React-perflogger 175 | - React-runtimeexecutor 176 | - React-utils 177 | - SocketRocket (= 0.6.1) 178 | - Yoga 179 | - React-Core/RCTBlobHeaders (0.72.6): 180 | - glog 181 | - hermes-engine 182 | - RCT-Folly (= 2021.07.22.00) 183 | - React-Core/Default 184 | - React-cxxreact 185 | - React-hermes 186 | - React-jsi 187 | - React-jsiexecutor 188 | - React-perflogger 189 | - React-runtimeexecutor 190 | - React-utils 191 | - SocketRocket (= 0.6.1) 192 | - Yoga 193 | - React-Core/RCTImageHeaders (0.72.6): 194 | - glog 195 | - hermes-engine 196 | - RCT-Folly (= 2021.07.22.00) 197 | - React-Core/Default 198 | - React-cxxreact 199 | - React-hermes 200 | - React-jsi 201 | - React-jsiexecutor 202 | - React-perflogger 203 | - React-runtimeexecutor 204 | - React-utils 205 | - SocketRocket (= 0.6.1) 206 | - Yoga 207 | - React-Core/RCTLinkingHeaders (0.72.6): 208 | - glog 209 | - hermes-engine 210 | - RCT-Folly (= 2021.07.22.00) 211 | - React-Core/Default 212 | - React-cxxreact 213 | - React-hermes 214 | - React-jsi 215 | - React-jsiexecutor 216 | - React-perflogger 217 | - React-runtimeexecutor 218 | - React-utils 219 | - SocketRocket (= 0.6.1) 220 | - Yoga 221 | - React-Core/RCTNetworkHeaders (0.72.6): 222 | - glog 223 | - hermes-engine 224 | - RCT-Folly (= 2021.07.22.00) 225 | - React-Core/Default 226 | - React-cxxreact 227 | - React-hermes 228 | - React-jsi 229 | - React-jsiexecutor 230 | - React-perflogger 231 | - React-runtimeexecutor 232 | - React-utils 233 | - SocketRocket (= 0.6.1) 234 | - Yoga 235 | - React-Core/RCTSettingsHeaders (0.72.6): 236 | - glog 237 | - hermes-engine 238 | - RCT-Folly (= 2021.07.22.00) 239 | - React-Core/Default 240 | - React-cxxreact 241 | - React-hermes 242 | - React-jsi 243 | - React-jsiexecutor 244 | - React-perflogger 245 | - React-runtimeexecutor 246 | - React-utils 247 | - SocketRocket (= 0.6.1) 248 | - Yoga 249 | - React-Core/RCTTextHeaders (0.72.6): 250 | - glog 251 | - hermes-engine 252 | - RCT-Folly (= 2021.07.22.00) 253 | - React-Core/Default 254 | - React-cxxreact 255 | - React-hermes 256 | - React-jsi 257 | - React-jsiexecutor 258 | - React-perflogger 259 | - React-runtimeexecutor 260 | - React-utils 261 | - SocketRocket (= 0.6.1) 262 | - Yoga 263 | - React-Core/RCTVibrationHeaders (0.72.6): 264 | - glog 265 | - hermes-engine 266 | - RCT-Folly (= 2021.07.22.00) 267 | - React-Core/Default 268 | - React-cxxreact 269 | - React-hermes 270 | - React-jsi 271 | - React-jsiexecutor 272 | - React-perflogger 273 | - React-runtimeexecutor 274 | - React-utils 275 | - SocketRocket (= 0.6.1) 276 | - Yoga 277 | - React-Core/RCTWebSocket (0.72.6): 278 | - glog 279 | - hermes-engine 280 | - RCT-Folly (= 2021.07.22.00) 281 | - React-Core/Default (= 0.72.6) 282 | - React-cxxreact 283 | - React-hermes 284 | - React-jsi 285 | - React-jsiexecutor 286 | - React-perflogger 287 | - React-runtimeexecutor 288 | - React-utils 289 | - SocketRocket (= 0.6.1) 290 | - Yoga 291 | - React-CoreModules (0.72.6): 292 | - RCT-Folly (= 2021.07.22.00) 293 | - RCTTypeSafety (= 0.72.6) 294 | - React-Codegen (= 0.72.6) 295 | - React-Core/CoreModulesHeaders (= 0.72.6) 296 | - React-jsi (= 0.72.6) 297 | - React-RCTBlob 298 | - React-RCTImage (= 0.72.6) 299 | - ReactCommon/turbomodule/core (= 0.72.6) 300 | - SocketRocket (= 0.6.1) 301 | - React-cxxreact (0.72.6): 302 | - boost (= 1.76.0) 303 | - DoubleConversion 304 | - glog 305 | - hermes-engine 306 | - RCT-Folly (= 2021.07.22.00) 307 | - React-callinvoker (= 0.72.6) 308 | - React-debug (= 0.72.6) 309 | - React-jsi (= 0.72.6) 310 | - React-jsinspector (= 0.72.6) 311 | - React-logger (= 0.72.6) 312 | - React-perflogger (= 0.72.6) 313 | - React-runtimeexecutor (= 0.72.6) 314 | - React-debug (0.72.6) 315 | - React-hermes (0.72.6): 316 | - DoubleConversion 317 | - glog 318 | - hermes-engine 319 | - RCT-Folly (= 2021.07.22.00) 320 | - RCT-Folly/Futures (= 2021.07.22.00) 321 | - React-cxxreact (= 0.72.6) 322 | - React-jsi 323 | - React-jsiexecutor (= 0.72.6) 324 | - React-jsinspector (= 0.72.6) 325 | - React-perflogger (= 0.72.6) 326 | - React-jsi (0.72.6): 327 | - boost (= 1.76.0) 328 | - DoubleConversion 329 | - glog 330 | - hermes-engine 331 | - RCT-Folly (= 2021.07.22.00) 332 | - React-jsiexecutor (0.72.6): 333 | - DoubleConversion 334 | - glog 335 | - hermes-engine 336 | - RCT-Folly (= 2021.07.22.00) 337 | - React-cxxreact (= 0.72.6) 338 | - React-jsi (= 0.72.6) 339 | - React-perflogger (= 0.72.6) 340 | - React-jsinspector (0.72.6) 341 | - React-logger (0.72.6): 342 | - glog 343 | - react-native-mmkv (2.10.2): 344 | - MMKV (>= 1.2.13) 345 | - React-Core 346 | - react-native-view-shot (3.7.0): 347 | - React-Core 348 | - React-NativeModulesApple (0.72.6): 349 | - hermes-engine 350 | - React-callinvoker 351 | - React-Core 352 | - React-cxxreact 353 | - React-jsi 354 | - React-runtimeexecutor 355 | - ReactCommon/turbomodule/bridging 356 | - ReactCommon/turbomodule/core 357 | - React-perflogger (0.72.6) 358 | - React-RCTActionSheet (0.72.6): 359 | - React-Core/RCTActionSheetHeaders (= 0.72.6) 360 | - React-RCTAnimation (0.72.6): 361 | - RCT-Folly (= 2021.07.22.00) 362 | - RCTTypeSafety (= 0.72.6) 363 | - React-Codegen (= 0.72.6) 364 | - React-Core/RCTAnimationHeaders (= 0.72.6) 365 | - React-jsi (= 0.72.6) 366 | - ReactCommon/turbomodule/core (= 0.72.6) 367 | - React-RCTAppDelegate (0.72.6): 368 | - RCT-Folly 369 | - RCTRequired 370 | - RCTTypeSafety 371 | - React-Core 372 | - React-CoreModules 373 | - React-hermes 374 | - React-NativeModulesApple 375 | - React-RCTImage 376 | - React-RCTNetwork 377 | - React-runtimescheduler 378 | - ReactCommon/turbomodule/core 379 | - React-RCTBlob (0.72.6): 380 | - hermes-engine 381 | - RCT-Folly (= 2021.07.22.00) 382 | - React-Codegen (= 0.72.6) 383 | - React-Core/RCTBlobHeaders (= 0.72.6) 384 | - React-Core/RCTWebSocket (= 0.72.6) 385 | - React-jsi (= 0.72.6) 386 | - React-RCTNetwork (= 0.72.6) 387 | - ReactCommon/turbomodule/core (= 0.72.6) 388 | - React-RCTImage (0.72.6): 389 | - RCT-Folly (= 2021.07.22.00) 390 | - RCTTypeSafety (= 0.72.6) 391 | - React-Codegen (= 0.72.6) 392 | - React-Core/RCTImageHeaders (= 0.72.6) 393 | - React-jsi (= 0.72.6) 394 | - React-RCTNetwork (= 0.72.6) 395 | - ReactCommon/turbomodule/core (= 0.72.6) 396 | - React-RCTLinking (0.72.6): 397 | - React-Codegen (= 0.72.6) 398 | - React-Core/RCTLinkingHeaders (= 0.72.6) 399 | - React-jsi (= 0.72.6) 400 | - ReactCommon/turbomodule/core (= 0.72.6) 401 | - React-RCTNetwork (0.72.6): 402 | - RCT-Folly (= 2021.07.22.00) 403 | - RCTTypeSafety (= 0.72.6) 404 | - React-Codegen (= 0.72.6) 405 | - React-Core/RCTNetworkHeaders (= 0.72.6) 406 | - React-jsi (= 0.72.6) 407 | - ReactCommon/turbomodule/core (= 0.72.6) 408 | - React-RCTSettings (0.72.6): 409 | - RCT-Folly (= 2021.07.22.00) 410 | - RCTTypeSafety (= 0.72.6) 411 | - React-Codegen (= 0.72.6) 412 | - React-Core/RCTSettingsHeaders (= 0.72.6) 413 | - React-jsi (= 0.72.6) 414 | - ReactCommon/turbomodule/core (= 0.72.6) 415 | - React-RCTText (0.72.6): 416 | - React-Core/RCTTextHeaders (= 0.72.6) 417 | - React-RCTVibration (0.72.6): 418 | - RCT-Folly (= 2021.07.22.00) 419 | - React-Codegen (= 0.72.6) 420 | - React-Core/RCTVibrationHeaders (= 0.72.6) 421 | - React-jsi (= 0.72.6) 422 | - ReactCommon/turbomodule/core (= 0.72.6) 423 | - React-rncore (0.72.6) 424 | - React-runtimeexecutor (0.72.6): 425 | - React-jsi (= 0.72.6) 426 | - React-runtimescheduler (0.72.6): 427 | - glog 428 | - hermes-engine 429 | - RCT-Folly (= 2021.07.22.00) 430 | - React-callinvoker 431 | - React-debug 432 | - React-jsi 433 | - React-runtimeexecutor 434 | - React-utils (0.72.6): 435 | - glog 436 | - RCT-Folly (= 2021.07.22.00) 437 | - React-debug 438 | - ReactCommon/turbomodule/bridging (0.72.6): 439 | - DoubleConversion 440 | - glog 441 | - hermes-engine 442 | - RCT-Folly (= 2021.07.22.00) 443 | - React-callinvoker (= 0.72.6) 444 | - React-cxxreact (= 0.72.6) 445 | - React-jsi (= 0.72.6) 446 | - React-logger (= 0.72.6) 447 | - React-perflogger (= 0.72.6) 448 | - ReactCommon/turbomodule/core (0.72.6): 449 | - DoubleConversion 450 | - glog 451 | - hermes-engine 452 | - RCT-Folly (= 2021.07.22.00) 453 | - React-callinvoker (= 0.72.6) 454 | - React-cxxreact (= 0.72.6) 455 | - React-jsi (= 0.72.6) 456 | - React-logger (= 0.72.6) 457 | - React-perflogger (= 0.72.6) 458 | - RNCMaskedView (0.2.9): 459 | - React-Core 460 | - RNReanimated (3.3.0): 461 | - DoubleConversion 462 | - FBLazyVector 463 | - glog 464 | - hermes-engine 465 | - RCT-Folly 466 | - RCTRequired 467 | - RCTTypeSafety 468 | - React-callinvoker 469 | - React-Core 470 | - React-Core/DevSupport 471 | - React-Core/RCTWebSocket 472 | - React-CoreModules 473 | - React-cxxreact 474 | - React-hermes 475 | - React-jsi 476 | - React-jsiexecutor 477 | - React-jsinspector 478 | - React-RCTActionSheet 479 | - React-RCTAnimation 480 | - React-RCTAppDelegate 481 | - React-RCTBlob 482 | - React-RCTImage 483 | - React-RCTLinking 484 | - React-RCTNetwork 485 | - React-RCTSettings 486 | - React-RCTText 487 | - ReactCommon/turbomodule/core 488 | - Yoga 489 | - RNSVG (13.9.0): 490 | - React-Core 491 | - SocketRocket (0.6.1) 492 | - Yoga (1.14.0) 493 | 494 | DEPENDENCIES: 495 | - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) 496 | - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) 497 | - EXApplication (from `../node_modules/expo-application/ios`) 498 | - EXConstants (from `../node_modules/expo-constants/ios`) 499 | - EXFileSystem (from `../node_modules/expo-file-system/ios`) 500 | - EXFont (from `../node_modules/expo-font/ios`) 501 | - Expo (from `../node_modules/expo`) 502 | - ExpoKeepAwake (from `../node_modules/expo-keep-awake/ios`) 503 | - ExpoModulesCore (from `../node_modules/expo-modules-core`) 504 | - EXSplashScreen (from `../node_modules/expo-splash-screen/ios`) 505 | - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) 506 | - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) 507 | - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) 508 | - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) 509 | - libevent (~> 2.1.12) 510 | - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) 511 | - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) 512 | - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) 513 | - React (from `../node_modules/react-native/`) 514 | - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) 515 | - React-Codegen (from `build/generated/ios`) 516 | - React-Core (from `../node_modules/react-native/`) 517 | - React-Core/RCTWebSocket (from `../node_modules/react-native/`) 518 | - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) 519 | - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) 520 | - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`) 521 | - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) 522 | - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) 523 | - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) 524 | - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) 525 | - React-logger (from `../node_modules/react-native/ReactCommon/logger`) 526 | - react-native-mmkv (from `../node_modules/react-native-mmkv`) 527 | - react-native-view-shot (from `../node_modules/react-native-view-shot`) 528 | - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) 529 | - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) 530 | - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) 531 | - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) 532 | - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) 533 | - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) 534 | - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) 535 | - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) 536 | - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) 537 | - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) 538 | - React-RCTText (from `../node_modules/react-native/Libraries/Text`) 539 | - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) 540 | - React-rncore (from `../node_modules/react-native/ReactCommon`) 541 | - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) 542 | - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) 543 | - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) 544 | - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) 545 | - "RNCMaskedView (from `../node_modules/@react-native-masked-view/masked-view`)" 546 | - RNReanimated (from `../node_modules/react-native-reanimated`) 547 | - RNSVG (from `../node_modules/react-native-svg`) 548 | - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) 549 | 550 | SPEC REPOS: 551 | trunk: 552 | - fmt 553 | - libevent 554 | - MMKV 555 | - MMKVCore 556 | - SocketRocket 557 | 558 | EXTERNAL SOURCES: 559 | boost: 560 | :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" 561 | DoubleConversion: 562 | :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" 563 | EXApplication: 564 | :path: "../node_modules/expo-application/ios" 565 | EXConstants: 566 | :path: "../node_modules/expo-constants/ios" 567 | EXFileSystem: 568 | :path: "../node_modules/expo-file-system/ios" 569 | EXFont: 570 | :path: "../node_modules/expo-font/ios" 571 | Expo: 572 | :path: "../node_modules/expo" 573 | ExpoKeepAwake: 574 | :path: "../node_modules/expo-keep-awake/ios" 575 | ExpoModulesCore: 576 | :path: "../node_modules/expo-modules-core" 577 | EXSplashScreen: 578 | :path: "../node_modules/expo-splash-screen/ios" 579 | FBLazyVector: 580 | :path: "../node_modules/react-native/Libraries/FBLazyVector" 581 | FBReactNativeSpec: 582 | :path: "../node_modules/react-native/React/FBReactNativeSpec" 583 | glog: 584 | :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" 585 | hermes-engine: 586 | :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" 587 | :tag: hermes-2023-08-07-RNv0.72.4-813b2def12bc9df02654b3e3653ae4a68d0572e0 588 | RCT-Folly: 589 | :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" 590 | RCTRequired: 591 | :path: "../node_modules/react-native/Libraries/RCTRequired" 592 | RCTTypeSafety: 593 | :path: "../node_modules/react-native/Libraries/TypeSafety" 594 | React: 595 | :path: "../node_modules/react-native/" 596 | React-callinvoker: 597 | :path: "../node_modules/react-native/ReactCommon/callinvoker" 598 | React-Codegen: 599 | :path: build/generated/ios 600 | React-Core: 601 | :path: "../node_modules/react-native/" 602 | React-CoreModules: 603 | :path: "../node_modules/react-native/React/CoreModules" 604 | React-cxxreact: 605 | :path: "../node_modules/react-native/ReactCommon/cxxreact" 606 | React-debug: 607 | :path: "../node_modules/react-native/ReactCommon/react/debug" 608 | React-hermes: 609 | :path: "../node_modules/react-native/ReactCommon/hermes" 610 | React-jsi: 611 | :path: "../node_modules/react-native/ReactCommon/jsi" 612 | React-jsiexecutor: 613 | :path: "../node_modules/react-native/ReactCommon/jsiexecutor" 614 | React-jsinspector: 615 | :path: "../node_modules/react-native/ReactCommon/jsinspector" 616 | React-logger: 617 | :path: "../node_modules/react-native/ReactCommon/logger" 618 | react-native-mmkv: 619 | :path: "../node_modules/react-native-mmkv" 620 | react-native-view-shot: 621 | :path: "../node_modules/react-native-view-shot" 622 | React-NativeModulesApple: 623 | :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" 624 | React-perflogger: 625 | :path: "../node_modules/react-native/ReactCommon/reactperflogger" 626 | React-RCTActionSheet: 627 | :path: "../node_modules/react-native/Libraries/ActionSheetIOS" 628 | React-RCTAnimation: 629 | :path: "../node_modules/react-native/Libraries/NativeAnimation" 630 | React-RCTAppDelegate: 631 | :path: "../node_modules/react-native/Libraries/AppDelegate" 632 | React-RCTBlob: 633 | :path: "../node_modules/react-native/Libraries/Blob" 634 | React-RCTImage: 635 | :path: "../node_modules/react-native/Libraries/Image" 636 | React-RCTLinking: 637 | :path: "../node_modules/react-native/Libraries/LinkingIOS" 638 | React-RCTNetwork: 639 | :path: "../node_modules/react-native/Libraries/Network" 640 | React-RCTSettings: 641 | :path: "../node_modules/react-native/Libraries/Settings" 642 | React-RCTText: 643 | :path: "../node_modules/react-native/Libraries/Text" 644 | React-RCTVibration: 645 | :path: "../node_modules/react-native/Libraries/Vibration" 646 | React-rncore: 647 | :path: "../node_modules/react-native/ReactCommon" 648 | React-runtimeexecutor: 649 | :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" 650 | React-runtimescheduler: 651 | :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler" 652 | React-utils: 653 | :path: "../node_modules/react-native/ReactCommon/react/utils" 654 | ReactCommon: 655 | :path: "../node_modules/react-native/ReactCommon" 656 | RNCMaskedView: 657 | :path: "../node_modules/@react-native-masked-view/masked-view" 658 | RNReanimated: 659 | :path: "../node_modules/react-native-reanimated" 660 | RNSVG: 661 | :path: "../node_modules/react-native-svg" 662 | Yoga: 663 | :path: "../node_modules/react-native/ReactCommon/yoga" 664 | 665 | SPEC CHECKSUMS: 666 | boost: 57d2868c099736d80fcd648bf211b4431e51a558 667 | DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 668 | EXApplication: 042aa2e3f05258a16962ea1a9914bf288db9c9a1 669 | EXConstants: ce5bbea779da8031ac818c36bea41b10e14d04e1 670 | EXFileSystem: 2b826a3bf1071a4b80a8457e97124783d1ac860e 671 | EXFont: 738c44c390953ebcbab075a4848bfbef025fd9ee 672 | Expo: e7d2116b947e2e6fdeb09ee4f2754f819426d1b6 673 | ExpoKeepAwake: be4cbd52d9b177cde0fd66daa1913afa3161fc1d 674 | ExpoModulesCore: 51cb2e7ab4c8da14be3f40b66d54c1781002e99d 675 | EXSplashScreen: c0e7f2d4a640f3b875808ed0b88575538daf6d82 676 | FBLazyVector: 748c0ef74f2bf4b36cfcccf37916806940a64c32 677 | FBReactNativeSpec: 966f29e4e697de53a3b366355e8f57375c856ad9 678 | fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 679 | glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b 680 | hermes-engine: f6cf92a471053245614d9d8097736f6337d5b86c 681 | libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 682 | MMKV: 5a07930c70c70b86cd87761a42c8f3836fb681d7 683 | MMKVCore: e50135dbd33235b6ab390635991bab437ab873c0 684 | RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1 685 | RCTRequired: 28469809442eb4eb5528462705f7d852948c8a74 686 | RCTTypeSafety: e9c6c409fca2cc584e5b086862d562540cb38d29 687 | React: 769f469909b18edfe934f0539fffb319c4c61043 688 | React-callinvoker: e48ce12c83706401251921896576710d81e54763 689 | React-Codegen: a136b8094d39fd071994eaa935366e6be2239cb1 690 | React-Core: e548a186fb01c3a78a9aeeffa212d625ca9511bf 691 | React-CoreModules: d226b22d06ea1bc4e49d3c073b2c6cbb42265405 692 | React-cxxreact: 44a3560510ead6633b6e02f9fbbdd1772fb40f92 693 | React-debug: 238501490155574ae9f3f8dd1c74330eba30133e 694 | React-hermes: 46e66dc854124d7645c20bfec0a6be9542826ecd 695 | React-jsi: fbdaf4166bae60524b591b18c851b530c8cdb90c 696 | React-jsiexecutor: 3bf18ff7cb03cd8dfdce08fbbc0d15058c1d71ae 697 | React-jsinspector: 194e32c6aab382d88713ad3dd0025c5f5c4ee072 698 | React-logger: cebf22b6cf43434e471dc561e5911b40ac01d289 699 | react-native-mmkv: 9ae7ca3977e8ef48dbf7f066974eb844c20b5fd7 700 | react-native-view-shot: f5507655f122e6b104888a11130f267a427f0d57 701 | React-NativeModulesApple: 02e35e9a51e10c6422f04f5e4076a7c02243fff2 702 | React-perflogger: e3596db7e753f51766bceadc061936ef1472edc3 703 | React-RCTActionSheet: 17ab132c748b4471012abbcdcf5befe860660485 704 | React-RCTAnimation: c8bbaab62be5817d2a31c36d5f2571e3f7dcf099 705 | React-RCTAppDelegate: af1c7dace233deba4b933cd1d6491fe4e3584ad1 706 | React-RCTBlob: 1bcf3a0341eb8d6950009b1ddb8aefaf46996b8c 707 | React-RCTImage: 670a3486b532292649b1aef3ffddd0b495a5cee4 708 | React-RCTLinking: bd7ab853144aed463903237e615fd91d11b4f659 709 | React-RCTNetwork: be86a621f3e4724758f23ad1fdce32474ab3d829 710 | React-RCTSettings: 4f3a29a6d23ffa639db9701bc29af43f30781058 711 | React-RCTText: adde32164a243103aaba0b1dc7b0a2599733873e 712 | React-RCTVibration: 6bd85328388ac2e82ae0ca11afe48ad5555b483a 713 | React-rncore: fda7b1ae5918fa7baa259105298a5487875a57c8 714 | React-runtimeexecutor: 57d85d942862b08f6d15441a0badff2542fd233c 715 | React-runtimescheduler: f23e337008403341177fc52ee4ca94e442c17ede 716 | React-utils: fa59c9a3375fb6f4aeb66714fd3f7f76b43a9f16 717 | ReactCommon: dd03c17275c200496f346af93a7b94c53f3093a4 718 | RNCMaskedView: 949696f25ec596bfc697fc88e6f95cf0c79669b6 719 | RNReanimated: 9f7068e43b9358a46a688d94a5a3adb258139457 720 | RNSVG: 53c661b76829783cdaf9b7a57258f3d3b4c28315 721 | SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 722 | Yoga: b76f1acfda8212aa16b7e26bcce3983230c82603 723 | 724 | PODFILE CHECKSUM: 5dd9dcc2046f7b61150bf48902c3170363369ece 725 | 726 | COCOAPODS: 1.12.1 727 | -------------------------------------------------------------------------------- /ios/Podfile.properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo.jsEngine": "hermes", 3 | "EX_DEV_CLIENT_NETWORK_INSPECTOR": "true" 4 | } 5 | -------------------------------------------------------------------------------- /ios/ReactNativeThemeSwitcher.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 11 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 12 | 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 13 | 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; }; 14 | 925DD3BF0A664ABFBB7DD24E /* noop-file.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E2DB40AE63B4676BC7CD633 /* noop-file.swift */; }; 15 | 96905EF65AED1B983A6B3ABC /* libPods-ReactNativeThemeSwitcher.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-ReactNativeThemeSwitcher.a */; }; 16 | B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */; }; 17 | BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; }; 18 | /* End PBXBuildFile section */ 19 | 20 | /* Begin PBXFileReference section */ 21 | 13B07F961A680F5B00A75B9A /* ReactNativeThemeSwitcher.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ReactNativeThemeSwitcher.app; sourceTree = BUILT_PRODUCTS_DIR; }; 22 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = ReactNativeThemeSwitcher/AppDelegate.h; sourceTree = ""; }; 23 | 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = ReactNativeThemeSwitcher/AppDelegate.mm; sourceTree = ""; }; 24 | 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = ReactNativeThemeSwitcher/Images.xcassets; sourceTree = ""; }; 25 | 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = ReactNativeThemeSwitcher/Info.plist; sourceTree = ""; }; 26 | 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = ReactNativeThemeSwitcher/main.m; sourceTree = ""; }; 27 | 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-ReactNativeThemeSwitcher.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactNativeThemeSwitcher.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 28 | 6C2E3173556A471DD304B334 /* Pods-ReactNativeThemeSwitcher.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeThemeSwitcher.debug.xcconfig"; path = "Target Support Files/Pods-ReactNativeThemeSwitcher/Pods-ReactNativeThemeSwitcher.debug.xcconfig"; sourceTree = ""; }; 29 | 7A4D352CD337FB3A3BF06240 /* Pods-ReactNativeThemeSwitcher.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeThemeSwitcher.release.xcconfig"; path = "Target Support Files/Pods-ReactNativeThemeSwitcher/Pods-ReactNativeThemeSwitcher.release.xcconfig"; sourceTree = ""; }; 30 | 8E2DB40AE63B4676BC7CD633 /* noop-file.swift */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.swift; name = "noop-file.swift"; path = "ReactNativeThemeSwitcher/noop-file.swift"; sourceTree = ""; }; 31 | AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = ReactNativeThemeSwitcher/SplashScreen.storyboard; sourceTree = ""; }; 32 | BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = ""; }; 33 | CF4B6A9A0E98485D8696D9B9 /* ReactNativeThemeSwitcher-Bridging-Header.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = "ReactNativeThemeSwitcher-Bridging-Header.h"; path = "ReactNativeThemeSwitcher/ReactNativeThemeSwitcher-Bridging-Header.h"; sourceTree = ""; }; 34 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; 35 | FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-ReactNativeThemeSwitcher/ExpoModulesProvider.swift"; sourceTree = ""; }; 36 | /* End PBXFileReference section */ 37 | 38 | /* Begin PBXFrameworksBuildPhase section */ 39 | 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { 40 | isa = PBXFrameworksBuildPhase; 41 | buildActionMask = 2147483647; 42 | files = ( 43 | 96905EF65AED1B983A6B3ABC /* libPods-ReactNativeThemeSwitcher.a in Frameworks */, 44 | ); 45 | runOnlyForDeploymentPostprocessing = 0; 46 | }; 47 | /* End PBXFrameworksBuildPhase section */ 48 | 49 | /* Begin PBXGroup section */ 50 | 13B07FAE1A68108700A75B9A /* ReactNativeThemeSwitcher */ = { 51 | isa = PBXGroup; 52 | children = ( 53 | BB2F792B24A3F905000567C9 /* Supporting */, 54 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */, 55 | 13B07FB01A68108700A75B9A /* AppDelegate.mm */, 56 | 13B07FB51A68108700A75B9A /* Images.xcassets */, 57 | 13B07FB61A68108700A75B9A /* Info.plist */, 58 | 13B07FB71A68108700A75B9A /* main.m */, 59 | AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */, 60 | 8E2DB40AE63B4676BC7CD633 /* noop-file.swift */, 61 | CF4B6A9A0E98485D8696D9B9 /* ReactNativeThemeSwitcher-Bridging-Header.h */, 62 | ); 63 | name = ReactNativeThemeSwitcher; 64 | sourceTree = ""; 65 | }; 66 | 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { 67 | isa = PBXGroup; 68 | children = ( 69 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */, 70 | 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-ReactNativeThemeSwitcher.a */, 71 | ); 72 | name = Frameworks; 73 | sourceTree = ""; 74 | }; 75 | 832341AE1AAA6A7D00B99B32 /* Libraries */ = { 76 | isa = PBXGroup; 77 | children = ( 78 | ); 79 | name = Libraries; 80 | sourceTree = ""; 81 | }; 82 | 83CBB9F61A601CBA00E9B192 = { 83 | isa = PBXGroup; 84 | children = ( 85 | 13B07FAE1A68108700A75B9A /* ReactNativeThemeSwitcher */, 86 | 832341AE1AAA6A7D00B99B32 /* Libraries */, 87 | 83CBBA001A601CBA00E9B192 /* Products */, 88 | 2D16E6871FA4F8E400B85C8A /* Frameworks */, 89 | D65327D7A22EEC0BE12398D9 /* Pods */, 90 | D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */, 91 | ); 92 | indentWidth = 2; 93 | sourceTree = ""; 94 | tabWidth = 2; 95 | usesTabs = 0; 96 | }; 97 | 83CBBA001A601CBA00E9B192 /* Products */ = { 98 | isa = PBXGroup; 99 | children = ( 100 | 13B07F961A680F5B00A75B9A /* ReactNativeThemeSwitcher.app */, 101 | ); 102 | name = Products; 103 | sourceTree = ""; 104 | }; 105 | 92DBD88DE9BF7D494EA9DA96 /* ReactNativeThemeSwitcher */ = { 106 | isa = PBXGroup; 107 | children = ( 108 | FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */, 109 | ); 110 | name = ReactNativeThemeSwitcher; 111 | sourceTree = ""; 112 | }; 113 | BB2F792B24A3F905000567C9 /* Supporting */ = { 114 | isa = PBXGroup; 115 | children = ( 116 | BB2F792C24A3F905000567C9 /* Expo.plist */, 117 | ); 118 | name = Supporting; 119 | path = ReactNativeThemeSwitcher/Supporting; 120 | sourceTree = ""; 121 | }; 122 | D65327D7A22EEC0BE12398D9 /* Pods */ = { 123 | isa = PBXGroup; 124 | children = ( 125 | 6C2E3173556A471DD304B334 /* Pods-ReactNativeThemeSwitcher.debug.xcconfig */, 126 | 7A4D352CD337FB3A3BF06240 /* Pods-ReactNativeThemeSwitcher.release.xcconfig */, 127 | ); 128 | path = Pods; 129 | sourceTree = ""; 130 | }; 131 | D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */ = { 132 | isa = PBXGroup; 133 | children = ( 134 | 92DBD88DE9BF7D494EA9DA96 /* ReactNativeThemeSwitcher */, 135 | ); 136 | name = ExpoModulesProviders; 137 | sourceTree = ""; 138 | }; 139 | /* End PBXGroup section */ 140 | 141 | /* Begin PBXNativeTarget section */ 142 | 13B07F861A680F5B00A75B9A /* ReactNativeThemeSwitcher */ = { 143 | isa = PBXNativeTarget; 144 | buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ReactNativeThemeSwitcher" */; 145 | buildPhases = ( 146 | 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */, 147 | FD10A7F022414F080027D42C /* Start Packager */, 148 | EBE5741EAAC775B7717E1F04 /* [Expo] Configure project */, 149 | 13B07F871A680F5B00A75B9A /* Sources */, 150 | 13B07F8C1A680F5B00A75B9A /* Frameworks */, 151 | 13B07F8E1A680F5B00A75B9A /* Resources */, 152 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, 153 | 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */, 154 | 360309FBCC172A4CA1FA8299 /* [CP] Embed Pods Frameworks */, 155 | ); 156 | buildRules = ( 157 | ); 158 | dependencies = ( 159 | ); 160 | name = ReactNativeThemeSwitcher; 161 | productName = ReactNativeThemeSwitcher; 162 | productReference = 13B07F961A680F5B00A75B9A /* ReactNativeThemeSwitcher.app */; 163 | productType = "com.apple.product-type.application"; 164 | }; 165 | /* End PBXNativeTarget section */ 166 | 167 | /* Begin PBXProject section */ 168 | 83CBB9F71A601CBA00E9B192 /* Project object */ = { 169 | isa = PBXProject; 170 | attributes = { 171 | LastUpgradeCheck = 1130; 172 | TargetAttributes = { 173 | 13B07F861A680F5B00A75B9A = { 174 | LastSwiftMigration = 1250; 175 | }; 176 | }; 177 | }; 178 | buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "ReactNativeThemeSwitcher" */; 179 | compatibilityVersion = "Xcode 3.2"; 180 | developmentRegion = en; 181 | hasScannedForEncodings = 0; 182 | knownRegions = ( 183 | en, 184 | Base, 185 | ); 186 | mainGroup = 83CBB9F61A601CBA00E9B192; 187 | productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; 188 | projectDirPath = ""; 189 | projectRoot = ""; 190 | targets = ( 191 | 13B07F861A680F5B00A75B9A /* ReactNativeThemeSwitcher */, 192 | ); 193 | }; 194 | /* End PBXProject section */ 195 | 196 | /* Begin PBXResourcesBuildPhase section */ 197 | 13B07F8E1A680F5B00A75B9A /* Resources */ = { 198 | isa = PBXResourcesBuildPhase; 199 | buildActionMask = 2147483647; 200 | files = ( 201 | BB2F792D24A3F905000567C9 /* Expo.plist in Resources */, 202 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 203 | 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */, 204 | ); 205 | runOnlyForDeploymentPostprocessing = 0; 206 | }; 207 | /* End PBXResourcesBuildPhase section */ 208 | 209 | /* Begin PBXShellScriptBuildPhase section */ 210 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { 211 | isa = PBXShellScriptBuildPhase; 212 | buildActionMask = 2147483647; 213 | files = ( 214 | ); 215 | inputPaths = ( 216 | ); 217 | name = "Bundle React Native code and images"; 218 | outputPaths = ( 219 | ); 220 | runOnlyForDeploymentPostprocessing = 0; 221 | shellPath = /bin/sh; 222 | shellScript = "if [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\n source \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n# The project root by default is one level up from the ios directory\nexport PROJECT_ROOT=\"$PROJECT_DIR\"/..\n\nif [[ \"$CONFIGURATION\" = *Debug* ]]; then\n export SKIP_BUNDLING=1\nfi\nif [[ -z \"$ENTRY_FILE\" ]]; then\n # Set the entry JS file using the bundler's entry resolution.\n export ENTRY_FILE=\"$(\"$NODE_BINARY\" -e \"require('expo/scripts/resolveAppEntry')\" \"$PROJECT_ROOT\" ios relative | tail -n 1)\"\nfi\n\nif [[ -z \"$CLI_PATH\" ]]; then\n # Use Expo CLI\n export CLI_PATH=\"$(\"$NODE_BINARY\" --print \"require.resolve('@expo/cli')\")\"\nfi\nif [[ -z \"$BUNDLE_COMMAND\" ]]; then\n # Default Expo CLI command for bundling\n export BUNDLE_COMMAND=\"export:embed\"\nfi\n\n`\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\"`\n\n"; 223 | }; 224 | 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = { 225 | isa = PBXShellScriptBuildPhase; 226 | buildActionMask = 2147483647; 227 | files = ( 228 | ); 229 | inputFileListPaths = ( 230 | ); 231 | inputPaths = ( 232 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 233 | "${PODS_ROOT}/Manifest.lock", 234 | ); 235 | name = "[CP] Check Pods Manifest.lock"; 236 | outputFileListPaths = ( 237 | ); 238 | outputPaths = ( 239 | "$(DERIVED_FILE_DIR)/Pods-ReactNativeThemeSwitcher-checkManifestLockResult.txt", 240 | ); 241 | runOnlyForDeploymentPostprocessing = 0; 242 | shellPath = /bin/sh; 243 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 244 | showEnvVarsInLog = 0; 245 | }; 246 | 360309FBCC172A4CA1FA8299 /* [CP] Embed Pods Frameworks */ = { 247 | isa = PBXShellScriptBuildPhase; 248 | buildActionMask = 2147483647; 249 | files = ( 250 | ); 251 | inputPaths = ( 252 | "${PODS_ROOT}/Target Support Files/Pods-ReactNativeThemeSwitcher/Pods-ReactNativeThemeSwitcher-frameworks.sh", 253 | "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", 254 | ); 255 | name = "[CP] Embed Pods Frameworks"; 256 | outputPaths = ( 257 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", 258 | ); 259 | runOnlyForDeploymentPostprocessing = 0; 260 | shellPath = /bin/sh; 261 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeThemeSwitcher/Pods-ReactNativeThemeSwitcher-frameworks.sh\"\n"; 262 | showEnvVarsInLog = 0; 263 | }; 264 | 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */ = { 265 | isa = PBXShellScriptBuildPhase; 266 | buildActionMask = 2147483647; 267 | files = ( 268 | ); 269 | inputPaths = ( 270 | "${PODS_ROOT}/Target Support Files/Pods-ReactNativeThemeSwitcher/Pods-ReactNativeThemeSwitcher-resources.sh", 271 | "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle", 272 | "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", 273 | ); 274 | name = "[CP] Copy Pods Resources"; 275 | outputPaths = ( 276 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXConstants.bundle", 277 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", 278 | ); 279 | runOnlyForDeploymentPostprocessing = 0; 280 | shellPath = /bin/sh; 281 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeThemeSwitcher/Pods-ReactNativeThemeSwitcher-resources.sh\"\n"; 282 | showEnvVarsInLog = 0; 283 | }; 284 | EBE5741EAAC775B7717E1F04 /* [Expo] Configure project */ = { 285 | isa = PBXShellScriptBuildPhase; 286 | alwaysOutOfDate = 1; 287 | buildActionMask = 2147483647; 288 | files = ( 289 | ); 290 | inputFileListPaths = ( 291 | ); 292 | inputPaths = ( 293 | ); 294 | name = "[Expo] Configure project"; 295 | outputFileListPaths = ( 296 | ); 297 | outputPaths = ( 298 | ); 299 | runOnlyForDeploymentPostprocessing = 0; 300 | shellPath = /bin/sh; 301 | shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-ReactNativeThemeSwitcher/expo-configure-project.sh\"\n"; 302 | }; 303 | FD10A7F022414F080027D42C /* Start Packager */ = { 304 | isa = PBXShellScriptBuildPhase; 305 | buildActionMask = 2147483647; 306 | files = ( 307 | ); 308 | inputFileListPaths = ( 309 | ); 310 | inputPaths = ( 311 | ); 312 | name = "Start Packager"; 313 | outputFileListPaths = ( 314 | ); 315 | outputPaths = ( 316 | ); 317 | runOnlyForDeploymentPostprocessing = 0; 318 | shellPath = /bin/sh; 319 | shellScript = "if [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\n source \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\nexport RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > `$NODE_BINARY --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/.packager.env'\"`\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open `$NODE_BINARY --print \"require('path').dirname(require.resolve('expo/package.json')) + '/scripts/launchPackager.command'\"` || echo \"Can't start packager automatically\"\n fi\nfi\n"; 320 | showEnvVarsInLog = 0; 321 | }; 322 | /* End PBXShellScriptBuildPhase section */ 323 | 324 | /* Begin PBXSourcesBuildPhase section */ 325 | 13B07F871A680F5B00A75B9A /* Sources */ = { 326 | isa = PBXSourcesBuildPhase; 327 | buildActionMask = 2147483647; 328 | files = ( 329 | 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, 330 | 13B07FC11A68108700A75B9A /* main.m in Sources */, 331 | B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */, 332 | 925DD3BF0A664ABFBB7DD24E /* noop-file.swift in Sources */, 333 | ); 334 | runOnlyForDeploymentPostprocessing = 0; 335 | }; 336 | /* End PBXSourcesBuildPhase section */ 337 | 338 | /* Begin XCBuildConfiguration section */ 339 | 13B07F941A680F5B00A75B9A /* Debug */ = { 340 | isa = XCBuildConfiguration; 341 | baseConfigurationReference = 6C2E3173556A471DD304B334 /* Pods-ReactNativeThemeSwitcher.debug.xcconfig */; 342 | buildSettings = { 343 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 344 | CLANG_ENABLE_MODULES = YES; 345 | CODE_SIGN_ENTITLEMENTS = ReactNativeThemeSwitcher/ReactNativeThemeSwitcher.entitlements; 346 | CURRENT_PROJECT_VERSION = 1; 347 | ENABLE_BITCODE = NO; 348 | GCC_PREPROCESSOR_DEFINITIONS = ( 349 | "$(inherited)", 350 | "FB_SONARKIT_ENABLED=1", 351 | ); 352 | INFOPLIST_FILE = ReactNativeThemeSwitcher/Info.plist; 353 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 354 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 355 | MARKETING_VERSION = 1.0; 356 | OTHER_LDFLAGS = ( 357 | "$(inherited)", 358 | "-ObjC", 359 | "-lc++", 360 | ); 361 | OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; 362 | PRODUCT_BUNDLE_IDENTIFIER = "com.4twiggers.theme-switcher"; 363 | PRODUCT_NAME = ReactNativeThemeSwitcher; 364 | SWIFT_OBJC_BRIDGING_HEADER = "ReactNativeThemeSwitcher/ReactNativeThemeSwitcher-Bridging-Header.h"; 365 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 366 | SWIFT_VERSION = 5.0; 367 | TARGETED_DEVICE_FAMILY = "1,2"; 368 | VERSIONING_SYSTEM = "apple-generic"; 369 | }; 370 | name = Debug; 371 | }; 372 | 13B07F951A680F5B00A75B9A /* Release */ = { 373 | isa = XCBuildConfiguration; 374 | baseConfigurationReference = 7A4D352CD337FB3A3BF06240 /* Pods-ReactNativeThemeSwitcher.release.xcconfig */; 375 | buildSettings = { 376 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 377 | CLANG_ENABLE_MODULES = YES; 378 | CODE_SIGN_ENTITLEMENTS = ReactNativeThemeSwitcher/ReactNativeThemeSwitcher.entitlements; 379 | CURRENT_PROJECT_VERSION = 1; 380 | INFOPLIST_FILE = ReactNativeThemeSwitcher/Info.plist; 381 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 382 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 383 | MARKETING_VERSION = 1.0; 384 | OTHER_LDFLAGS = ( 385 | "$(inherited)", 386 | "-ObjC", 387 | "-lc++", 388 | ); 389 | OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; 390 | PRODUCT_BUNDLE_IDENTIFIER = "com.4twiggers.theme-switcher"; 391 | PRODUCT_NAME = ReactNativeThemeSwitcher; 392 | SWIFT_OBJC_BRIDGING_HEADER = "ReactNativeThemeSwitcher/ReactNativeThemeSwitcher-Bridging-Header.h"; 393 | SWIFT_VERSION = 5.0; 394 | TARGETED_DEVICE_FAMILY = "1,2"; 395 | VERSIONING_SYSTEM = "apple-generic"; 396 | }; 397 | name = Release; 398 | }; 399 | 83CBBA201A601CBA00E9B192 /* Debug */ = { 400 | isa = XCBuildConfiguration; 401 | buildSettings = { 402 | ALWAYS_SEARCH_USER_PATHS = NO; 403 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 404 | CLANG_CXX_LANGUAGE_STANDARD = "c++17"; 405 | CLANG_CXX_LIBRARY = "libc++"; 406 | CLANG_ENABLE_MODULES = YES; 407 | CLANG_ENABLE_OBJC_ARC = YES; 408 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 409 | CLANG_WARN_BOOL_CONVERSION = YES; 410 | CLANG_WARN_COMMA = YES; 411 | CLANG_WARN_CONSTANT_CONVERSION = YES; 412 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 413 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 414 | CLANG_WARN_EMPTY_BODY = YES; 415 | CLANG_WARN_ENUM_CONVERSION = YES; 416 | CLANG_WARN_INFINITE_RECURSION = YES; 417 | CLANG_WARN_INT_CONVERSION = YES; 418 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 419 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 420 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 421 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 422 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 423 | CLANG_WARN_STRICT_PROTOTYPES = YES; 424 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 425 | CLANG_WARN_UNREACHABLE_CODE = YES; 426 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 427 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 428 | COPY_PHASE_STRIP = NO; 429 | ENABLE_STRICT_OBJC_MSGSEND = YES; 430 | ENABLE_TESTABILITY = YES; 431 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; 432 | GCC_C_LANGUAGE_STANDARD = gnu99; 433 | GCC_DYNAMIC_NO_PIC = NO; 434 | GCC_NO_COMMON_BLOCKS = YES; 435 | GCC_OPTIMIZATION_LEVEL = 0; 436 | GCC_PREPROCESSOR_DEFINITIONS = ( 437 | "DEBUG=1", 438 | "$(inherited)", 439 | _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION, 440 | ); 441 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 442 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 443 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 444 | GCC_WARN_UNDECLARED_SELECTOR = YES; 445 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 446 | GCC_WARN_UNUSED_FUNCTION = YES; 447 | GCC_WARN_UNUSED_VARIABLE = YES; 448 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 449 | LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; 450 | LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; 451 | MTL_ENABLE_DEBUG_INFO = YES; 452 | ONLY_ACTIVE_ARCH = YES; 453 | OTHER_CFLAGS = "$(inherited)"; 454 | OTHER_CPLUSPLUSFLAGS = "$(inherited)"; 455 | OTHER_LDFLAGS = ( 456 | "$(inherited)", 457 | "-Wl", 458 | "-ld_classic", 459 | " ", 460 | ); 461 | REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; 462 | SDKROOT = iphoneos; 463 | }; 464 | name = Debug; 465 | }; 466 | 83CBBA211A601CBA00E9B192 /* Release */ = { 467 | isa = XCBuildConfiguration; 468 | buildSettings = { 469 | ALWAYS_SEARCH_USER_PATHS = NO; 470 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 471 | CLANG_CXX_LANGUAGE_STANDARD = "c++17"; 472 | CLANG_CXX_LIBRARY = "libc++"; 473 | CLANG_ENABLE_MODULES = YES; 474 | CLANG_ENABLE_OBJC_ARC = YES; 475 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 476 | CLANG_WARN_BOOL_CONVERSION = YES; 477 | CLANG_WARN_COMMA = YES; 478 | CLANG_WARN_CONSTANT_CONVERSION = YES; 479 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 480 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 481 | CLANG_WARN_EMPTY_BODY = YES; 482 | CLANG_WARN_ENUM_CONVERSION = YES; 483 | CLANG_WARN_INFINITE_RECURSION = YES; 484 | CLANG_WARN_INT_CONVERSION = YES; 485 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 486 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 487 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 488 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 489 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 490 | CLANG_WARN_STRICT_PROTOTYPES = YES; 491 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 492 | CLANG_WARN_UNREACHABLE_CODE = YES; 493 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 494 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 495 | COPY_PHASE_STRIP = YES; 496 | ENABLE_NS_ASSERTIONS = NO; 497 | ENABLE_STRICT_OBJC_MSGSEND = YES; 498 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; 499 | GCC_C_LANGUAGE_STANDARD = gnu99; 500 | GCC_NO_COMMON_BLOCKS = YES; 501 | GCC_PREPROCESSOR_DEFINITIONS = ( 502 | "$(inherited)", 503 | _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION, 504 | ); 505 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 506 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 507 | GCC_WARN_UNDECLARED_SELECTOR = YES; 508 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 509 | GCC_WARN_UNUSED_FUNCTION = YES; 510 | GCC_WARN_UNUSED_VARIABLE = YES; 511 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 512 | LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; 513 | LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; 514 | MTL_ENABLE_DEBUG_INFO = NO; 515 | OTHER_CFLAGS = "$(inherited)"; 516 | OTHER_CPLUSPLUSFLAGS = "$(inherited)"; 517 | OTHER_LDFLAGS = ( 518 | "$(inherited)", 519 | "-Wl", 520 | "-ld_classic", 521 | " ", 522 | ); 523 | REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; 524 | SDKROOT = iphoneos; 525 | VALIDATE_PRODUCT = YES; 526 | }; 527 | name = Release; 528 | }; 529 | /* End XCBuildConfiguration section */ 530 | 531 | /* Begin XCConfigurationList section */ 532 | 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ReactNativeThemeSwitcher" */ = { 533 | isa = XCConfigurationList; 534 | buildConfigurations = ( 535 | 13B07F941A680F5B00A75B9A /* Debug */, 536 | 13B07F951A680F5B00A75B9A /* Release */, 537 | ); 538 | defaultConfigurationIsVisible = 0; 539 | defaultConfigurationName = Release; 540 | }; 541 | 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "ReactNativeThemeSwitcher" */ = { 542 | isa = XCConfigurationList; 543 | buildConfigurations = ( 544 | 83CBBA201A601CBA00E9B192 /* Debug */, 545 | 83CBBA211A601CBA00E9B192 /* Release */, 546 | ); 547 | defaultConfigurationIsVisible = 0; 548 | defaultConfigurationName = Release; 549 | }; 550 | /* End XCConfigurationList section */ 551 | }; 552 | rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; 553 | } 554 | -------------------------------------------------------------------------------- /ios/ReactNativeThemeSwitcher.xcodeproj/xcshareddata/xcschemes/ReactNativeThemeSwitcher.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 53 | 55 | 61 | 62 | 63 | 64 | 70 | 72 | 78 | 79 | 80 | 81 | 83 | 84 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /ios/ReactNativeThemeSwitcher.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ios/ReactNativeThemeSwitcher/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import 4 | 5 | @interface AppDelegate : EXAppDelegateWrapper 6 | 7 | @end 8 | -------------------------------------------------------------------------------- /ios/ReactNativeThemeSwitcher/AppDelegate.mm: -------------------------------------------------------------------------------- 1 | #import "AppDelegate.h" 2 | 3 | #import 4 | #import 5 | 6 | @implementation AppDelegate 7 | 8 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 9 | { 10 | self.moduleName = @"main"; 11 | 12 | // You can add your custom initial props in the dictionary below. 13 | // They will be passed down to the ViewController used by React Native. 14 | self.initialProps = @{}; 15 | 16 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 17 | } 18 | 19 | - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge 20 | { 21 | #if DEBUG 22 | return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@".expo/.virtual-metro-entry"]; 23 | #else 24 | return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; 25 | #endif 26 | } 27 | 28 | // Linking API 29 | - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options { 30 | return [super application:application openURL:url options:options] || [RCTLinkingManager application:application openURL:url options:options]; 31 | } 32 | 33 | // Universal Links 34 | - (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray> * _Nullable))restorationHandler { 35 | BOOL result = [RCTLinkingManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler]; 36 | return [super application:application continueUserActivity:userActivity restorationHandler:restorationHandler] || result; 37 | } 38 | 39 | // Explicitly define remote notification delegates to ensure compatibility with some third-party libraries 40 | - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 41 | { 42 | return [super application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken]; 43 | } 44 | 45 | // Explicitly define remote notification delegates to ensure compatibility with some third-party libraries 46 | - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error 47 | { 48 | return [super application:application didFailToRegisterForRemoteNotificationsWithError:error]; 49 | } 50 | 51 | // Explicitly define remote notification delegates to ensure compatibility with some third-party libraries 52 | - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 53 | { 54 | return [super application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler]; 55 | } 56 | 57 | @end 58 | -------------------------------------------------------------------------------- /ios/ReactNativeThemeSwitcher/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/ios/ReactNativeThemeSwitcher/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/ReactNativeThemeSwitcher/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "filename": "App-Icon-1024x1024@1x.png", 5 | "idiom": "universal", 6 | "platform": "ios", 7 | "size": "1024x1024" 8 | } 9 | ], 10 | "info": { 11 | "version": 1, 12 | "author": "expo" 13 | } 14 | } -------------------------------------------------------------------------------- /ios/ReactNativeThemeSwitcher/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "expo" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /ios/ReactNativeThemeSwitcher/Images.xcassets/SplashScreen.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "idiom": "universal", 5 | "filename": "image.png", 6 | "scale": "1x" 7 | }, 8 | { 9 | "idiom": "universal", 10 | "scale": "2x" 11 | }, 12 | { 13 | "idiom": "universal", 14 | "scale": "3x" 15 | } 16 | ], 17 | "info": { 18 | "version": 1, 19 | "author": "expo" 20 | } 21 | } -------------------------------------------------------------------------------- /ios/ReactNativeThemeSwitcher/Images.xcassets/SplashScreen.imageset/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/ios/ReactNativeThemeSwitcher/Images.xcassets/SplashScreen.imageset/image.png -------------------------------------------------------------------------------- /ios/ReactNativeThemeSwitcher/Images.xcassets/SplashScreenBackground.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "idiom": "universal", 5 | "filename": "image.png", 6 | "scale": "1x" 7 | }, 8 | { 9 | "idiom": "universal", 10 | "scale": "2x" 11 | }, 12 | { 13 | "idiom": "universal", 14 | "scale": "3x" 15 | } 16 | ], 17 | "info": { 18 | "version": 1, 19 | "author": "expo" 20 | } 21 | } -------------------------------------------------------------------------------- /ios/ReactNativeThemeSwitcher/Images.xcassets/SplashScreenBackground.imageset/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4TWIGGERS/React-Native-Theme-Switcher/78cc53e4cf3f3ba54734142ebbe632db5747b886/ios/ReactNativeThemeSwitcher/Images.xcassets/SplashScreenBackground.imageset/image.png -------------------------------------------------------------------------------- /ios/ReactNativeThemeSwitcher/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CADisableMinimumFrameDurationOnPhone 6 | 7 | CFBundleDevelopmentRegion 8 | $(DEVELOPMENT_LANGUAGE) 9 | CFBundleDisplayName 10 | React-Native-Theme-Switcher 11 | CFBundleExecutable 12 | $(EXECUTABLE_NAME) 13 | CFBundleIdentifier 14 | $(PRODUCT_BUNDLE_IDENTIFIER) 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | $(PRODUCT_NAME) 19 | CFBundlePackageType 20 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 21 | CFBundleShortVersionString 22 | 1.0.0 23 | CFBundleSignature 24 | ???? 25 | CFBundleURLTypes 26 | 27 | 28 | CFBundleURLSchemes 29 | 30 | com.4twiggers.theme-switcher 31 | 32 | 33 | 34 | CFBundleVersion 35 | 1 36 | LSRequiresIPhoneOS 37 | 38 | NSAppTransportSecurity 39 | 40 | NSAllowsArbitraryLoads 41 | 42 | NSExceptionDomains 43 | 44 | localhost 45 | 46 | NSExceptionAllowsInsecureHTTPLoads 47 | 48 | 49 | 50 | 51 | UILaunchStoryboardName 52 | SplashScreen 53 | UIRequiredDeviceCapabilities 54 | 55 | armv7 56 | 57 | UIRequiresFullScreen 58 | 59 | UIStatusBarStyle 60 | UIStatusBarStyleDefault 61 | UISupportedInterfaceOrientations 62 | 63 | UIInterfaceOrientationPortrait 64 | UIInterfaceOrientationPortraitUpsideDown 65 | 66 | UISupportedInterfaceOrientations~ipad 67 | 68 | UIInterfaceOrientationPortrait 69 | UIInterfaceOrientationPortraitUpsideDown 70 | UIInterfaceOrientationLandscapeLeft 71 | UIInterfaceOrientationLandscapeRight 72 | 73 | UIUserInterfaceStyle 74 | Light 75 | UIViewControllerBasedStatusBarAppearance 76 | 77 | 78 | -------------------------------------------------------------------------------- /ios/ReactNativeThemeSwitcher/ReactNativeThemeSwitcher-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Use this file to import your target's public headers that you would like to expose to Swift. 3 | // 4 | -------------------------------------------------------------------------------- /ios/ReactNativeThemeSwitcher/ReactNativeThemeSwitcher.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | aps-environment 6 | development 7 | 8 | -------------------------------------------------------------------------------- /ios/ReactNativeThemeSwitcher/SplashScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /ios/ReactNativeThemeSwitcher/Supporting/Expo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | EXUpdatesCheckOnLaunch 6 | ALWAYS 7 | EXUpdatesEnabled 8 | 9 | EXUpdatesLaunchWaitMs 10 | 0 11 | EXUpdatesSDKVersion 12 | 49.0.0 13 | 14 | -------------------------------------------------------------------------------- /ios/ReactNativeThemeSwitcher/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char * argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | 11 | -------------------------------------------------------------------------------- /ios/ReactNativeThemeSwitcher/noop-file.swift: -------------------------------------------------------------------------------- 1 | // 2 | // @generated 3 | // A blank Swift file must be created for native modules with Swift files to work correctly. 4 | // 5 | -------------------------------------------------------------------------------- /metro.config.js: -------------------------------------------------------------------------------- 1 | // Learn more https://docs.expo.io/guides/customizing-metro 2 | const { getDefaultConfig } = require('expo/metro-config'); 3 | 4 | module.exports = getDefaultConfig(__dirname); 5 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-native-theme-switcher", 3 | "version": "0.0.1", 4 | "scripts": { 5 | "start": "expo start --dev-client", 6 | "android": "expo run:android", 7 | "ios": "expo run:ios", 8 | "web": "expo start --web" 9 | }, 10 | "dependencies": { 11 | "@react-native-masked-view/masked-view": "0.2.9", 12 | "expo": "^49.0.13", 13 | "expo-font": "~11.4.0", 14 | "expo-splash-screen": "~0.20.5", 15 | "expo-status-bar": "~1.6.0", 16 | "react": "18.2.0", 17 | "react-native": "0.72.6", 18 | "react-native-mmkv": "^2.10.2", 19 | "react-native-reanimated": "~3.3.0", 20 | "react-native-svg": "13.9.0", 21 | "react-native-view-shot": "3.7.0", 22 | "valtio": "^1.11.2" 23 | }, 24 | "devDependencies": { 25 | "@babel/core": "^7.20.0" 26 | }, 27 | "private": true 28 | } 29 | -------------------------------------------------------------------------------- /store/store.js: -------------------------------------------------------------------------------- 1 | import { proxy } from 'valtio'; 2 | 3 | const store = proxy({ mode: 'light', isAnimating: false }); 4 | 5 | export { store }; 6 | -------------------------------------------------------------------------------- /utils/dimensions.js: -------------------------------------------------------------------------------- 1 | import { Dimensions } from 'react-native'; 2 | 3 | const screenDimensions = Dimensions.get('screen'); 4 | const windowDimensions = Dimensions.get('window'); 5 | 6 | const [SCREEN_WIDTH, SCREEN_HEIGHT] = [ 7 | screenDimensions.width, 8 | screenDimensions.height, 9 | ]; 10 | const [WINDOW_WIDTH, WINDOW_HEIGHT] = [ 11 | windowDimensions.width, 12 | windowDimensions.height, 13 | ]; 14 | 15 | export { SCREEN_WIDTH, SCREEN_HEIGHT, WINDOW_WIDTH, WINDOW_HEIGHT }; 16 | -------------------------------------------------------------------------------- /utils/mmkv.js: -------------------------------------------------------------------------------- 1 | import { MMKV } from 'react-native-mmkv'; 2 | 3 | const storage = new MMKV({ 4 | id: 'storage', 5 | isDarkMode: false, 6 | }); 7 | 8 | const isDarkMode = () => storage.getBoolean('isDarkMode'); 9 | 10 | export { isDarkMode, storage }; 11 | -------------------------------------------------------------------------------- /utils/svgs.js: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import Svg, { Path, G, Defs, ClipPath } from 'react-native-svg'; 3 | 4 | const HomeIcon = (props) => ( 5 | 10 | 14 | 15 | ); 16 | 17 | const BellIcon = (props) => ( 18 | 23 | 27 | 28 | ); 29 | 30 | const SearchIcon = (props) => ( 31 | 36 | 40 | 41 | ); 42 | 43 | const GroupIcon = (props) => ( 44 | 49 | 53 | 54 | ); 55 | 56 | const EnvelopeIcon = (props) => ( 57 | 62 | 66 | 67 | ); 68 | 69 | const TwiggersIcon = (props) => ( 70 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | ); 87 | 88 | export { 89 | HomeIcon, 90 | BellIcon, 91 | SearchIcon, 92 | GroupIcon, 93 | EnvelopeIcon, 94 | TwiggersIcon, 95 | }; 96 | --------------------------------------------------------------------------------