react-darkreader-2
Version:
A React Hook for adding a dark / night mode to your site inspired by darkreader
168 lines (111 loc) • 5.93 kB
Markdown
English | [简体中文](./README_cn-zh.md)
<p align="center">
<img align="center" alt="react-darkreader" src="https://darkreader.org/images/darkreader-icon-256x256.png" />
</p>
<h1 align="center">React Darkreader</h1>
<p align="center">🌓 A React Hook for adding a dark / night mode to your site inspired by <a href="https://github.com/darkreader/darkreader" target="_blank">darkreader</a>
</p>
<p align="center">
<a href="https://www.npmjs.com/package/react-darkreader" target="_blank"><img alt="npm" src="https://img.shields.io/npm/v/react-darkreader?color=orange" /></a> <img alt="npm" src="https://img.shields.io/npm/dt/react-darkreader" /> <a href="https://github.com/umijs/dumi" target="_blank"><img alt="dumi" src="https://img.shields.io/badge/docs%20by-dumi-blue" /></a> <img alt="license" src="https://img.shields.io/github/license/Turkyden/react-darkreader" /> <a href="https://www.jsdelivr.com/package/npm/react-darkreader" target="_blank"><img alt="jsdelivr" src="https://data.jsdelivr.com/v1/package/npm/react-darkreader/badge" /></a>
</p>
<p align="center">Live Demo ✨ <a href="https://react-darkreader.vercel.app" target="_blank">https://react-darkreader.vercel.app</a></p>
Install with yarn
```bash
yarn add react-darkreader
```
Or you can
```bash
npm install react-darkreader
```
Or inject the script at your page by [jsdelivr CDN](https://www.jsdelivr.com/)
```html
<script src="https://cdn.jsdelivr.net/npm/react-darkreader@latest/dist/index.min.js"></script>
```
You can import the darkmode as a react component.
```tsx | pure
import React from 'react';
import Darkreader from 'react-darkreader';
export default () => <Darkreader />;
```
You can also create darkmode by the react hook `useDarkreader`
```tsx | pure
import React from 'react';
import { Switch, useDarkreader } from 'react-darkreader';
export default () => {
const [isDark, { toggle }] = useDarkreader(false);
return <Switch checked={isDark} onChange={toggle} />;
};
```
```tsx | pure
<Darkreader
defaultDarken
theme={/** Theme options **/}
fixes={/** Contains fixes for the generated theme **/}
onChange={isDark => {
/** Callback for change **/
}}
/>
```
```typescript | pure
const [isDark, { toggle, collectCSS }] = useDarkreader(defaultDarken, theme?, fixes?)
```
with a toggle button as ui.
```tsx | pure
<Switch checked={isDark} onChange={toggle} />
```
| Params | Description | Type |
| ---------- | ------------------------------------------------------- | ----------------------------- |
| isDark | The status of current darkmode, support `true`, `false` | `boolean` |
| toggle | The function for toggling the darkmode. | `() => void` |
| collectCSS | The async function for collecting the css of darkmode. | `async () => Promise<string>` |
| Params | Description | Type | Default |
| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | ------- |
| defaultDarken | The default status of the darkreader | `boolean` | false |
| theme | The options of darkreader Theme [refered to index.d.ts →](https://github.com/darkreader/darkreader/blob/13c93a995cde0b933580174106897bb1d13f53b4/index.d.ts#L41) | `Partial<Theme>` | - |
| fixes | Contains fixes for the generated theme [refered to index.d.ts →](https://github.com/darkreader/darkreader/blob/13c93a995cde0b933580174106897bb1d13f53b4/index.d.ts#L121) | `DynamicThemeFix` | - |
- [x] add the material design styling in switch
- [ ] followSystemColorScheme
- [ ] localstorge
- [ ] playground for editing the config online
Install dependencies,
```bash
$ npm i
```
Start the dev server,
```bash
$ npm start
```
Build documentation,
```bash
$ npm run docs:build
```
Build library via `father-build`,
```bash
$ npm run build
```
| [Ant Design Pro Components Light](https://procomponents.ant.design/) | [Ant Design Pro Components Dark](https://procomponents.ant.design/) |
| :------------------------------------------------------------------: | :-----------------------------------------------------------------: |
|  |  |
[]() Welcome to submit.
Thanks goes to these people:

Please Feel free to enjoy and participate in open source!
Thanks for your star!
[](https://github.com/Turkyden/react-darkreader/stargazers)
这是作者的微信「视频号」,每天分享一些有趣的 SaaS 软件产品,欢迎关注 ~
<img width="200" src="https://user-images.githubusercontent.com/24560160/230781326-de84d919-1410-4b8a-ad81-3b0f6ffbe7d2.png">
[](https://github.com/Turkyden/react-darkreader/blob/main/LICENSE)