Changing Themes Through Code
In this example, we use the BlockNoteView component's theme props to create a red theme for both light and dark modes.
Relevant Docs:
import "@blocknote/core/fonts/inter.css";import { BlockNoteView, darkDefaultTheme, lightDefaultTheme, Theme,} from "@blocknote/mantine";import "@blocknote/mantine/style.css";import { useCreateBlockNote } from "@blocknote/react";// Base themeconst lightRedTheme = { colors: { editor: { text: "#222222", background: "#ffeeee", }, menu: { text: "#ffffff", background: "#9b0000", }, tooltip: { text: "#ffffff", background: "#b00000", }, hovered: { text: "#ffffff", background: "#b00000", }, selected: { text: "#ffffff", background: "#c50000", }, disabled: { text: "#9b0000", background: "#7d0000", }, shadow: "#640000", border: "#870000", sideMenu: "#bababa", highlights: lightDefaultTheme.colors!.highlights, }, borderRadius: 4, fontFamily: "Helvetica Neue, sans-serif",} satisfies Theme;// The theme for dark mode,// users the light theme defined above with a few changesconst darkRedTheme = { ...lightRedTheme, colors: { ...lightRedTheme.colors, editor: { text: "#ffffff", background: "#9b0000", }, sideMenu: "#ffffff", highlights: darkDefaultTheme.colors!.highlights, },} satisfies Theme;// The combined "red theme",// we pass this to BlockNoteView and then the editor will automatically// switch between lightRedTheme / darkRedTheme based on the system themeconst redTheme = { light: lightRedTheme, dark: darkRedTheme,};export default function App() { // Creates a new editor instance. const editor = useCreateBlockNote({ initialContent: [ { type: "paragraph", content: "Welcome to this demo!", }, { type: "paragraph", content: "Open up a menu or toolbar to see more of the red theme", }, { type: "paragraph", content: "Toggle light/dark mode in the page footer and see the theme change too", }, { type: "paragraph", }, ], }); // Renders the editor instance using a React component. return <BlockNoteView editor={editor} theme={redTheme} />;}