「开源」🌓 一个切换黑夜/白天模式的 Hook

1,638 阅读1分钟

Getting Started

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

Live Demo ✨ react-darkreader.vercel.app

darkreader

📦 Install

yarn add react-darkreader

Or you can:

npm install react-darkreader

🚀 Usage

You can import the darkmode as a react component.

import React from 'react';
import Darkreader from 'react-darkreader';

export default () => <Darkreader />;

You can also create darkmode by the react hook useDarkreader

import React from 'react';
import { Switch, useDarkreader } from 'react-darkreader';

export default () => {
  const [isDark, toggle] = useDarkreader(false);

  return <Switch isDark={isDark} onToggle={toggle} />;
};

📔 API

Component

<Darkreader
  defaultDarken
  options={
    brightness: 100,
    contrast: 90,
    sepia: 10
  }
/>

Hook

const [isDark, toggle, collectCSS] = useDarkreader(defaultDarken: boolean, options?: Options);

with a toggle button as ui.

<Switch isDark={isDark} onToggle={toggle} />

Result

ParamsDescriptionType
isDarkThe status of current darkmode, support true, falseboolean
toggleThe function for toggling the darkmode.() => void
collectCSSThe async function for collecting the css of darkmode.async () => Promise<string>

Params

ParamsDescriptionTypeDefault
defaultDarkenThe default status of the darkreaderbooleanfalse

Options

ParamsDescriptionTypeDefault
brightnessThe brightness properties of darkmodenumber100
contrastThe contrast properties of darkmodenumber90
sepiaThe sepia properties of darkmodenumber10

🔢 Coming Soon

  • followSystemColorScheme
  • localstorge
  • playground for editing the config online

🔨 Contribute

Install dependencies,

$ npm i

Start the dev server,

$ npm start

Build documentation,

$ npm run docs:build

Build library via father-build,

$ npm run build

License

MIT