1import { ExpoConfig } from '@expo/config-types'; 2 3import { assignColorValue } from './Colors'; 4import { assignStylesValue, getAppThemeLightNoActionBarGroup } from './Styles'; 5import { ConfigPlugin } from '../Plugin.types'; 6import { withAndroidColors, withAndroidStyles } from '../plugins/android-plugins'; 7 8const COLOR_PRIMARY_KEY = 'colorPrimary'; 9const DEFAULT_PRIMARY_COLOR = '#023c69'; 10 11export const withPrimaryColor: ConfigPlugin = (config) => { 12 config = withPrimaryColorColors(config); 13 config = withPrimaryColorStyles(config); 14 return config; 15}; 16 17export const withPrimaryColorColors: ConfigPlugin = (config) => { 18 return withAndroidColors(config, (config) => { 19 config.modResults = assignColorValue(config.modResults, { 20 name: COLOR_PRIMARY_KEY, 21 value: getPrimaryColor(config), 22 }); 23 return config; 24 }); 25}; 26 27export const withPrimaryColorStyles: ConfigPlugin = (config) => { 28 return withAndroidStyles(config, (config) => { 29 config.modResults = assignStylesValue(config.modResults, { 30 add: !!getPrimaryColor(config), 31 parent: getAppThemeLightNoActionBarGroup(), 32 name: COLOR_PRIMARY_KEY, 33 value: `@color/${COLOR_PRIMARY_KEY}`, 34 }); 35 return config; 36 }); 37}; 38 39export function getPrimaryColor(config: Pick<ExpoConfig, 'primaryColor'>) { 40 return config.primaryColor ?? DEFAULT_PRIMARY_COLOR; 41} 42