useDarkModeContext
The useDarkModeContext hook in React PDF Kit provides access to the dark mode state and functions for controlling dark mode in the React PDF Viewer component.
Return Type
Section titled “Return Type”| Name | Type | Description |
|---|---|---|
| darkMode | boolean | The current dark mode state ( true = dark, false = light) |
| setDarkMode | React.Dispatch<React.SetStateAction<boolean>> | Function to update the dark mode state |
To ensure the dark mode context can be accessed, you will need to use useDarkModeContext inside a component which is a child of RPProvider.
Here’s an example of using this hook to create a custom dark mode toggle component:
import { RPConfig, RPProvider, RPPages, RPLayout, useDarkModeContext} from '@react-pdf-kit/viewer'
const MainPdfViewer = ({ children, pdfSrc }) => { return ( <RPConfig licenseKey="YOUR_LICENSE_KEY"> <RPProvider src={pdfSrc}>{children}</RPProvider> </RPConfig> )}
const DarkModeButton = () => { const { darkMode, setDarkMode } = useDarkModeContext() return <button onClick={() => setDarkMode((prev) => !prev)}>{darkMode ? 'Light' : 'Dark'}</button>}
export const AppPdfViewer = () => { return ( <MainPdfViewer pdfSrc="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf"> <DarkModeButton /> <RPLayout toolbar> <RPPages /> </RPLayout> </MainPdfViewer> )}import { type PropsWithChildren, type FC } from 'react'import { RPConfig, RPProvider, RPPages, RPLayout, useDarkModeContext} from '@react-pdf-kit/viewer'
type MainPdfViewerProps = PropsWithChildren<{ pdfSrc: string }>
const MainPdfViewer = ({ children, pdfSrc }: MainPdfViewerProps) => { return ( <RPConfig licenseKey="YOUR_LICENSE_KEY"> <RPProvider src={pdfSrc}>{children}</RPProvider> </RPConfig> )}
const DarkModeButton: FC = () => { const { darkMode, setDarkMode } = useDarkModeContext() return <button onClick={() => setDarkMode((prev) => !prev)}>{darkMode ? 'Light' : 'Dark'}</button>}
export const AppPdfViewer: FC = () => { return ( <MainPdfViewer pdfSrc="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf"> <DarkModeButton /> <RPLayout toolbar> <RPPages /> </RPLayout> </MainPdfViewer> )}