diff --git a/packages/ra-ui-materialui/src/theme/ThemeTester.stories.tsx b/packages/ra-ui-materialui/src/theme/ThemeTester.stories.tsx new file mode 100644 index 0000000000..7036b8ad14 --- /dev/null +++ b/packages/ra-ui-materialui/src/theme/ThemeTester.stories.tsx @@ -0,0 +1,142 @@ +import * as React from 'react'; +import { useState } from 'react'; +import { useStore, StoreContextProvider, memoryStore } from 'ra-core'; +import { + defaultLightTheme, + defaultDarkTheme, + nanoDarkTheme, + nanoLightTheme, + radiantDarkTheme, + radiantLightTheme, + houseDarkTheme, + houseLightTheme, + bwLightTheme, + bwDarkTheme, + ThemeProvider, + ThemesContext, +} from './'; +import { Box, Card, Stack, Typography } from '@mui/material'; +import { Button } from '../button'; + +export default { + title: 'ra-ui-materialui/theme/ThemeTester', +}; + +const themes: Theme[] = [ + { name: 'Default', light: defaultLightTheme, dark: defaultDarkTheme }, + { + name: 'B&W', + light: bwLightTheme, + dark: bwDarkTheme, + }, + { name: 'Nano', light: nanoLightTheme, dark: nanoDarkTheme }, + { name: 'Radiant', light: radiantLightTheme, dark: radiantDarkTheme }, + { name: 'House', light: houseLightTheme, dark: houseDarkTheme }, +]; + +export const ThemeTester = () => { + const [themeName, setThemeName] = useState('themeName', 'default'); + const [themeType, setThemeType] = useState('themeType', 'light'); + const lightTheme = themes.find(theme => theme.name === themeName)?.light; + const darkTheme = themes.find(theme => theme.name === themeName)?.dark; + return ( + + + + + +
+
+
+
+
+
+ ); +}; + +const ThemeSelector = ({ themeName, setThemeName }) => { + const handleChange = (_: React.MouseEvent, index: number) => { + const newTheme = themes[index]; + setThemeName(newTheme.name); + }; + const [theme, setter] = useStore('theme', 'light'); + + return ( + + + Theme + + + {themes.map((theme, index) => ( +