Skip to content

lukaskupczyk/react-hook-theme

Repository files navigation

react-hook-theme

Switch between dark and light mode in your React application with ease.

Toggle

Features

  • Provides the theme context to components
  • Hook to retrieve and change the current theme
  • Optional toggle to switch between dark and light mode
  • Automatic detection of users' browser settings
  • Optionally persists the selected theme to local storage
  • Ready for Next.js

Example

Check out the CodeSandbox for a working example.

Another example is also included in the example folder of the repository.

Installation

yarn add react-hook-theme

# or

npm install react-hook-theme

Basic usage

Provider

Wrap the application in the ThemeProvider. Optionally provide settings via the options prop.

/*
 * index.tsx
 */

import { ThemeProvider } from 'react-hook-theme';

// ...
<ThemeProvider
    options={{
        theme: 'dark',
        save: true,
    }}
>
    <App />
</ThemeProvider>;
// ...

Options Prop

Name Type Required Description Default
theme Theme The default theme as a fallback dark
save boolean Save theme to local storage when changed false

Styling of Dark / Light Mode

Adjust the styling of your app by utilizing css variables:

/*
 * style.css
 */

:root {
    --background: #fff;
    --primary: #000;
}

[data-theme='light'] {
    --background: #fff;
    --primary: #000;
}

[data-theme='dark'] {
    --background: #282c34;
    --primary: #fff;
}

// ...

body {
    background-color: var(--background);
    color: var(--primary);
}

Toggle

Optionally use the toggle component to render a switch to change between dark and light mode.

/*
 * App.tsx
 */

import { Toggle } from 'react-hook-theme';

// styling
import 'react-hook-theme/dist/styles/style.css';

// ...
<header>
    <Toggle />
</header>;

Props

Name Type Required Description Default
id string Sets the html id of the input element rht-toggle

Hooks

Use the provided useTheme hook to access or update the current theme

/*
 * App.tsx
 */

import { useTheme } from 'react-hook-theme';

// ...
const { theme, setTheme } = useTheme();

Return

Object Name Type Description
theme Theme The current theme
setTheme (theme: Theme) => void Update the current theme
options ThemeOptions Configuration of hook

About

Switch between dark and light mode in your React application with ease.

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published