diff --git a/docs/src/demos/Extensions/BubbleMenu/React/index.jsx b/docs/src/demos/Extensions/BubbleMenu/React/index.jsx
index 0fc08921..01787e1f 100644
--- a/docs/src/demos/Extensions/BubbleMenu/React/index.jsx
+++ b/docs/src/demos/Extensions/BubbleMenu/React/index.jsx
@@ -1,5 +1,5 @@
import React from 'react'
-import { useEditor, EditorContent } from '@tiptap/react'
+import { useEditor, EditorContent, BubbleMenu } from '@tiptap/react'
import { defaultExtensions } from '@tiptap/starter-kit'
import './styles.scss'
@@ -16,7 +16,27 @@ export default () => {
})
return (
-
+
+ {editor &&
+
+
+
+ }
)
diff --git a/packages/react/package.json b/packages/react/package.json
index 41f94b8a..0daa57ac 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -27,6 +27,7 @@
"react-dom": "^17.0.1"
},
"dependencies": {
+ "@tiptap/extension-bubble-menu": "^2.0.0-beta.0",
"prosemirror-view": "^1.18.2"
},
"devDependencies": {
diff --git a/packages/react/src/BubbleMenu.tsx b/packages/react/src/BubbleMenu.tsx
new file mode 100644
index 00000000..cdaef6ad
--- /dev/null
+++ b/packages/react/src/BubbleMenu.tsx
@@ -0,0 +1,28 @@
+import React, { useEffect, useRef } from 'react'
+import { BubbleMenuPlugin, BubbleMenuPluginKey, BubbleMenuPluginProps } from '@tiptap/extension-bubble-menu'
+
+export type BubbleMenuProps = Omit
+
+export const BubbleMenu: React.FC = (props) => {
+ const element = useRef(null)
+
+ useEffect(() => {
+ const { editor, keepInBounds } = props
+
+ editor.registerPlugin(BubbleMenuPlugin({
+ editor,
+ element: element.current as HTMLElement,
+ keepInBounds,
+ }))
+
+ return () => {
+ editor.unregisterPlugin(BubbleMenuPluginKey)
+ }
+ }, [])
+
+ return (
+
+ {props.children}
+
+ )
+}
diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts
index 6ce42719..493cb331 100644
--- a/packages/react/src/index.ts
+++ b/packages/react/src/index.ts
@@ -1,4 +1,5 @@
export * from '@tiptap/core'
+export * from './BubbleMenu'
export { Editor } from './Editor'
export * from './useEditor'
export * from './ReactRenderer'