English | [简体中文](./README_cn-zh.md)

react-darkreader

React Darkreader

🌓 A React Hook for adding a dark / night mode to your site inspired by darkreader

npm npm dumi license jsdelivr

Live Demo ✨ https://react-darkreader.vercel.app

## Getting Started 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 ``` ## 🚀 Usage You can import the darkmode as a react component. ```tsx | pure import React from 'react'; import Darkreader from 'react-darkreader'; export default () => ; ``` 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 ; }; ``` ## 📔 API ### Component ```tsx | pure { /** Callback for change **/ }} /> ``` ### Hook ```typescript | pure const [isDark, { toggle, collectCSS }] = useDarkreader(defaultDarken, theme?, fixes?) ``` with a toggle button as ui. ```tsx | pure ``` ### Result | 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` | ### Params | 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` | - | | fixes | Contains fixes for the generated theme [refered to index.d.ts →](https://github.com/darkreader/darkreader/blob/13c93a995cde0b933580174106897bb1d13f53b4/index.d.ts#L121) | `DynamicThemeFix` | - | ## 🔢 Coming Soon - [x] add the material design styling in switch - [ ] followSystemColorScheme - [ ] localstorge - [ ] playground for editing the config online ## 🔨 Contribute 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 ``` ## 🥇 Who is using | [Ant Design Pro Components Light](https://procomponents.ant.design/) | [Ant Design Pro Components Dark](https://procomponents.ant.design/) | | :------------------------------------------------------------------: | :-----------------------------------------------------------------: | | ![Procomponents Light](./screenshot/pro-components_light.png) | ![Procomponents Dark](./screenshot/pro-components_dark.png) | [More here →]() Welcome to submit. ## ❤️ Contributors Thanks goes to these people: ![Contributors](https://contrib.rocks/image?repo=Turkyden/react-darkreader) Please Feel free to enjoy and participate in open source! ## ⭐ Stargazers Thanks for your star! [![Stargazers repo roster for @Turkyden/react-darkreader](https://reporoster.com/stars/Turkyden/react-darkreader)](https://github.com/Turkyden/react-darkreader/stargazers) ## ✨ Follow Me 这是作者的微信「视频号」,每天分享一些有趣的 SaaS 软件产品,欢迎关注 ~ ## License [MIT](https://github.com/Turkyden/react-darkreader/blob/main/LICENSE)