diff --git a/app.config.js b/app.config.js index dbec5619..528c8436 100644 --- a/app.config.js +++ b/app.config.js @@ -64,6 +64,8 @@ module.exports = function (config) { icon: './assets/icon.png', userInterfaceStyle: 'automatic', splash: SPLASH_CONFIG, + // hsl(211, 99%, 53%), same as palette.default.brandText + primaryColor: '#1083fe', ios: { supportsTablet: false, bundleIdentifier: 'xyz.blueskyweb.app', @@ -180,6 +182,7 @@ module.exports = function (config) { './plugins/withAndroidManifestPlugin.js', './plugins/withAndroidManifestFCMIconPlugin.js', './plugins/withAndroidStylesWindowBackgroundPlugin.js', + './plugins/withAndroidStylesAccentColorPlugin.js', './plugins/withAndroidSplashScreenStatusBarTranslucentPlugin.js', './plugins/shareExtension/withShareExtensions.js', ].filter(Boolean), diff --git a/plugins/withAndroidStylesAccentColorPlugin.js b/plugins/withAndroidStylesAccentColorPlugin.js new file mode 100644 index 00000000..c4555378 --- /dev/null +++ b/plugins/withAndroidStylesAccentColorPlugin.js @@ -0,0 +1,25 @@ +/** + * @file Set accent color to primaryColor from app.config.js. + * This way we get a sane default color for spinners, text inputs, etc. + */ + +const {withAndroidStyles, AndroidConfig} = require('@expo/config-plugins') + +module.exports = function withAndroidStylesAccentColorPlugin(appConfig) { + return withAndroidStyles(appConfig, function (decoratedAppConfig) { + try { + decoratedAppConfig.modResults = AndroidConfig.Styles.assignStylesValue( + decoratedAppConfig.modResults, + { + add: true, + parent: AndroidConfig.Styles.getAppThemeLightNoActionBarGroup(), + name: 'colorAccent', + value: '@color/colorPrimary', + }, + ) + } catch (e) { + console.error(`withAndroidStylesAccentColorPlugin failed`, e) + } + return decoratedAppConfig + }) +}