import { NavigationBar } from '@capgo/capacitor-navigation-bar';
// Set navigation bar colorawait NavigationBar.setColor({ color: '#FF0000', // Red color darkButtons: false // Use light buttons});
Install the package
npm i @capgo/capacitor-navigation-bar
pnpm add @capgo/capacitor-navigation-bar
yarn add @capgo/capacitor-navigation-bar
bun add @capgo/capacitor-navigation-bar
Sync with native projects
npx cap sync
pnpm cap sync
yarn cap sync
bunx cap sync
Configure the plugin
import { NavigationBar } from '@capgo/capacitor-navigation-bar';
// Set navigation bar colorawait NavigationBar.setColor({ color: '#FF0000', // Red color darkButtons: false // Use light buttons});
// Set color based on themeconst isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;
await NavigationBar.setColor({ color: isDarkMode ? '#000000' : '#FFFFFF', darkButtons: !isDarkMode});
Minimum Requirements:
No additional setup required in AndroidManifest.xml.
This plugin is Android-only. iOS does not have a customizable navigation bar.
Advanced usage
import { NavigationBar } from '@capgo/capacitor-navigation-bar';
export class ThemeService { // Set transparent navigation bar async setTransparent() { await NavigationBar.setColor({ color: '#00000000', // Transparent darkButtons: true }); }
// Match app theme async matchAppTheme(primaryColor: string, isLight: boolean) { await NavigationBar.setColor({ color: primaryColor, darkButtons: isLight }); }
// Get current navigation bar color async getCurrentColor() { const result = await NavigationBar.getColor(); console.log('Current color:', result.color); return result.color; }
// Reset to default async resetToDefault() { await NavigationBar.setColor({ color: '#000000', darkButtons: false }); }}
Integration with app lifecycle
import { App } from '@capacitor/app';import { NavigationBar } from '@capgo/capacitor-navigation-bar';
// Update navigation bar on app state changesApp.addListener('appStateChange', async ({ isActive }) => { if (isActive) { // Restore your app's navigation bar color await NavigationBar.setColor({ color: '#YourAppColor', darkButtons: true }); }});
// Handle theme changeswindow.matchMedia('(prefers-color-scheme: dark)') .addEventListener('change', async (e) => { await NavigationBar.setColor({ color: e.matches ? '#121212' : '#FFFFFF', darkButtons: !e.matches }); });
setColor(options: ColorOptions)
Set the navigation bar color and button style.
Parameters:
options
: Configuration object
color
: string - Hex color code (e.g., ‘#FF0000’)darkButtons
: boolean - Use dark buttons (true) or light buttons (false)Returns: Promise<void>
getColor()
Get the current navigation bar color.
Returns: Promise<{ color: string }>
interface ColorOptions { color: string; // Hex color code darkButtons: boolean; // Button style}
interface ColorResult { color: string; // Current hex color}
Color Contrast: Ensure sufficient contrast between navigation bar and buttons
// Good contrast examplessetColor({ color: '#FFFFFF', darkButtons: true }); // White bar, dark buttonssetColor({ color: '#000000', darkButtons: false }); // Black bar, light buttons
Theme Consistency: Update navigation bar when theme changes
Accessibility: Consider users with visual impairments when choosing colors
Performance: Avoid frequent color changes that might distract users
Navigation bar not changing:
Buttons not visible:
darkButtons
parameter matches your background colordarkButtons: true
darkButtons: false
Color appears different: