Skip to content

ThemeSwitcher icon stuck on LightMode when providing custom themes #5107

Description

@aarontcannon

Steps to reproduce

Steps:

  1. Pass in a custom theme to AppProvider (with both light and dark themes defined using createTheme(), with cssVariables set to True)
  2. Ensure ThemeSwitcher is rendered in the page
  3. Toggle ThemeSwitcher button

Current behavior

The color mode changes but icon stays stuck on LighModeIcon

Expected behavior

In dark mode the icon should be LightModeIcon. In light mode the icon should be DarkModeIcon.

Context

Looking at the code I noticed that theme.getColorSchemeSelector('dark') gets called in order to determine which icon to show. When passing in a custom theme this function doesn't appear to be defined. When using the default toolpad theme it is defined.

Your environment

Tested in Edge browser

npx @mui/envinfo System: OS: Linux 6.6 Debian GNU/Linux 11 (bullseye) 11 (bullseye) Binaries: Node: 18.20.8 - /usr/local/bin/node npm: 10.8.2 - /usr/local/bin/npm pnpm: Not Found Browsers: Chrome: Not Found npmPackages: @emotion/react: ^11.14.0 => 11.14.0 @emotion/styled: ^11.14.0 => 11.14.1 @mui/core-downloads-tracker: 7.2.0 @mui/icons-material: ^7.2.0 => 7.2.0 @mui/lab: ^7.0.0-beta.14 => 7.0.0-beta.14 @mui/material: ^7.2.0 => 7.2.0 @mui/private-theming: 7.2.0 @mui/styled-engine: 7.2.0 @mui/system: 7.2.0 @mui/types: 7.4.4 @mui/utils: 7.2.0 @mui/x-data-grid: ^8.8.0 => 8.8.0 @mui/x-date-pickers: 8.9.0 @mui/x-internals: 8.8.0 @toolpad/core: ^0.15.0 => 0.15.0 @toolpad/utils: 0.15.0 @types/react: ^19.0.10 => 19.1.8 react: ^19.0.0 => 19.1.0 react-dom: ^19.0.0 => 19.1.0 styled-components: 6.1.19 typescript: ^5.8.2 => 5.8.3

Search keywords: theme, ThemeSwitcher

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions