react-material-time-picker
Version:
TimePicker is a user interface component that allows the user to easily select a specific time. It provides an analog clock interface that is easy to use and intuitive. TimePicker can be easily integrated into other user interface components, making it a
53 lines (47 loc) • 1.9 kB
JavaScript
import {createContext, useContext,useState} from "react";
const ThemeContext = createContext(null);
function ThemeProvider(props){
const [ themes,setThemes ] = useState({
light:{
primary : '#6750A4',
surfaceVariant: 'rgba(231, 224, 236, 1)',
onSurfaceVariant: '#49454F',
onSurface: '#1C1B1F',
outline: '#79747E',
scrim:'rgb(0,0,0,0.25)',
tertiaryContainer:'#FFD8E4',
onPrimary: '#ffffff',
errorContainer: '#F9DEDC',
primaryContainer: '#EADDFF',
onPrimaryContainer: '#21005D',
error : '#B3261E',
surface3: `linear-gradient(0deg, #FFFBFE, #FFFBFE),` +
`linear-gradient(0deg, rgba(103, 80, 164, 0.11), rgba(103, 80, 164, 0.11))`
},
dark: {
primary : '#D0BCFF',
surfaceVariant: '#49454F',
onSurfaceVariant: '#CAC4D0',
onSurface: '#E6E1E5',
outline: '#79747E',
scrim:'rgb(0,0,0,0.25)',
tertiaryContainer:'#633B48',
onPrimary: '#381E72',
errorContainer: '#8C1D18',
primaryContainer: '#4F378B',
onPrimaryContainer: '#EADDFF',
error : '#F2B8B5',
surface3: 'linear-gradient(0deg, #1C1B1F, #1C1B1F),' +
' linear-gradient(0deg, rgba(208, 188, 255, 0.11), rgba(208, 188, 255, 0.11))'
}
})
const [ theme,setTheme ] = useState( 'dark' );
let colors = (theme === 'dark' ? themes.dark : themes.light);
return <ThemeContext.Provider {...props} value={[ colors ,setTheme ,setThemes ]}/>
}
function useTheme() {
const context = useContext(ThemeContext);
if(!context) throw new Error('Not inside the provider.')
return context; //returns [theme,updateTheme,updateColors]
}
export { ThemeProvider,useTheme }