react-material-ui-theme
Version:
Add multicolor and dark theme to your react material ui project instantly.
102 lines (75 loc) • 3.99 kB
Markdown
# react-material-ui-theme
[](https://travis-ci.org/mui-org/react-material-ui-theme)
[](https://badge.fury.io/js/react-material-ui-theme)
[](https://img.shields.io/npm/dm/react-material-ui-theme.svg)
[](https://github.com/mui-org/react-material-ui-theme/blob/master/LICENSE)
react-material-ui-theme is a part of the [Material-UI](http://www.material-ui.com/#/) theme to [React](https://facebook.github.io/react/). Using which you can add a Material-UI theme to your React app instantly without an extra build efforts. It will provide you theme toggle button to change dark and light theme and also can switch color theme. It use locolstorage to remember last theme and color of site
## Installation
```
npm install react-material-ui-theme --save
// or
yarn add react-material-ui-theme
```
## Usage
You can apply theme to your any react material ui app in 2 easy steps
```javascript
import AppThemeProvider, {
ThemeColorPalette,
ThemeTogglerButton,
ThemeController,
} from "react-material-ui-theme";
```
1. Wrap your component with `AppThemeProvider`
````javascript
<AppThemeProvider
defaultColorPalette="Green yellow"
defaultThemeMode="darkblue"
>
// your comoponents
</AppThemeProvider>```
````
2. Add theme controller anywhere in your app to change theme and color
```javascript
// Provide theme toggler button to change dark and light theme
<ThemeTogglerButton />
// Provivde color palette to chagne color
<ThemeColorPalette />
// Provide the both theme toggler and color palette
<ThemeController />
```
### Example
```javascript
<AppThemeProvider
defaultColorPalette="Green yellow"
defaultThemeMode="darkblue"
>
<Button color="primary">Primary</Button>
<Button color="secondary">Secondary</Button>
<ThemeTogglerButton />
<ThemeColorPalette />
<ThemeController />
</AppThemeProvider>
```
### AppThemeProvider API
| Parameter | Type | Description | Options |
| ------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------- |
| defaultColorPalette | String | Default color palette of your site. You can use color palette provided in options as default color palette for your site | `Green yellow, Blue pink, Pink purple, Cyon yellow, Purple orange, Red blue`" |
| defaultThemeMode | String | Default theme mode of your site. You can use theme mode provided in options as default theme for your site | ` darkblue, dark, light` |
### Hooks API
1. use `useThemeType` hook to get theme type
```javascript
import { useThemeType } from "react-material-ui-theme";
const [themeType, setThemeType] = useThemeType();
setThemeType("light");
console.log(themeType); // returns light)
```
2. use `useColorPalette` hook to get color palette
```javascript
import { useColorPalette } from "react-material-ui-theme";
const [colorPalette, setColorPalette] = useColorPalette();
setColorPalette("Blue pink");
console.log(colorPalette); // returns Blue pink
```
#### Demo https://advance-noteapd-v2.vercel.app/
#### `Note: works only on material ui components!`
#### Please raise issue if you want add any feature like adding custom color palette or autocalculate secondary color.