Replacing Emoji Picker Component

In this example, we replace the default Emoji Picker component with a basic custom one.

Try it out: Press the ":" key to see the new Emoji Picker!

Relevant Docs:

import "@blocknote/core/fonts/inter.css";import {  DefaultReactGridSuggestionItem,  GridSuggestionMenuController,  GridSuggestionMenuProps,  useCreateBlockNote,} from "@blocknote/react";import { BlockNoteView } from "@blocknote/mantine";import "@blocknote/mantine/style.css";import "./styles.css";// Custom component to replace the default Emoji Picker.function CustomEmojiPicker(  props: GridSuggestionMenuProps<DefaultReactGridSuggestionItem>,) {  return (    <div      className={"emoji-picker"}      style={        { gridTemplateColumns: `repeat(${props.columns || 1}, 1fr)` } as any      }    >      {props.items.map((item, index) => (        <div          className={`emoji-picker-item ${            props.selectedIndex === index ? "selected" : ""          }`}          onClick={() => {            props.onItemClick?.(item);          }}        >          {item.icon}        </div>      ))}    </div>  );}export default function App() {  // Creates a new editor instance.  const editor = useCreateBlockNote({    initialContent: [      {        type: "paragraph",        content: "Welcome to this demo!",      },      {        type: "paragraph",        content: "Press the ':' key to open the Emoji Picker",      },      {        type: "paragraph",        content: "It's been replaced with a custom component",      },      {        type: "paragraph",      },    ],  });  // Renders the editor instance.  return (    <BlockNoteView editor={editor} emojiPicker={false}>      <GridSuggestionMenuController        triggerCharacter={":"}        gridSuggestionMenuComponent={CustomEmojiPicker}        columns={10}        minQueryLength={2}      />    </BlockNoteView>  );}