Theming
The following theme configuration is only available for Web and React Native.
- Web
- Android
- Flutter
- React Native
themeMode
By default themeMode
option will be set to user system settings i.e. 'light' or 'dark',
however you can easily override it to match design of your dapp.
Example
const modal = new WalletConnectModal({
themeMode: 'dark'
})
themeVariables
Web3Modal's theming is done via css variables. You can override any of them to match your dapp's design via themeVariables
option.
Example
const modal = new WalletConnectModal({
themeVariables: {
'--wcm-font-family': 'Roboto, sans-serif',
'--wcm-accent-color': '#F5841F'
}
})
List of theme variables
General style variables
Variable | Description | Example |
---|---|---|
--wcm-font-family | Base font family | Roboto, sans-serif |
--wcm-font-feature-settings | Base font features settings | tnum |
--wcm-overlay-background-color | Modal overlay background color | rgba(0, 0, 0, 0.3) |
--wcm-overlay-backdrop-filter | Modal overlay backdrop filter | blur(5px) |
--wcm-z-index | Z-index position | 10 |
--wcm-accent-color | Color used for buttons, icons, labels, etc. | #FFFFFF |
--wcm-accent-fill-color | Color used for text and icons inside elements with accent color background | #000000 |
--wcm-background-color | Background color to be used instead of default animated gradient | #CECECE |
--wcm-background-border-radius | Border radius applied to the modal background | 12px |
--wcm-container-border-radius | Border radius applied to main modal content area | 24px |
--wcm-wallet-icon-border-radius | Border radius applied to wallet icons | 2em |
--wcm-wallet-icon-large-border-radius | Border radius applied to large wallet icons | 3em |
--wcm-wallet-icon-small-border-radius | Border radius applied to small wallet icons | 1em |
--wcm-input-border-radius | Border radius applied to text inputs | 50% |
--wcm-notification-border-radius | Border radius applied to toast notification | 2rem |
--wcm-button-border-radius | Border radius applied to primary buttons like 'Connect' or 'Account' | 8px |
--wcm-secondary-button-border-radius | Border radius applied to secondary buttons, ones inside modal views | 8px |
--wcm-icon-button-border-radius | Border radius applied to icon only buttons like 'Copy' or 'Disconnect' | 50% |
--wcm-button-hover-highlight-border-radius | Border radius applied to hover highlight on wallet or chain buttons | 2rem |
Text style variables
Granular text style variables for when --wcm-font-family
is not enough.
Variable | Description | Example |
---|---|---|
--wcm-text-big-bold-size | Font size of big-bold text variant (modal and page titles) | 2rem |
--wcm-text-big-bold-weight | Font weight of big-bold text variant (modal and page titles) | bold |
--wcm-text-big-bold-line-height | Line height of big-bold text variant (modal and page titles) | 14px |
--wcm-text-big-bold-letter-spacing | Letter spacing of big-bold text variant (modal and page titles) | 1px |
--wcm-text-big-bold-text-transform | Text transform of big-bold text variant (modal and page titles) | uppercase |
--wcm-text-big-bold-font-family | Font family of big-bold text variant (modal and page titles) | Helvetica, sans-serif |
--wcm-text-medium-regular-size | Font size of medium-regular text variant (button and data labels) | 1rem |
--wcm-text-medium-regular-weight | Font weight of medium-regular text variant (button and data labels) | normal |
--wcm-text-medium-regular-line-height | Line height of medium-regular text variant (button and data labels) | 14px |
--wcm-text-medium-regular-letter-spacing | Letter spacing of medium-regular text variant (button and data labels) | 1px |
--wcm-text-medium-regular-text-transform | Text transform of medium-regular text variant (button and data labels) | capitalize |
--wcm-text-medium-regular-font-family | Font family of medium-regular text variant (button and data labels) | Arial, sans-serif |
--wcm-text-small-regular-size | Font size of small-regular text variant (secondary buttons, toast notification and labels) | 0.75rem |
--wcm-text-small-regular-weight | Font weight of small-regular text variant (secondary buttons, toast notification and labels) | normal |
--wcm-text-small-regular-line-height | Line height of small-regular text variant (secondary buttons, toast notification and labels) | 14px |
--wcm-text-small-regular-letter-spacing | Letter spacing of small-regular text variant (secondary buttons, toast notification and labels) | 1px |
--wcm-text-small-regular-text-transform | Text transform of small-regular text variant (secondary buttons, toast notification and labels) | capitalize |
--wcm-text-small-regular-font-family | Font family of small-regular text variant (secondary buttons, toast notification and labels) | Helvetica, sans-serif |
--wcm-text-small-thin-size | Font size of small-thin text variant (input placeholder and help text) | 0.65rem |
--wcm-text-small-thin-weight | Font weight of small-thin text variant (input placeholder and help text) | lighter |
--wcm-text-small-thin-line-height | Line height of small-thin text variant (input placeholder and help text) | 0.8rem |
--wcm-text-small-thin-letter-spacing | Letter spacing of small-thin text variant (input placeholder and help text) | 0.01em |
--wcm-text-small-thin-text-transform | Text transform of small-thin text variant (input placeholder and help text) | none |
--wcm-text-small-thin-font-family | Font family of small-thin text variant (input placeholder and help text) | Arial, sans-serif |
--wcm-text-xsmall-bold-size | Font size of xsmall-bold text variant (sub-labels) | 0.5rem |
--wcm-text-xsmall-bold-weight | Font weight of xsmall-bold text variant (sub-labels) | bold |
--wcm-text-xsmall-bold-line-height | Line height of xsmall-bold text variant (sub-labels) | 10px |
--wcm-text-xsmall-bold-letter-spacing | Letter spacing of xsmall-bold text variant (sub-labels) | -0.03em |
--wcm-text-xsmall-bold-text-transform | Text transform of xsmall-bold text variant (sub-labels) | uppercase |
--wcm-text-xsmall-bold-font-family | Font family of xsmall-bold text variant (sub-labels) | Arial, sans-serif |
--wcm-text-xsmall-regular-size | Font size of xsmall-regular text variant (wallet and network button labels) | 0.5rem |
--wcm-text-xsmall-regular-weight | Font weight of xsmall-regular text variant (wallet and network button labels) | normal |
--wcm-text-xsmall-regular-line-height | Line height of xsmall-regular text variant (wallet and network button labels) | 10px |
--wcm-text-xsmall-regular-letter-spacing | Letter spacing of xsmall-regular text variant (wallet and network button labels) | 0.1em |
--wcm-text-xsmall-regular-text-transform | Text transform of xsmall-regular text variant (wallet and network button labels) | none |
--wcm-text-xsmall-regular-font-family | Font family of xsmall-regular text variant (wallet and network button labels) | Helvetica, sans-serif |
themeMode (optional)
Puts WalletConnectModal into dark or light mode. Defaults to user's system preference.
themeMode: 'dark' | 'light'
accentColor (optional)
Allows to override Modal's accent color. Defaults to undefined
.
<WalletConnectModal
...
accentColor="#9090FF"
/>
WalletConnectModal Theme
Allows to override Modal's accent color.
Compose
Wrap your composables in WalletConnectModalTheme
.
WalletConnectModalTheme(
accentColor = Color(0xFF3496ff),
onAccentColor = Color.White
) {
ModalBottomSheetLayout() { }
}
Android View
You can override the default Modal's accent color by creating a WalletConnectModalTheme
.
<style name="WalletConnectModalTheme">
<item name="accentColor">#FF47A1FF</item>
<item name="onAccentColor">#FFFFFFFF</item>
</style>
To theme the WalletConnectModal
you must wrap your MaterialApp
with a WalletConnectModalTheme
widget.
return WalletConnectModalTheme(
data: WalletConnectModalThemeData.darkMode,
child: MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'WalletConnectModal Sign Example'),
),
);
If you don't wrap your MaterialApp
with a WalletConnectModalTheme
widget, the WalletConnectModal
will use the default light theme.
You can build your own theme by creating a WalletConnectModalThemeData
object.
Here is how the dark mode theme is built:
// Dark Mode Theme
WalletConnectModalThemeData(
primary100: Color(0xFF47A1FF),
primary090: Color(0xFF59AAFF),
primary080: Color(0xFF6CB4FF),
overlay002: Color.fromARGB(5, 255, 255, 255),
overlay005: Color.fromARGB(13, 255, 255, 255),
overlay010: Color.fromARGB(26, 255, 255, 255),
overlay020: Color.fromARGB(51, 255, 255, 255),
overlay030: Color.fromARGB(77, 255, 255, 255),
foreground100: Color(0xFFE4E7E7),
foreground200: Color(0xFF949E9E),
foreground275: Color(0xFF788181),
foreground300: Color(0xFF6E7777),
background100: Color(0xFF141414),
background200: Color(0xFF272A2A),
background300: Color(0xFF3B4040),
inverse000: Color(0xFF000000),
inverse100: Color(0xFFFFFFFF),
error: Color(0xFFF25A67),
success: Color(0xFF26D962),
fontFamily: 'roboto',
radius4XS: 6.0,
radius3XS: 8.0,
radius2XS: 12.0,
radiusXS: 16.0,
radiusS: 20.0,
radiusM: 28.0,
radiusL: 36.0,
radius3XL: 80.0,
);
Was this helpful?