1. Getting Started
  2. Theming

Getting Started

Theming

To customize the color theme of web3-onboard and match it with your dapp, you can choose from the available native themes ('default', 'dark', 'light', 'system') or create a custom theme using a ThemingMap object and our Theming Tool walkthrough.

Available Themes

To set the color theme of web3-onboard to one of the available native themes, import Onboard from @web3-onboard/core and pass the theme as a string to the theme init option.

theme description
'default' default theme
'dark' dark mode
'light' light mode
'system' automatically switch between 'dark' & 'light' based on the user's system settings

Example:

import Onboard from '@web3-onboard/core'  const onboard = Onboard({  theme: 'dark'  // other options like wallets, chains, appMetaData, etc. }) 

Variables

In the table below, you'll find a list of css variables that you can use to theme web3-onboard.

variable description
--w3o-background-color background color
--w3o-foreground-color foreground color
--w3o-text-color text color
--w3o-border-color border color
--w3o-action-color buttons and links
--w3o-border-radius border radius

Custom Theme

To create a custom theme, you can define a ThemingMap object with CSS variables for different components of web3-onboard. Pass this object as the theme option.

ts
import Onboard, { ThemingMap } from '@web3-onboard/core'  const customTheme: ThemingMap = {  '--w3o-background-color': '#f0f0f0',  '--w3o-foreground-color': '#333',  '--w3o-text-color': '#fff',  '--w3o-border-color': '#ccc',  '--w3o-action-color': '#007bff',  '--w3o-border-radius': '5px' }  const onboard = Onboard({  theme: customTheme  // other options like wallets, chains, appMetaData, etc. }) 

Dynamically Update Theme with API

updateTheme is an exposed API method for actively updating the theme of web3-onboard. The function accepts Theme types (see below). If using the @web3-onboard/react package there is a hook exposed called updateTheme

The function also accepts a custom built ThemingMap object that contains all or some of the theming variables

Example:

ts
import Onboard from '@web3-onboard/core'  const onboard = Onboard({  theme: 'dark'  // other options like wallets, chains, appMetaData, etc. })  // after initialization you may want to change the theme based on UI state onboard.state.actions.updateTheme('light')  // or  const customTheme: ThemingMap = {  '--w3o-background-color': '#f0f0f0',  '--w3o-foreground-color': '#333',  '--w3o-text-color': '#fff',  '--w3o-border-color': '#ccc',  '--w3o-action-color': '#007bff' } onboard.state.actions.updateTheme(customTheme) 

Theme Types

export type Theme = ThemingMap | BuiltInThemes | 'system'  export type BuiltInThemes = 'default' | 'dark' | 'light'  export type ThemingMap = {  '--w3o-background-color'?: string  '--w3o-foreground-color'?: string  '--w3o-text-color'?: string  '--w3o-border-color'?: string  '--w3o-action-color'?: string  '--w3o-border-radius'?: string } 

Theming Tool

You can preview how web3-onboard will look on your site by using our theming tool to customize the look and feel of web3-onboard. You can try different themes or create your own and preview the result by entering a URL or adding a screenshot.

To do this:

  • Head over to our theming tool
  • Drop a screen shot or enter the URL of your site
  • Switch between the built in themes using the control panel in the lower left corner
  • To customize, select 'custom' and click the different circles to change the color
  • Copy the output theme and use as the value to the theme prop within the onboard config or within the updateTheme API action ( see API action)
    TIP

    Pro tip: use the toggle to disable the backdrop and select the eye dropper after clicking a color circle to match the color of your site perfectly

Follow along with the video below:

WARNING

note: not all sites allow iframe injection, if this is the case for your site use a screenshot