react-native-edge-to-edge 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/README.md +63 -78
  2. package/android/src/main/java/com/zoontek/rnedgetoedge/EdgeToEdgeModuleImpl.kt +59 -15
  3. package/android/src/main/java/com/zoontek/rnedgetoedge/EdgeToEdgePackage.kt +9 -12
  4. package/android/src/main/res/values/attrs.xml +5 -0
  5. package/android/src/main/res/values/public.xml +2 -0
  6. package/android/src/main/res/values/styles.xml +21 -3
  7. package/android/src/main/res/values-v27/colors.xml +1 -2
  8. package/android/src/main/res/values-v27/styles.xml +3 -3
  9. package/android/src/main/res/values-v29/styles.xml +9 -9
  10. package/android/src/main/res/values-v30/styles.xml +9 -9
  11. package/dist/commonjs/SystemBars.js +18 -7
  12. package/dist/commonjs/SystemBars.js.map +1 -1
  13. package/dist/commonjs/expo.js +11 -2
  14. package/dist/commonjs/expo.js.map +1 -1
  15. package/dist/commonjs/specs/NativeEdgeToEdgeModule.js.map +1 -1
  16. package/dist/module/SystemBars.js +18 -7
  17. package/dist/module/SystemBars.js.map +1 -1
  18. package/dist/module/expo.js +11 -2
  19. package/dist/module/expo.js.map +1 -1
  20. package/dist/module/specs/NativeEdgeToEdgeModule.js.map +1 -1
  21. package/dist/typescript/SystemBars.d.ts.map +1 -1
  22. package/dist/typescript/expo.d.ts +6 -4
  23. package/dist/typescript/expo.d.ts.map +1 -1
  24. package/dist/typescript/specs/NativeEdgeToEdgeModule.d.ts +1 -0
  25. package/dist/typescript/specs/NativeEdgeToEdgeModule.d.ts.map +1 -1
  26. package/dist/typescript/types.d.ts +8 -5
  27. package/dist/typescript/types.d.ts.map +1 -1
  28. package/package.json +3 -3
  29. package/src/SystemBars.ts +27 -6
  30. package/src/expo.ts +19 -6
  31. package/src/specs/NativeEdgeToEdgeModule.ts +1 -0
  32. package/src/types.ts +5 -2
  33. package/android/src/main/res/values-v29/colors.xml +0 -4
@@ -27,9 +27,10 @@ function mergeEntriesStack(entriesStack) {
27
27
  }, {
28
28
  statusBarStyle: undefined,
29
29
  statusBarHidden: undefined,
30
+ navigationBarStyle: undefined,
30
31
  navigationBarHidden: undefined
31
32
  });
32
- if (mergedEntry.statusBarStyle == null && mergedEntry.statusBarHidden == null && mergedEntry.navigationBarHidden == null) {
33
+ if (mergedEntry.statusBarStyle == null && mergedEntry.statusBarHidden == null && mergedEntry.navigationBarStyle == null && mergedEntry.navigationBarHidden == null) {
33
34
  return null;
34
35
  } else {
35
36
  return mergedEntry;
@@ -41,8 +42,9 @@ function mergeEntriesStack(entriesStack) {
41
42
  */
42
43
  function createStackEntry(props) {
43
44
  return {
44
- statusBarStyle: props.style,
45
+ statusBarStyle: typeof props.style === "string" ? props.style : props.style?.statusBar,
45
46
  statusBarHidden: typeof props.hidden === "boolean" ? props.hidden : props.hidden?.statusBar,
47
+ navigationBarStyle: typeof props.style === "string" ? props.style : props.style?.navigationBar,
46
48
  navigationBarHidden: typeof props.hidden === "boolean" ? props.hidden : props.hidden?.navigationBar
47
49
  };
48
50
  }
@@ -69,12 +71,15 @@ function updateEntriesStack() {
69
71
  statusBarHidden,
70
72
  navigationBarHidden
71
73
  } = mergedEntries;
72
- const statusBarStyle = mergedEntries.statusBarStyle === "auto" ? getColorScheme() === "light" ? "dark" : "light" : mergedEntries.statusBarStyle;
73
- if (currentMergedEntries?.statusBarStyle !== statusBarStyle || currentMergedEntries?.statusBarHidden !== statusBarHidden || currentMergedEntries?.navigationBarHidden !== navigationBarHidden) {
74
+ const autoBarStyle = getColorScheme() === "light" ? "dark" : "light";
75
+ const statusBarStyle = mergedEntries.statusBarStyle === "auto" ? autoBarStyle : mergedEntries.statusBarStyle;
76
+ const navigationBarStyle = mergedEntries.navigationBarStyle === "auto" ? autoBarStyle : mergedEntries.navigationBarStyle;
77
+ if (currentMergedEntries?.statusBarStyle !== statusBarStyle || currentMergedEntries?.statusBarHidden !== statusBarHidden || currentMergedEntries?.navigationBarStyle !== navigationBarStyle || currentMergedEntries?.navigationBarHidden !== navigationBarHidden) {
74
78
  if (_reactNative.Platform.OS === "android") {
75
79
  _NativeEdgeToEdgeModule.default?.setSystemBarsConfig({
76
80
  statusBarStyle,
77
81
  statusBarHidden,
82
+ navigationBarStyle,
78
83
  navigationBarHidden
79
84
  });
80
85
  } else {
@@ -90,6 +95,7 @@ function updateEntriesStack() {
90
95
  currentMergedEntries = {
91
96
  statusBarStyle,
92
97
  statusBarHidden,
98
+ navigationBarStyle,
93
99
  navigationBarHidden
94
100
  };
95
101
  } else {
@@ -144,15 +150,20 @@ function SystemBars({
144
150
  hidden,
145
151
  style
146
152
  }) {
153
+ const statusBarStyle = typeof style === "string" ? style : style?.statusBar;
147
154
  const statusBarHidden = typeof hidden === "boolean" ? hidden : hidden?.statusBar;
155
+ const navigationBarStyle = typeof style === "string" ? style : style?.navigationBar;
148
156
  const navigationBarHidden = typeof hidden === "boolean" ? hidden : hidden?.navigationBar;
149
157
  const stableProps = (0, _react.useMemo)(() => ({
158
+ style: statusBarStyle === navigationBarStyle ? statusBarStyle : {
159
+ statusBar: statusBarStyle,
160
+ navigationBar: navigationBarStyle
161
+ },
150
162
  hidden: statusBarHidden === navigationBarHidden ? statusBarHidden : {
151
163
  statusBar: statusBarHidden,
152
164
  navigationBar: navigationBarHidden
153
- },
154
- style
155
- }), [style, statusBarHidden, navigationBarHidden]);
165
+ }
166
+ }), [statusBarStyle, navigationBarStyle, statusBarHidden, navigationBarHidden]);
156
167
  const colorScheme = (0, _reactNative.useColorScheme)();
157
168
  const stackEntryRef = (0, _react.useRef)(null);
158
169
  (0, _react.useEffect)(() => {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_NativeEdgeToEdgeModule","_interopRequireDefault","e","__esModule","default","getColorScheme","Appearance","mergeEntriesStack","entriesStack","mergedEntry","reduce","prev","cur","prop","statusBarStyle","undefined","statusBarHidden","navigationBarHidden","createStackEntry","props","style","hidden","statusBar","navigationBar","updateImmediate","currentMergedEntries","updateEntriesStack","Platform","OS","clearImmediate","setImmediate","mergedEntries","NativeEdgeToEdgeModule","setSystemBarsConfig","StatusBar","setBarStyle","setHidden","pushStackEntry","entry","push","popStackEntry","index","indexOf","splice","replaceStackEntry","newEntry","SystemBars","stableProps","useMemo","colorScheme","useColorScheme","stackEntryRef","useRef","useEffect","current"],"sourceRoot":"../../src","sources":["SystemBars.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_NativeEdgeToEdgeModule","_interopRequireDefault","e","__esModule","default","getColorScheme","Appearance","mergeEntriesStack","entriesStack","mergedEntry","reduce","prev","cur","prop","statusBarStyle","undefined","statusBarHidden","navigationBarStyle","navigationBarHidden","createStackEntry","props","style","statusBar","hidden","navigationBar","updateImmediate","currentMergedEntries","updateEntriesStack","Platform","OS","clearImmediate","setImmediate","mergedEntries","autoBarStyle","NativeEdgeToEdgeModule","setSystemBarsConfig","StatusBar","setBarStyle","setHidden","pushStackEntry","entry","push","popStackEntry","index","indexOf","splice","replaceStackEntry","newEntry","SystemBars","stableProps","useMemo","colorScheme","useColorScheme","stackEntryRef","useRef","useEffect","current"],"sourceRoot":"../../src","sources":["SystemBars.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,uBAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAoE,SAAAG,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAGpE,SAASG,cAAcA,CAAA,EAAqB;EAC1C,OAAOC,uBAAU,EAAED,cAAc,CAAC,CAAC,IAAI,OAAO;AAChD;;AAEA;AACA;AACA;AACA,SAASE,iBAAiBA,CACxBC,YAA+B,EACP;EACxB,MAAMC,WAAW,GAAGD,YAAY,CAACE,MAAM,CACrC,CAACC,IAAI,EAAEC,GAAG,KAAK;IACb,KAAK,MAAMC,IAAI,IAAID,GAAG,EAAE;MACtB,IAAIA,GAAG,CAACC,IAAI,CAA0B,IAAI,IAAI,EAAE;QAC9C;QACAF,IAAI,CAACE,IAAI,CAAC,GAAGD,GAAG,CAACC,IAAI,CAAC;MACxB;IACF;IACA,OAAOF,IAAI;EACb,CAAC,EACD;IACEG,cAAc,EAAEC,SAAS;IACzBC,eAAe,EAAED,SAAS;IAC1BE,kBAAkB,EAAEF,SAAS;IAC7BG,mBAAmB,EAAEH;EACvB,CACF,CAAC;EAED,IACEN,WAAW,CAACK,cAAc,IAAI,IAAI,IAClCL,WAAW,CAACO,eAAe,IAAI,IAAI,IACnCP,WAAW,CAACQ,kBAAkB,IAAI,IAAI,IACtCR,WAAW,CAACS,mBAAmB,IAAI,IAAI,EACvC;IACA,OAAO,IAAI;EACb,CAAC,MAAM;IACL,OAAOT,WAAW;EACpB;AACF;;AAEA;AACA;AACA;AACA,SAASU,gBAAgBA,CAACC,KAAsB,EAAmB;EACjE,OAAO;IACLN,cAAc,EACZ,OAAOM,KAAK,CAACC,KAAK,KAAK,QAAQ,GAAGD,KAAK,CAACC,KAAK,GAAGD,KAAK,CAACC,KAAK,EAAEC,SAAS;IACxEN,eAAe,EACb,OAAOI,KAAK,CAACG,MAAM,KAAK,SAAS,GAC7BH,KAAK,CAACG,MAAM,GACZH,KAAK,CAACG,MAAM,EAAED,SAAS;IAC7BL,kBAAkB,EAChB,OAAOG,KAAK,CAACC,KAAK,KAAK,QAAQ,GAC3BD,KAAK,CAACC,KAAK,GACXD,KAAK,CAACC,KAAK,EAAEG,aAAa;IAChCN,mBAAmB,EACjB,OAAOE,KAAK,CAACG,MAAM,KAAK,SAAS,GAC7BH,KAAK,CAACG,MAAM,GACZH,KAAK,CAACG,MAAM,EAAEC;EACtB,CAAC;AACH;AAEA,MAAMhB,YAA+B,GAAG,EAAE;;AAE1C;AACA,IAAIiB,eAAwC,GAAG,IAAI;;AAEnD;AACA,IAAIC,oBAKI,GAAG,IAAI;;AAEf;AACA;AACA;AACA,SAASC,kBAAkBA,CAAA,EAAG;EAC5B,IAAIC,qBAAQ,CAACC,EAAE,KAAK,SAAS,IAAID,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;IACtD,IAAIJ,eAAe,IAAI,IAAI,EAAE;MAC3BK,cAAc,CAACL,eAAe,CAAC;IACjC;IAEAA,eAAe,GAAGM,YAAY,CAAC,MAAM;MACnC,MAAMC,aAAa,GAAGzB,iBAAiB,CAACC,YAAY,CAAC;MAErD,IAAIwB,aAAa,IAAI,IAAI,EAAE;QACzB,MAAM;UAAEhB,eAAe;UAAEE;QAAoB,CAAC,GAAGc,aAAa;QAC9D,MAAMC,YAAY,GAAG5B,cAAc,CAAC,CAAC,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO;QAEpE,MAAMS,cAA4C,GAChDkB,aAAa,CAAClB,cAAc,KAAK,MAAM,GACnCmB,YAAY,GACZD,aAAa,CAAClB,cAAc;QAElC,MAAMG,kBAAgD,GACpDe,aAAa,CAACf,kBAAkB,KAAK,MAAM,GACvCgB,YAAY,GACZD,aAAa,CAACf,kBAAkB;QAEtC,IACES,oBAAoB,EAAEZ,cAAc,KAAKA,cAAc,IACvDY,oBAAoB,EAAEV,eAAe,KAAKA,eAAe,IACzDU,oBAAoB,EAAET,kBAAkB,KAAKA,kBAAkB,IAC/DS,oBAAoB,EAAER,mBAAmB,KAAKA,mBAAmB,EACjE;UACA,IAAIU,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;YAC7BK,+BAAsB,EAAEC,mBAAmB,CAAC;cAC1CrB,cAAc;cACdE,eAAe;cACfC,kBAAkB;cAClBC;YACF,CAAC,CAAC;UACJ,CAAC,MAAM;YACL;YACA,IAAIJ,cAAc,IAAI,IAAI,EAAE;cAC1BsB,sBAAS,CAACC,WAAW,CAAC,GAAGvB,cAAc,UAAU,EAAE,IAAI,CAAC;YAC1D;YACA,IAAIE,eAAe,IAAI,IAAI,EAAE;cAC3BoB,sBAAS,CAACE,SAAS,CAACtB,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;YAChD;UACF;QACF;QAEAU,oBAAoB,GAAG;UACrBZ,cAAc;UACdE,eAAe;UACfC,kBAAkB;UAClBC;QACF,CAAC;MACH,CAAC,MAAM;QACLQ,oBAAoB,GAAG,IAAI;MAC7B;IACF,CAAC,CAAC;EACJ;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASa,cAAcA,CAACnB,KAAsB,EAAmB;EAC/D,MAAMoB,KAAK,GAAGrB,gBAAgB,CAACC,KAAK,CAAC;EACrCZ,YAAY,CAACiC,IAAI,CAACD,KAAK,CAAC;EACxBb,kBAAkB,CAAC,CAAC;EACpB,OAAOa,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASE,aAAaA,CAACF,KAAsB,EAAQ;EACnD,MAAMG,KAAK,GAAGnC,YAAY,CAACoC,OAAO,CAACJ,KAAK,CAAC;EACzC,IAAIG,KAAK,KAAK,CAAC,CAAC,EAAE;IAChBnC,YAAY,CAACqC,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;EAC/B;EACAhB,kBAAkB,CAAC,CAAC;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASmB,iBAAiBA,CACxBN,KAAsB,EACtBpB,KAAsB,EACL;EACjB,MAAM2B,QAAQ,GAAG5B,gBAAgB,CAACC,KAAK,CAAC;EACxC,MAAMuB,KAAK,GAAGnC,YAAY,CAACoC,OAAO,CAACJ,KAAK,CAAC;EACzC,IAAIG,KAAK,KAAK,CAAC,CAAC,EAAE;IAChBnC,YAAY,CAACmC,KAAK,CAAC,GAAGI,QAAQ;EAChC;EACApB,kBAAkB,CAAC,CAAC;EACpB,OAAOoB,QAAQ;AACjB;AAEO,SAASC,UAAUA,CAAC;EAAEzB,MAAM;EAAEF;AAAuB,CAAC,EAAE;EAC7D,MAAMP,cAAc,GAAG,OAAOO,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGA,KAAK,EAAEC,SAAS;EAC3E,MAAMN,eAAe,GACnB,OAAOO,MAAM,KAAK,SAAS,GAAGA,MAAM,GAAGA,MAAM,EAAED,SAAS;EAC1D,MAAML,kBAAkB,GACtB,OAAOI,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGA,KAAK,EAAEG,aAAa;EAC1D,MAAMN,mBAAmB,GACvB,OAAOK,MAAM,KAAK,SAAS,GAAGA,MAAM,GAAGA,MAAM,EAAEC,aAAa;EAE9D,MAAMyB,WAAW,GAAG,IAAAC,cAAO,EACzB,OAAO;IACL7B,KAAK,EACHP,cAAc,KAAKG,kBAAkB,GACjCH,cAAc,GACd;MAAEQ,SAAS,EAAER,cAAc;MAAEU,aAAa,EAAEP;IAAmB,CAAC;IACtEM,MAAM,EACJP,eAAe,KAAKE,mBAAmB,GACnCF,eAAe,GACf;MAAEM,SAAS,EAAEN,eAAe;MAAEQ,aAAa,EAAEN;IAAoB;EACzE,CAAC,CAAC,EACF,CAACJ,cAAc,EAAEG,kBAAkB,EAAED,eAAe,EAAEE,mBAAmB,CAC3E,CAAC;EAED,MAAMiC,WAAW,GAAG,IAAAC,2BAAc,EAAC,CAAC;EACpC,MAAMC,aAAa,GAAG,IAAAC,aAAM,EAAyB,IAAI,CAAC;EAE1D,IAAAC,gBAAS,EAAC,MAAM;IACd;IACA;IACA;IACA;IACAF,aAAa,CAACG,OAAO,GAAGjB,cAAc,CAACU,WAAW,CAAC;IAEnD,OAAO,MAAM;MACX;MACA;MACA,IAAII,aAAa,CAACG,OAAO,EAAE;QACzBd,aAAa,CAACW,aAAa,CAACG,OAAO,CAAC;MACtC;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,IAAAD,gBAAS,EAAC,MAAM;IACd,IAAIF,aAAa,CAACG,OAAO,EAAE;MACzBH,aAAa,CAACG,OAAO,GAAGV,iBAAiB,CACvCO,aAAa,CAACG,OAAO,EACrBP,WACF,CAAC;IACH;EACF,CAAC,EAAE,CAACE,WAAW,EAAEF,WAAW,CAAC,CAAC;EAE9B,OAAO,IAAI;AACb;AAEAD,UAAU,CAACT,cAAc,GAAGA,cAAc;AAC1CS,UAAU,CAACN,aAAa,GAAGA,aAAa;AACxCM,UAAU,CAACF,iBAAiB,GAAGA,iBAAiB","ignoreList":[]}
@@ -14,7 +14,7 @@ const withAndroidEdgeToEdgeTheme = (config, props = {}) => {
14
14
  "Material2.Light": "Theme.EdgeToEdge.Material2.Light",
15
15
  "Material3.Light": "Theme.EdgeToEdge.Material3.Light"
16
16
  };
17
- const ignoreList = new Set(["android:enforceNavigationBarContrast", "android:enforceStatusBarContrast", "android:fitsSystemWindows", "android:navigationBarColor", "android:statusBarColor", "android:windowDrawsSystemBarBackgrounds", "android:windowLayoutInDisplayCutoutMode", "android:windowLightNavigationBar", "android:windowLightStatusBar", "android:windowTranslucentNavigation", "android:windowTranslucentStatus"]);
17
+ const cleanupList = new Set(["enforceNavigationBarContrast", "android:enforceNavigationBarContrast", "android:enforceStatusBarContrast", "android:fitsSystemWindows", "android:navigationBarColor", "android:statusBarColor", "android:windowDrawsSystemBarBackgrounds", "android:windowLayoutInDisplayCutoutMode", "android:windowLightNavigationBar", "android:windowLightStatusBar", "android:windowTranslucentNavigation", "android:windowTranslucentStatus"]);
18
18
  return (0, _configPlugins.withAndroidStyles)(config, config => {
19
19
  const {
20
20
  androidStatusBar = {},
@@ -27,13 +27,22 @@ const withAndroidEdgeToEdgeTheme = (config, props = {}) => {
27
27
  android = {}
28
28
  } = props;
29
29
  const {
30
+ enforceNavigationBarContrast,
30
31
  parentTheme = "Default"
31
32
  } = android;
32
33
  config.modResults.resources.style = config.modResults.resources.style?.map(style => {
33
34
  if (style.$.name === "AppTheme") {
34
35
  style.$.parent = themes[parentTheme] ?? themes["Default"];
35
36
  if (style.item != null) {
36
- style.item = style.item.filter(item => !ignoreList.has(item.$.name));
37
+ style.item = style.item.filter(item => !cleanupList.has(item.$.name));
38
+ }
39
+ if (enforceNavigationBarContrast === false) {
40
+ style.item.push({
41
+ $: {
42
+ name: "enforceNavigationBarContrast"
43
+ },
44
+ _: String(false)
45
+ });
37
46
  }
38
47
  if (barStyle != null) {
39
48
  style.item.push({
@@ -1 +1 @@
1
- {"version":3,"names":["_configPlugins","require","withAndroidEdgeToEdgeTheme","config","props","themes","Default","Material2","Material3","Light","ignoreList","Set","withAndroidStyles","androidStatusBar","userInterfaceStyle","barStyle","android","parentTheme","modResults","resources","style","map","$","name","parent","item","filter","has","push","_","String","_default","exports","default","createRunOncePlugin"],"sourceRoot":"../../src","sources":["expo.ts"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAgBA,MAAMC,0BAA+C,GAAGA,CACtDC,MAAM,EACNC,KAAK,GAAG,CAAC,CAAC,KACP;EACH,MAAMC,MAA6B,GAAG;IACpCC,OAAO,EAAE,kBAAkB;IAC3BC,SAAS,EAAE,4BAA4B;IACvCC,SAAS,EAAE,4BAA4B;IAEvCC,KAAK,EAAE,wBAAwB;IAC/B,iBAAiB,EAAE,kCAAkC;IACrD,iBAAiB,EAAE;EACrB,CAAC;EAED,MAAMC,UAAU,GAAG,IAAIC,GAAG,CAAC,CACzB,sCAAsC,EACtC,kCAAkC,EAClC,2BAA2B,EAC3B,4BAA4B,EAC5B,wBAAwB,EACxB,yCAAyC,EACzC,yCAAyC,EACzC,kCAAkC,EAClC,8BAA8B,EAC9B,qCAAqC,EACrC,iCAAiC,CAClC,CAAC;EAEF,OAAO,IAAAC,gCAAiB,EAACT,MAAM,EAAGA,MAAM,IAAK;IAC3C,MAAM;MAAEU,gBAAgB,GAAG,CAAC,CAAC;MAAEC,kBAAkB,GAAG;IAAQ,CAAC,GAAGX,MAAM;IACtE,MAAM;MAAEY;IAAS,CAAC,GAAGF,gBAAgB;IACrC,MAAM;MAAEG,OAAO,GAAG,CAAC;IAAE,CAAC,GAAGZ,KAAK;IAC9B,MAAM;MAAEa,WAAW,GAAG;IAAU,CAAC,GAAGD,OAAO;IAE3Cb,MAAM,CAACe,UAAU,CAACC,SAAS,CAACC,KAAK,GAAGjB,MAAM,CAACe,UAAU,CAACC,SAAS,CAACC,KAAK,EAAEC,GAAG,CACvED,KAAK,IAAmB;MACvB,IAAIA,KAAK,CAACE,CAAC,CAACC,IAAI,KAAK,UAAU,EAAE;QAC/BH,KAAK,CAACE,CAAC,CAACE,MAAM,GAAGnB,MAAM,CAACY,WAAW,CAAC,IAAIZ,MAAM,CAAC,SAAS,CAAC;QAEzD,IAAIe,KAAK,CAACK,IAAI,IAAI,IAAI,EAAE;UACtBL,KAAK,CAACK,IAAI,GAAGL,KAAK,CAACK,IAAI,CAACC,MAAM,CAC3BD,IAAI,IAAK,CAACf,UAAU,CAACiB,GAAG,CAACF,IAAI,CAACH,CAAC,CAACC,IAAI,CACvC,CAAC;QACH;QAEA,IAAIR,QAAQ,IAAI,IAAI,EAAE;UACpBK,KAAK,CAACK,IAAI,CAACG,IAAI,CAAC;YACdN,CAAC,EAAE;cAAEC,IAAI,EAAE;YAA+B,CAAC;YAC3CM,CAAC,EAAEC,MAAM,CAACf,QAAQ,KAAK,cAAc;UACvC,CAAC,CAAC;QACJ,CAAC,MAAM,IAAID,kBAAkB,KAAK,WAAW,EAAE;UAC7CM,KAAK,CAACK,IAAI,CAACG,IAAI,CAAC;YACdN,CAAC,EAAE;cAAEC,IAAI,EAAE;YAA+B,CAAC;YAC3CM,CAAC,EAAEC,MAAM,CAAChB,kBAAkB,KAAK,OAAO;UAC1C,CAAC,CAAC;QACJ;MACF;MAEA,OAAOM,KAAK;IACd,CACF,CAAC;IAED,OAAOjB,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAAC,IAAA4B,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEa,IAAAC,kCAAmB,EAChChC,0BAA0B,EAC1B,2BACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_configPlugins","require","withAndroidEdgeToEdgeTheme","config","props","themes","Default","Material2","Material3","Light","cleanupList","Set","withAndroidStyles","androidStatusBar","userInterfaceStyle","barStyle","android","enforceNavigationBarContrast","parentTheme","modResults","resources","style","map","$","name","parent","item","filter","has","push","_","String","_default","exports","default","createRunOncePlugin"],"sourceRoot":"../../src","sources":["expo.ts"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAqBA,MAAMC,0BAA+C,GAAGA,CACtDC,MAAM,EACNC,KAAK,GAAG,CAAC,CAAC,KACP;EACH,MAAMC,MAAmC,GAAG;IAC1CC,OAAO,EAAE,kBAAkB;IAC3BC,SAAS,EAAE,4BAA4B;IACvCC,SAAS,EAAE,4BAA4B;IAEvCC,KAAK,EAAE,wBAAwB;IAC/B,iBAAiB,EAAE,kCAAkC;IACrD,iBAAiB,EAAE;EACrB,CAAC;EAED,MAAMC,WAAW,GAAG,IAAIC,GAAG,CAAC,CAC1B,8BAA8B,EAC9B,sCAAsC,EACtC,kCAAkC,EAClC,2BAA2B,EAC3B,4BAA4B,EAC5B,wBAAwB,EACxB,yCAAyC,EACzC,yCAAyC,EACzC,kCAAkC,EAClC,8BAA8B,EAC9B,qCAAqC,EACrC,iCAAiC,CAClC,CAAC;EAEF,OAAO,IAAAC,gCAAiB,EAACT,MAAM,EAAGA,MAAM,IAAK;IAC3C,MAAM;MAAEU,gBAAgB,GAAG,CAAC,CAAC;MAAEC,kBAAkB,GAAG;IAAQ,CAAC,GAAGX,MAAM;IACtE,MAAM;MAAEY;IAAS,CAAC,GAAGF,gBAAgB;IACrC,MAAM;MAAEG,OAAO,GAAG,CAAC;IAAE,CAAC,GAAGZ,KAAK;IAC9B,MAAM;MAAEa,4BAA4B;MAAEC,WAAW,GAAG;IAAU,CAAC,GAAGF,OAAO;IAEzEb,MAAM,CAACgB,UAAU,CAACC,SAAS,CAACC,KAAK,GAAGlB,MAAM,CAACgB,UAAU,CAACC,SAAS,CAACC,KAAK,EAAEC,GAAG,CACvED,KAAK,IAAmB;MACvB,IAAIA,KAAK,CAACE,CAAC,CAACC,IAAI,KAAK,UAAU,EAAE;QAC/BH,KAAK,CAACE,CAAC,CAACE,MAAM,GAAGpB,MAAM,CAACa,WAAW,CAAC,IAAIb,MAAM,CAAC,SAAS,CAAC;QAEzD,IAAIgB,KAAK,CAACK,IAAI,IAAI,IAAI,EAAE;UACtBL,KAAK,CAACK,IAAI,GAAGL,KAAK,CAACK,IAAI,CAACC,MAAM,CAC3BD,IAAI,IAAK,CAAChB,WAAW,CAACkB,GAAG,CAACF,IAAI,CAACH,CAAC,CAACC,IAAI,CACxC,CAAC;QACH;QAEA,IAAIP,4BAA4B,KAAK,KAAK,EAAE;UAC1CI,KAAK,CAACK,IAAI,CAACG,IAAI,CAAC;YACdN,CAAC,EAAE;cAAEC,IAAI,EAAE;YAA+B,CAAC;YAC3CM,CAAC,EAAEC,MAAM,CAAC,KAAK;UACjB,CAAC,CAAC;QACJ;QAEA,IAAIhB,QAAQ,IAAI,IAAI,EAAE;UACpBM,KAAK,CAACK,IAAI,CAACG,IAAI,CAAC;YACdN,CAAC,EAAE;cAAEC,IAAI,EAAE;YAA+B,CAAC;YAC3CM,CAAC,EAAEC,MAAM,CAAChB,QAAQ,KAAK,cAAc;UACvC,CAAC,CAAC;QACJ,CAAC,MAAM,IAAID,kBAAkB,KAAK,WAAW,EAAE;UAC7CO,KAAK,CAACK,IAAI,CAACG,IAAI,CAAC;YACdN,CAAC,EAAE;cAAEC,IAAI,EAAE;YAA+B,CAAC;YAC3CM,CAAC,EAAEC,MAAM,CAACjB,kBAAkB,KAAK,OAAO;UAC1C,CAAC,CAAC;QACJ;MACF;MAEA,OAAOO,KAAK;IACd,CACF,CAAC;IAED,OAAOlB,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAAC,IAAA6B,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEa,IAAAC,kCAAmB,EAChCjC,0BAA0B,EAC1B,2BACF,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","NativeModule","TurboModuleRegistry","get","Appearance","addChangeListener","onColorSchemeChange","_default","exports","default"],"sourceRoot":"../../../src","sources":["specs/NativeEdgeToEdgeModule.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAaA,MAAMC,YAAY,GAAGC,gCAAmB,CAACC,GAAG,CAAO,cAAc,CAAC;AAElE,IAAIF,YAAY,IAAI,IAAI,EAAE;EACxBG,uBAAU,CAACC,iBAAiB,CAAC,MAAM;IACjCJ,YAAY,CAACK,mBAAmB,CAAC,CAAC;EACpC,CAAC,CAAC;AACJ;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcR,YAAY","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","NativeModule","TurboModuleRegistry","get","Appearance","addChangeListener","onColorSchemeChange","_default","exports","default"],"sourceRoot":"../../../src","sources":["specs/NativeEdgeToEdgeModule.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAcA,MAAMC,YAAY,GAAGC,gCAAmB,CAACC,GAAG,CAAO,cAAc,CAAC;AAElE,IAAIF,YAAY,IAAI,IAAI,EAAE;EACxBG,uBAAU,CAACC,iBAAiB,CAAC,MAAM;IACjCJ,YAAY,CAACK,mBAAmB,CAAC,CAAC;EACpC,CAAC,CAAC;AACJ;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcR,YAAY","ignoreList":[]}
@@ -22,9 +22,10 @@ function mergeEntriesStack(entriesStack) {
22
22
  }, {
23
23
  statusBarStyle: undefined,
24
24
  statusBarHidden: undefined,
25
+ navigationBarStyle: undefined,
25
26
  navigationBarHidden: undefined
26
27
  });
27
- if (mergedEntry.statusBarStyle == null && mergedEntry.statusBarHidden == null && mergedEntry.navigationBarHidden == null) {
28
+ if (mergedEntry.statusBarStyle == null && mergedEntry.statusBarHidden == null && mergedEntry.navigationBarStyle == null && mergedEntry.navigationBarHidden == null) {
28
29
  return null;
29
30
  } else {
30
31
  return mergedEntry;
@@ -36,8 +37,9 @@ function mergeEntriesStack(entriesStack) {
36
37
  */
37
38
  function createStackEntry(props) {
38
39
  return {
39
- statusBarStyle: props.style,
40
+ statusBarStyle: typeof props.style === "string" ? props.style : props.style?.statusBar,
40
41
  statusBarHidden: typeof props.hidden === "boolean" ? props.hidden : props.hidden?.statusBar,
42
+ navigationBarStyle: typeof props.style === "string" ? props.style : props.style?.navigationBar,
41
43
  navigationBarHidden: typeof props.hidden === "boolean" ? props.hidden : props.hidden?.navigationBar
42
44
  };
43
45
  }
@@ -64,12 +66,15 @@ function updateEntriesStack() {
64
66
  statusBarHidden,
65
67
  navigationBarHidden
66
68
  } = mergedEntries;
67
- const statusBarStyle = mergedEntries.statusBarStyle === "auto" ? getColorScheme() === "light" ? "dark" : "light" : mergedEntries.statusBarStyle;
68
- if (currentMergedEntries?.statusBarStyle !== statusBarStyle || currentMergedEntries?.statusBarHidden !== statusBarHidden || currentMergedEntries?.navigationBarHidden !== navigationBarHidden) {
69
+ const autoBarStyle = getColorScheme() === "light" ? "dark" : "light";
70
+ const statusBarStyle = mergedEntries.statusBarStyle === "auto" ? autoBarStyle : mergedEntries.statusBarStyle;
71
+ const navigationBarStyle = mergedEntries.navigationBarStyle === "auto" ? autoBarStyle : mergedEntries.navigationBarStyle;
72
+ if (currentMergedEntries?.statusBarStyle !== statusBarStyle || currentMergedEntries?.statusBarHidden !== statusBarHidden || currentMergedEntries?.navigationBarStyle !== navigationBarStyle || currentMergedEntries?.navigationBarHidden !== navigationBarHidden) {
69
73
  if (Platform.OS === "android") {
70
74
  NativeEdgeToEdgeModule?.setSystemBarsConfig({
71
75
  statusBarStyle,
72
76
  statusBarHidden,
77
+ navigationBarStyle,
73
78
  navigationBarHidden
74
79
  });
75
80
  } else {
@@ -85,6 +90,7 @@ function updateEntriesStack() {
85
90
  currentMergedEntries = {
86
91
  statusBarStyle,
87
92
  statusBarHidden,
93
+ navigationBarStyle,
88
94
  navigationBarHidden
89
95
  };
90
96
  } else {
@@ -139,15 +145,20 @@ export function SystemBars({
139
145
  hidden,
140
146
  style
141
147
  }) {
148
+ const statusBarStyle = typeof style === "string" ? style : style?.statusBar;
142
149
  const statusBarHidden = typeof hidden === "boolean" ? hidden : hidden?.statusBar;
150
+ const navigationBarStyle = typeof style === "string" ? style : style?.navigationBar;
143
151
  const navigationBarHidden = typeof hidden === "boolean" ? hidden : hidden?.navigationBar;
144
152
  const stableProps = useMemo(() => ({
153
+ style: statusBarStyle === navigationBarStyle ? statusBarStyle : {
154
+ statusBar: statusBarStyle,
155
+ navigationBar: navigationBarStyle
156
+ },
145
157
  hidden: statusBarHidden === navigationBarHidden ? statusBarHidden : {
146
158
  statusBar: statusBarHidden,
147
159
  navigationBar: navigationBarHidden
148
- },
149
- style
150
- }), [style, statusBarHidden, navigationBarHidden]);
160
+ }
161
+ }), [statusBarStyle, navigationBarStyle, statusBarHidden, navigationBarHidden]);
151
162
  const colorScheme = useColorScheme();
152
163
  const stackEntryRef = useRef(null);
153
164
  useEffect(() => {
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useMemo","useRef","Appearance","Platform","StatusBar","useColorScheme","NativeEdgeToEdgeModule","getColorScheme","mergeEntriesStack","entriesStack","mergedEntry","reduce","prev","cur","prop","statusBarStyle","undefined","statusBarHidden","navigationBarHidden","createStackEntry","props","style","hidden","statusBar","navigationBar","updateImmediate","currentMergedEntries","updateEntriesStack","OS","clearImmediate","setImmediate","mergedEntries","setSystemBarsConfig","setBarStyle","setHidden","pushStackEntry","entry","push","popStackEntry","index","indexOf","splice","replaceStackEntry","newEntry","SystemBars","stableProps","colorScheme","stackEntryRef","current"],"sourceRoot":"../../src","sources":["SystemBars.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useMemo","useRef","Appearance","Platform","StatusBar","useColorScheme","NativeEdgeToEdgeModule","getColorScheme","mergeEntriesStack","entriesStack","mergedEntry","reduce","prev","cur","prop","statusBarStyle","undefined","statusBarHidden","navigationBarStyle","navigationBarHidden","createStackEntry","props","style","statusBar","hidden","navigationBar","updateImmediate","currentMergedEntries","updateEntriesStack","OS","clearImmediate","setImmediate","mergedEntries","autoBarStyle","setSystemBarsConfig","setBarStyle","setHidden","pushStackEntry","entry","push","popStackEntry","index","indexOf","splice","replaceStackEntry","newEntry","SystemBars","stableProps","colorScheme","stackEntryRef","current"],"sourceRoot":"../../src","sources":["SystemBars.ts"],"mappings":"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","ignoreList":[]}
@@ -10,7 +10,7 @@ const withAndroidEdgeToEdgeTheme = (config, props = {}) => {
10
10
  "Material2.Light": "Theme.EdgeToEdge.Material2.Light",
11
11
  "Material3.Light": "Theme.EdgeToEdge.Material3.Light"
12
12
  };
13
- const ignoreList = new Set(["android:enforceNavigationBarContrast", "android:enforceStatusBarContrast", "android:fitsSystemWindows", "android:navigationBarColor", "android:statusBarColor", "android:windowDrawsSystemBarBackgrounds", "android:windowLayoutInDisplayCutoutMode", "android:windowLightNavigationBar", "android:windowLightStatusBar", "android:windowTranslucentNavigation", "android:windowTranslucentStatus"]);
13
+ const cleanupList = new Set(["enforceNavigationBarContrast", "android:enforceNavigationBarContrast", "android:enforceStatusBarContrast", "android:fitsSystemWindows", "android:navigationBarColor", "android:statusBarColor", "android:windowDrawsSystemBarBackgrounds", "android:windowLayoutInDisplayCutoutMode", "android:windowLightNavigationBar", "android:windowLightStatusBar", "android:windowTranslucentNavigation", "android:windowTranslucentStatus"]);
14
14
  return withAndroidStyles(config, config => {
15
15
  const {
16
16
  androidStatusBar = {},
@@ -23,13 +23,22 @@ const withAndroidEdgeToEdgeTheme = (config, props = {}) => {
23
23
  android = {}
24
24
  } = props;
25
25
  const {
26
+ enforceNavigationBarContrast,
26
27
  parentTheme = "Default"
27
28
  } = android;
28
29
  config.modResults.resources.style = config.modResults.resources.style?.map(style => {
29
30
  if (style.$.name === "AppTheme") {
30
31
  style.$.parent = themes[parentTheme] ?? themes["Default"];
31
32
  if (style.item != null) {
32
- style.item = style.item.filter(item => !ignoreList.has(item.$.name));
33
+ style.item = style.item.filter(item => !cleanupList.has(item.$.name));
34
+ }
35
+ if (enforceNavigationBarContrast === false) {
36
+ style.item.push({
37
+ $: {
38
+ name: "enforceNavigationBarContrast"
39
+ },
40
+ _: String(false)
41
+ });
33
42
  }
34
43
  if (barStyle != null) {
35
44
  style.item.push({
@@ -1 +1 @@
1
- {"version":3,"names":["createRunOncePlugin","withAndroidStyles","withAndroidEdgeToEdgeTheme","config","props","themes","Default","Material2","Material3","Light","ignoreList","Set","androidStatusBar","userInterfaceStyle","barStyle","android","parentTheme","modResults","resources","style","map","$","name","parent","item","filter","has","push","_","String"],"sourceRoot":"../../src","sources":["expo.ts"],"mappings":";;AAAA,SAEEA,mBAAmB,EACnBC,iBAAiB,QACZ,sBAAsB;AAY7B,MAAMC,0BAA+C,GAAGA,CACtDC,MAAM,EACNC,KAAK,GAAG,CAAC,CAAC,KACP;EACH,MAAMC,MAA6B,GAAG;IACpCC,OAAO,EAAE,kBAAkB;IAC3BC,SAAS,EAAE,4BAA4B;IACvCC,SAAS,EAAE,4BAA4B;IAEvCC,KAAK,EAAE,wBAAwB;IAC/B,iBAAiB,EAAE,kCAAkC;IACrD,iBAAiB,EAAE;EACrB,CAAC;EAED,MAAMC,UAAU,GAAG,IAAIC,GAAG,CAAC,CACzB,sCAAsC,EACtC,kCAAkC,EAClC,2BAA2B,EAC3B,4BAA4B,EAC5B,wBAAwB,EACxB,yCAAyC,EACzC,yCAAyC,EACzC,kCAAkC,EAClC,8BAA8B,EAC9B,qCAAqC,EACrC,iCAAiC,CAClC,CAAC;EAEF,OAAOV,iBAAiB,CAACE,MAAM,EAAGA,MAAM,IAAK;IAC3C,MAAM;MAAES,gBAAgB,GAAG,CAAC,CAAC;MAAEC,kBAAkB,GAAG;IAAQ,CAAC,GAAGV,MAAM;IACtE,MAAM;MAAEW;IAAS,CAAC,GAAGF,gBAAgB;IACrC,MAAM;MAAEG,OAAO,GAAG,CAAC;IAAE,CAAC,GAAGX,KAAK;IAC9B,MAAM;MAAEY,WAAW,GAAG;IAAU,CAAC,GAAGD,OAAO;IAE3CZ,MAAM,CAACc,UAAU,CAACC,SAAS,CAACC,KAAK,GAAGhB,MAAM,CAACc,UAAU,CAACC,SAAS,CAACC,KAAK,EAAEC,GAAG,CACvED,KAAK,IAAmB;MACvB,IAAIA,KAAK,CAACE,CAAC,CAACC,IAAI,KAAK,UAAU,EAAE;QAC/BH,KAAK,CAACE,CAAC,CAACE,MAAM,GAAGlB,MAAM,CAACW,WAAW,CAAC,IAAIX,MAAM,CAAC,SAAS,CAAC;QAEzD,IAAIc,KAAK,CAACK,IAAI,IAAI,IAAI,EAAE;UACtBL,KAAK,CAACK,IAAI,GAAGL,KAAK,CAACK,IAAI,CAACC,MAAM,CAC3BD,IAAI,IAAK,CAACd,UAAU,CAACgB,GAAG,CAACF,IAAI,CAACH,CAAC,CAACC,IAAI,CACvC,CAAC;QACH;QAEA,IAAIR,QAAQ,IAAI,IAAI,EAAE;UACpBK,KAAK,CAACK,IAAI,CAACG,IAAI,CAAC;YACdN,CAAC,EAAE;cAAEC,IAAI,EAAE;YAA+B,CAAC;YAC3CM,CAAC,EAAEC,MAAM,CAACf,QAAQ,KAAK,cAAc;UACvC,CAAC,CAAC;QACJ,CAAC,MAAM,IAAID,kBAAkB,KAAK,WAAW,EAAE;UAC7CM,KAAK,CAACK,IAAI,CAACG,IAAI,CAAC;YACdN,CAAC,EAAE;cAAEC,IAAI,EAAE;YAA+B,CAAC;YAC3CM,CAAC,EAAEC,MAAM,CAAChB,kBAAkB,KAAK,OAAO;UAC1C,CAAC,CAAC;QACJ;MACF;MAEA,OAAOM,KAAK;IACd,CACF,CAAC;IAED,OAAOhB,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAED,eAAeH,mBAAmB,CAChCE,0BAA0B,EAC1B,2BACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createRunOncePlugin","withAndroidStyles","withAndroidEdgeToEdgeTheme","config","props","themes","Default","Material2","Material3","Light","cleanupList","Set","androidStatusBar","userInterfaceStyle","barStyle","android","enforceNavigationBarContrast","parentTheme","modResults","resources","style","map","$","name","parent","item","filter","has","push","_","String"],"sourceRoot":"../../src","sources":["expo.ts"],"mappings":";;AAAA,SAEEA,mBAAmB,EACnBC,iBAAiB,QACZ,sBAAsB;AAiB7B,MAAMC,0BAA+C,GAAGA,CACtDC,MAAM,EACNC,KAAK,GAAG,CAAC,CAAC,KACP;EACH,MAAMC,MAAmC,GAAG;IAC1CC,OAAO,EAAE,kBAAkB;IAC3BC,SAAS,EAAE,4BAA4B;IACvCC,SAAS,EAAE,4BAA4B;IAEvCC,KAAK,EAAE,wBAAwB;IAC/B,iBAAiB,EAAE,kCAAkC;IACrD,iBAAiB,EAAE;EACrB,CAAC;EAED,MAAMC,WAAW,GAAG,IAAIC,GAAG,CAAC,CAC1B,8BAA8B,EAC9B,sCAAsC,EACtC,kCAAkC,EAClC,2BAA2B,EAC3B,4BAA4B,EAC5B,wBAAwB,EACxB,yCAAyC,EACzC,yCAAyC,EACzC,kCAAkC,EAClC,8BAA8B,EAC9B,qCAAqC,EACrC,iCAAiC,CAClC,CAAC;EAEF,OAAOV,iBAAiB,CAACE,MAAM,EAAGA,MAAM,IAAK;IAC3C,MAAM;MAAES,gBAAgB,GAAG,CAAC,CAAC;MAAEC,kBAAkB,GAAG;IAAQ,CAAC,GAAGV,MAAM;IACtE,MAAM;MAAEW;IAAS,CAAC,GAAGF,gBAAgB;IACrC,MAAM;MAAEG,OAAO,GAAG,CAAC;IAAE,CAAC,GAAGX,KAAK;IAC9B,MAAM;MAAEY,4BAA4B;MAAEC,WAAW,GAAG;IAAU,CAAC,GAAGF,OAAO;IAEzEZ,MAAM,CAACe,UAAU,CAACC,SAAS,CAACC,KAAK,GAAGjB,MAAM,CAACe,UAAU,CAACC,SAAS,CAACC,KAAK,EAAEC,GAAG,CACvED,KAAK,IAAmB;MACvB,IAAIA,KAAK,CAACE,CAAC,CAACC,IAAI,KAAK,UAAU,EAAE;QAC/BH,KAAK,CAACE,CAAC,CAACE,MAAM,GAAGnB,MAAM,CAACY,WAAW,CAAC,IAAIZ,MAAM,CAAC,SAAS,CAAC;QAEzD,IAAIe,KAAK,CAACK,IAAI,IAAI,IAAI,EAAE;UACtBL,KAAK,CAACK,IAAI,GAAGL,KAAK,CAACK,IAAI,CAACC,MAAM,CAC3BD,IAAI,IAAK,CAACf,WAAW,CAACiB,GAAG,CAACF,IAAI,CAACH,CAAC,CAACC,IAAI,CACxC,CAAC;QACH;QAEA,IAAIP,4BAA4B,KAAK,KAAK,EAAE;UAC1CI,KAAK,CAACK,IAAI,CAACG,IAAI,CAAC;YACdN,CAAC,EAAE;cAAEC,IAAI,EAAE;YAA+B,CAAC;YAC3CM,CAAC,EAAEC,MAAM,CAAC,KAAK;UACjB,CAAC,CAAC;QACJ;QAEA,IAAIhB,QAAQ,IAAI,IAAI,EAAE;UACpBM,KAAK,CAACK,IAAI,CAACG,IAAI,CAAC;YACdN,CAAC,EAAE;cAAEC,IAAI,EAAE;YAA+B,CAAC;YAC3CM,CAAC,EAAEC,MAAM,CAAChB,QAAQ,KAAK,cAAc;UACvC,CAAC,CAAC;QACJ,CAAC,MAAM,IAAID,kBAAkB,KAAK,WAAW,EAAE;UAC7CO,KAAK,CAACK,IAAI,CAACG,IAAI,CAAC;YACdN,CAAC,EAAE;cAAEC,IAAI,EAAE;YAA+B,CAAC;YAC3CM,CAAC,EAAEC,MAAM,CAACjB,kBAAkB,KAAK,OAAO;UAC1C,CAAC,CAAC;QACJ;MACF;MAEA,OAAOO,KAAK;IACd,CACF,CAAC;IAED,OAAOjB,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAED,eAAeH,mBAAmB,CAChCE,0BAA0B,EAC1B,2BACF,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["Appearance","TurboModuleRegistry","NativeModule","get","addChangeListener","onColorSchemeChange"],"sourceRoot":"../../../src","sources":["specs/NativeEdgeToEdgeModule.ts"],"mappings":";;AACA,SAASA,UAAU,EAAEC,mBAAmB,QAAQ,cAAc;AAa9D,MAAMC,YAAY,GAAGD,mBAAmB,CAACE,GAAG,CAAO,cAAc,CAAC;AAElE,IAAID,YAAY,IAAI,IAAI,EAAE;EACxBF,UAAU,CAACI,iBAAiB,CAAC,MAAM;IACjCF,YAAY,CAACG,mBAAmB,CAAC,CAAC;EACpC,CAAC,CAAC;AACJ;AAEA,eAAeH,YAAY","ignoreList":[]}
1
+ {"version":3,"names":["Appearance","TurboModuleRegistry","NativeModule","get","addChangeListener","onColorSchemeChange"],"sourceRoot":"../../../src","sources":["specs/NativeEdgeToEdgeModule.ts"],"mappings":";;AACA,SAASA,UAAU,EAAEC,mBAAmB,QAAQ,cAAc;AAc9D,MAAMC,YAAY,GAAGD,mBAAmB,CAACE,GAAG,CAAO,cAAc,CAAC;AAElE,IAAID,YAAY,IAAI,IAAI,EAAE;EACxBF,UAAU,CAACI,iBAAiB,CAAC,MAAM;IACjCF,YAAY,CAACG,mBAAmB,CAAC,CAAC;EACpC,CAAC,CAAC;AACJ;AAEA,eAAeH,YAAY","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"SystemBars.d.ts","sourceRoot":"","sources":["../../src/SystemBars.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AA0K3D,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,eAAe,QA8C5D;yBA9Ce,UAAU;gCAvCK,eAAe,KAAG,eAAe;+BAYlC,eAAe,KAAG,IAAI;mCAe3C,eAAe,SACf,eAAe,KACrB,eAAe"}
1
+ {"version":3,"file":"SystemBars.d.ts","sourceRoot":"","sources":["../../src/SystemBars.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAyL3D,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,eAAe,QAoD5D;yBApDe,UAAU;gCAvCK,eAAe,KAAG,eAAe;+BAYlC,eAAe,KAAG,IAAI;mCAe3C,eAAe,SACf,eAAe,KACrB,eAAe"}
@@ -1,9 +1,11 @@
1
1
  import { ConfigPlugin } from "@expo/config-plugins";
2
- type Theme = "Default" | "Material2" | "Material3" | "Light" | "Material2.Light" | "Material3.Light";
2
+ type ParentTheme = "Default" | "Material2" | "Material3" | "Light" | "Material2.Light" | "Material3.Light";
3
+ type AndroidProps = {
4
+ enforceNavigationBarContrast?: boolean;
5
+ parentTheme?: ParentTheme;
6
+ };
3
7
  type Props = {
4
- android?: {
5
- parentTheme?: Theme;
6
- };
8
+ android?: AndroidProps;
7
9
  } | undefined;
8
10
  declare const _default: ConfigPlugin<Props>;
9
11
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"expo.d.ts","sourceRoot":"","sources":["../../src/expo.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGb,MAAM,sBAAsB,CAAC;AAE9B,KAAK,KAAK,GACN,SAAS,GACT,WAAW,GACX,WAAW,GACX,OAAO,GACP,iBAAiB,GACjB,iBAAiB,CAAC;AAEtB,KAAK,KAAK,GAAG;IAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,KAAK,CAAA;KAAE,CAAA;CAAE,GAAG,SAAS,CAAC;;AAoE/D,wBAGE"}
1
+ {"version":3,"file":"expo.d.ts","sourceRoot":"","sources":["../../src/expo.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGb,MAAM,sBAAsB,CAAC;AAE9B,KAAK,WAAW,GACZ,SAAS,GACT,WAAW,GACX,WAAW,GACX,OAAO,GACP,iBAAiB,GACjB,iBAAiB,CAAC;AAEtB,KAAK,YAAY,GAAG;IAClB,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF,KAAK,KAAK,GAAG;IAAE,OAAO,CAAC,EAAE,YAAY,CAAA;CAAE,GAAG,SAAS,CAAC;;AA4EpD,wBAGE"}
@@ -3,6 +3,7 @@ type SystemBarsConfig = {
3
3
  statusBarHidden: boolean | undefined;
4
4
  statusBarStyle: string | undefined;
5
5
  navigationBarHidden: boolean | undefined;
6
+ navigationBarStyle: string | undefined;
6
7
  };
7
8
  export interface Spec extends TurboModule {
8
9
  onColorSchemeChange(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeEdgeToEdgeModule.d.ts","sourceRoot":"","sources":["../../../src/specs/NativeEdgeToEdgeModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,KAAK,gBAAgB,GAAG;IACtB,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,mBAAmB,EAAE,OAAO,GAAG,SAAS,CAAC;CAC1C,CAAC;AAEF,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,mBAAmB,IAAI,IAAI,CAAC;IAC5B,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACrD;AAED,QAAA,MAAM,YAAY,aAAgD,CAAC;AAQnE,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"NativeEdgeToEdgeModule.d.ts","sourceRoot":"","sources":["../../../src/specs/NativeEdgeToEdgeModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,KAAK,gBAAgB,GAAG;IACtB,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,mBAAmB,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC,CAAC;AAEF,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,mBAAmB,IAAI,IAAI,CAAC;IAC5B,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACrD;AAED,QAAA,MAAM,YAAY,aAAgD,CAAC;AAQnE,eAAe,YAAY,CAAC"}
@@ -1,14 +1,17 @@
1
+ type SystemBarsProp<T> = T | {
2
+ statusBar?: T;
3
+ navigationBar?: T;
4
+ };
1
5
  export type SystemBarStyle = "auto" | "light" | "dark";
2
6
  export type SystemBarsEntry = {
3
7
  statusBarHidden: boolean | undefined;
4
8
  statusBarStyle: SystemBarStyle | undefined;
5
9
  navigationBarHidden: boolean | undefined;
10
+ navigationBarStyle: SystemBarStyle | undefined;
6
11
  };
7
12
  export type SystemBarsProps = {
8
- style?: SystemBarStyle;
9
- hidden?: boolean | {
10
- statusBar?: boolean;
11
- navigationBar?: boolean;
12
- };
13
+ style?: SystemBarsProp<SystemBarStyle>;
14
+ hidden?: SystemBarsProp<boolean>;
13
15
  };
16
+ export {};
14
17
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEvD,MAAM,MAAM,eAAe,GAAG;IAC5B,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,cAAc,EAAE,cAAc,GAAG,SAAS,CAAC;IAC3C,mBAAmB,EAAE,OAAO,GAAG,SAAS,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,GAAG;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACrE,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG;IAAE,SAAS,CAAC,EAAE,CAAC,CAAC;IAAC,aAAa,CAAC,EAAE,CAAC,CAAA;CAAE,CAAC;AAElE,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEvD,MAAM,MAAM,eAAe,GAAG;IAC5B,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,cAAc,EAAE,cAAc,GAAG,SAAS,CAAC;IAC3C,mBAAmB,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,kBAAkB,EAAE,cAAc,GAAG,SAAS,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;CAClC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-edge-to-edge",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "license": "MIT",
5
5
  "description": "Effortlessly enable edge-to-edge display in React Native",
6
6
  "author": "Mathieu Acthernoene <zoontek@gmail.com>",
@@ -53,7 +53,7 @@
53
53
  },
54
54
  "peerDependencies": {
55
55
  "react": ">=18.2.0",
56
- "react-native": ">=0.73.0"
56
+ "react-native": ">=0.74.0"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@babel/core": "^7.25.2",
@@ -63,7 +63,7 @@
63
63
  "prettier": "^3.4.2",
64
64
  "prettier-plugin-organize-imports": "^4.1.0",
65
65
  "react": "18.3.1",
66
- "react-native": "0.76.5",
66
+ "react-native": "0.77.0-rc.6",
67
67
  "react-native-builder-bob": "^0.35.2",
68
68
  "typescript": "^5.7.2"
69
69
  },
package/src/SystemBars.ts CHANGED
@@ -26,6 +26,7 @@ function mergeEntriesStack(
26
26
  {
27
27
  statusBarStyle: undefined,
28
28
  statusBarHidden: undefined,
29
+ navigationBarStyle: undefined,
29
30
  navigationBarHidden: undefined,
30
31
  },
31
32
  );
@@ -33,6 +34,7 @@ function mergeEntriesStack(
33
34
  if (
34
35
  mergedEntry.statusBarStyle == null &&
35
36
  mergedEntry.statusBarHidden == null &&
37
+ mergedEntry.navigationBarStyle == null &&
36
38
  mergedEntry.navigationBarHidden == null
37
39
  ) {
38
40
  return null;
@@ -46,11 +48,16 @@ function mergeEntriesStack(
46
48
  */
47
49
  function createStackEntry(props: SystemBarsProps): SystemBarsEntry {
48
50
  return {
49
- statusBarStyle: props.style,
51
+ statusBarStyle:
52
+ typeof props.style === "string" ? props.style : props.style?.statusBar,
50
53
  statusBarHidden:
51
54
  typeof props.hidden === "boolean"
52
55
  ? props.hidden
53
56
  : props.hidden?.statusBar,
57
+ navigationBarStyle:
58
+ typeof props.style === "string"
59
+ ? props.style
60
+ : props.style?.navigationBar,
54
61
  navigationBarHidden:
55
62
  typeof props.hidden === "boolean"
56
63
  ? props.hidden
@@ -67,6 +74,7 @@ let updateImmediate: NodeJS.Immediate | null = null;
67
74
  let currentMergedEntries: {
68
75
  statusBarStyle: "light" | "dark" | undefined;
69
76
  statusBarHidden: boolean | undefined;
77
+ navigationBarStyle: "light" | "dark" | undefined;
70
78
  navigationBarHidden: boolean | undefined;
71
79
  } | null = null;
72
80
 
@@ -84,23 +92,29 @@ function updateEntriesStack() {
84
92
 
85
93
  if (mergedEntries != null) {
86
94
  const { statusBarHidden, navigationBarHidden } = mergedEntries;
95
+ const autoBarStyle = getColorScheme() === "light" ? "dark" : "light";
87
96
 
88
97
  const statusBarStyle: "light" | "dark" | undefined =
89
98
  mergedEntries.statusBarStyle === "auto"
90
- ? getColorScheme() === "light"
91
- ? "dark"
92
- : "light"
99
+ ? autoBarStyle
93
100
  : mergedEntries.statusBarStyle;
94
101
 
102
+ const navigationBarStyle: "light" | "dark" | undefined =
103
+ mergedEntries.navigationBarStyle === "auto"
104
+ ? autoBarStyle
105
+ : mergedEntries.navigationBarStyle;
106
+
95
107
  if (
96
108
  currentMergedEntries?.statusBarStyle !== statusBarStyle ||
97
109
  currentMergedEntries?.statusBarHidden !== statusBarHidden ||
110
+ currentMergedEntries?.navigationBarStyle !== navigationBarStyle ||
98
111
  currentMergedEntries?.navigationBarHidden !== navigationBarHidden
99
112
  ) {
100
113
  if (Platform.OS === "android") {
101
114
  NativeEdgeToEdgeModule?.setSystemBarsConfig({
102
115
  statusBarStyle,
103
116
  statusBarHidden,
117
+ navigationBarStyle,
104
118
  navigationBarHidden,
105
119
  });
106
120
  } else {
@@ -117,6 +131,7 @@ function updateEntriesStack() {
117
131
  currentMergedEntries = {
118
132
  statusBarStyle,
119
133
  statusBarHidden,
134
+ navigationBarStyle,
120
135
  navigationBarHidden,
121
136
  };
122
137
  } else {
@@ -172,20 +187,26 @@ function replaceStackEntry(
172
187
  }
173
188
 
174
189
  export function SystemBars({ hidden, style }: SystemBarsProps) {
190
+ const statusBarStyle = typeof style === "string" ? style : style?.statusBar;
175
191
  const statusBarHidden =
176
192
  typeof hidden === "boolean" ? hidden : hidden?.statusBar;
193
+ const navigationBarStyle =
194
+ typeof style === "string" ? style : style?.navigationBar;
177
195
  const navigationBarHidden =
178
196
  typeof hidden === "boolean" ? hidden : hidden?.navigationBar;
179
197
 
180
198
  const stableProps = useMemo<SystemBarsProps>(
181
199
  () => ({
200
+ style:
201
+ statusBarStyle === navigationBarStyle
202
+ ? statusBarStyle
203
+ : { statusBar: statusBarStyle, navigationBar: navigationBarStyle },
182
204
  hidden:
183
205
  statusBarHidden === navigationBarHidden
184
206
  ? statusBarHidden
185
207
  : { statusBar: statusBarHidden, navigationBar: navigationBarHidden },
186
- style,
187
208
  }),
188
- [style, statusBarHidden, navigationBarHidden],
209
+ [statusBarStyle, navigationBarStyle, statusBarHidden, navigationBarHidden],
189
210
  );
190
211
 
191
212
  const colorScheme = useColorScheme();
package/src/expo.ts CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  withAndroidStyles,
5
5
  } from "@expo/config-plugins";
6
6
 
7
- type Theme =
7
+ type ParentTheme =
8
8
  | "Default"
9
9
  | "Material2"
10
10
  | "Material3"
@@ -12,13 +12,18 @@ type Theme =
12
12
  | "Material2.Light"
13
13
  | "Material3.Light";
14
14
 
15
- type Props = { android?: { parentTheme?: Theme } } | undefined;
15
+ type AndroidProps = {
16
+ enforceNavigationBarContrast?: boolean;
17
+ parentTheme?: ParentTheme;
18
+ };
19
+
20
+ type Props = { android?: AndroidProps } | undefined;
16
21
 
17
22
  const withAndroidEdgeToEdgeTheme: ConfigPlugin<Props> = (
18
23
  config,
19
24
  props = {},
20
25
  ) => {
21
- const themes: Record<Theme, string> = {
26
+ const themes: Record<ParentTheme, string> = {
22
27
  Default: "Theme.EdgeToEdge",
23
28
  Material2: "Theme.EdgeToEdge.Material2",
24
29
  Material3: "Theme.EdgeToEdge.Material3",
@@ -28,7 +33,8 @@ const withAndroidEdgeToEdgeTheme: ConfigPlugin<Props> = (
28
33
  "Material3.Light": "Theme.EdgeToEdge.Material3.Light",
29
34
  };
30
35
 
31
- const ignoreList = new Set([
36
+ const cleanupList = new Set([
37
+ "enforceNavigationBarContrast",
32
38
  "android:enforceNavigationBarContrast",
33
39
  "android:enforceStatusBarContrast",
34
40
  "android:fitsSystemWindows",
@@ -46,7 +52,7 @@ const withAndroidEdgeToEdgeTheme: ConfigPlugin<Props> = (
46
52
  const { androidStatusBar = {}, userInterfaceStyle = "light" } = config;
47
53
  const { barStyle } = androidStatusBar;
48
54
  const { android = {} } = props;
49
- const { parentTheme = "Default" } = android;
55
+ const { enforceNavigationBarContrast, parentTheme = "Default" } = android;
50
56
 
51
57
  config.modResults.resources.style = config.modResults.resources.style?.map(
52
58
  (style): typeof style => {
@@ -55,10 +61,17 @@ const withAndroidEdgeToEdgeTheme: ConfigPlugin<Props> = (
55
61
 
56
62
  if (style.item != null) {
57
63
  style.item = style.item.filter(
58
- (item) => !ignoreList.has(item.$.name),
64
+ (item) => !cleanupList.has(item.$.name),
59
65
  );
60
66
  }
61
67
 
68
+ if (enforceNavigationBarContrast === false) {
69
+ style.item.push({
70
+ $: { name: "enforceNavigationBarContrast" },
71
+ _: String(false),
72
+ });
73
+ }
74
+
62
75
  if (barStyle != null) {
63
76
  style.item.push({
64
77
  $: { name: "android:windowLightStatusBar" },
@@ -5,6 +5,7 @@ type SystemBarsConfig = {
5
5
  statusBarHidden: boolean | undefined;
6
6
  statusBarStyle: string | undefined;
7
7
  navigationBarHidden: boolean | undefined;
8
+ navigationBarStyle: string | undefined;
8
9
  };
9
10
 
10
11
  export interface Spec extends TurboModule {
package/src/types.ts CHANGED
@@ -1,12 +1,15 @@
1
+ type SystemBarsProp<T> = T | { statusBar?: T; navigationBar?: T };
2
+
1
3
  export type SystemBarStyle = "auto" | "light" | "dark";
2
4
 
3
5
  export type SystemBarsEntry = {
4
6
  statusBarHidden: boolean | undefined;
5
7
  statusBarStyle: SystemBarStyle | undefined;
6
8
  navigationBarHidden: boolean | undefined;
9
+ navigationBarStyle: SystemBarStyle | undefined;
7
10
  };
8
11
 
9
12
  export type SystemBarsProps = {
10
- style?: SystemBarStyle;
11
- hidden?: boolean | { statusBar?: boolean; navigationBar?: boolean };
13
+ style?: SystemBarsProp<SystemBarStyle>;
14
+ hidden?: SystemBarsProp<boolean>;
12
15
  };