import { styled, Theme, useTheme } from '@mui/material/styles'; import Box from '@mui/material/Box'; import { useDispatch } from 'react-redux'; import { changeDataPointColors, changePrimary, } from '@graphpolaris/shared/data-access/store'; // Basically a styled-component const Div = styled('div')(({ theme }) => ({ backgroundColor: theme.palette.primary.main, })); const SemanticSubstrates = () => { const dispatch = useDispatch(); const theme = useTheme(); console.log('theme here ', theme); return ( <> <Div> <h1>semantic substrates div</h1> </Div> <Box sx={{ // Using our custom palette dataPointColors property, cast theme to any because Theme doesn't know of this custom property backgroundColor: (theme: Theme) => theme.palette.dataPointColors[0], }} > <h1>semantic substrates h1</h1> </Box> <input onChange={(v) => dispatch(changePrimary({ main: v.currentTarget.value })) } type="color" name="head" value={theme.palette.primary.main} />{' '} Change Primary Color <input onChange={(v) => dispatch( changeDataPointColors([ v.currentTarget.value, ...theme.palette.dataPointColors.slice(1), ]) ) } type="color" id="head" name="head" value={theme.palette.dataPointColors[0]} /> Change dataPointColors reflects to local <input onChange={(v) => dispatch( changeDataPointColors([ theme.palette.dataPointColors[0], v.currentTarget.value, ...theme.palette.dataPointColors.slice(2), ]) ) } type="color" id="head" name="head" value={theme.palette.dataPointColors[1]} /> Change dataPointColors reflects to global </> ); }; export default SemanticSubstrates;