@@ -18,6 +21,7 @@ export function getMDXComponents(components?: MDXComponents): MDXComponents {
ThemedImage: ThemedImage,
Tabs: Tabs,
Tab: Tab,
+ TypeTable: TypeTable,
...components,
} as any;
}
diff --git a/packages/core/README.md b/packages/core/README.md
index 6ad9973798..87b1e80f30 100644
--- a/packages/core/README.md
+++ b/packages/core/README.md
@@ -10,7 +10,7 @@ React rich text editor. Easily add a modern text editing experience to your app.
-
+
@@ -18,7 +18,7 @@ React rich text editor. Easily add a modern text editing experience to your app.
Homepage
-
Documentation
- -
+ -
Quickstart
-
Examples
@@ -54,31 +54,31 @@ If you prefer to create your own UI components (menus), or don't want to use Rea
BlockNote comes with a number of features and components to make it easy to embed a high-quality block-based editor in your app:
-### Animations:
+### Animations
-### Helpful placeholders:
+### Helpful placeholders
-### Drag and drop blocks:
+### Drag and drop blocks
-### Nesting / indentation with tab and shift+tab:
+### Nesting / indentation with tab and shift+tab
-### Slash (/) menu:
+### Slash (/) menu
-### Format menu:
+### Format menu
-### Real-time collaboration:
+### Real-time collaboration
diff --git a/packages/core/src/editor/BlockNoteEditor.ts b/packages/core/src/editor/BlockNoteEditor.ts
index 8008312c34..4b5f896e05 100644
--- a/packages/core/src/editor/BlockNoteEditor.ts
+++ b/packages/core/src/editor/BlockNoteEditor.ts
@@ -155,8 +155,11 @@ export type BlockNoteEditorOptions<
/**
* When enabled, allows for collaboration between multiple users.
+ * See [Real-time Collaboration](https://www.blocknotejs.org/docs/advanced/real-time-collaboration) for more info.
+ *
+ * @remarks `CollaborationOptions`
*/
- collaboration: {
+ collaboration?: {
/**
* The Yjs XML fragment that's used for collaboration.
*/
@@ -190,7 +193,13 @@ export type BlockNoteEditorOptions<
*/
codeBlock?: CodeBlockOptions;
- comments: {
+ /**
+ * Configuration for the comments feature, requires a `threadStore`.
+ *
+ * See [Comments](https://www.blocknotejs.org/docs/collaboration/comments) for more info.
+ * @remarks `CommentsOptions`
+ */
+ comments?: {
threadStore: ThreadStore;
};
@@ -199,25 +208,38 @@ export type BlockNoteEditorOptions<
*
* @default true
*/
- defaultStyles: boolean;
+ defaultStyles?: boolean;
/**
* A dictionary object containing translations for the editor.
+ *
+ * See [Localization / i18n](https://www.blocknotejs.org/docs/advanced/localization) for more info.
+ *
+ * @remarks `Dictionary` is a type that contains all the translations for the editor.
*/
dictionary?: Dictionary & Record;
/**
* Disable internal extensions (based on keys / extension name)
+ *
+ * @note Advanced
*/
- disableExtensions: string[];
+ disableExtensions?: string[];
/**
* An object containing attributes that should be added to HTML elements of the editor.
*
+ * See [Adding DOM Attributes](https://www.blocknotejs.org/docs/theming#adding-dom-attributes) for more info.
+ *
* @example { editor: { class: "my-editor-class" } }
+ * @remarks `Record>`
*/
- domAttributes: Partial;
+ domAttributes?: Partial;
+ /**
+ * A replacement indicator to use when dragging and dropping blocks. Uses the [ProseMirror drop cursor](https://github.com/ProseMirror/prosemirror-dropcursor), or a modified version when [Column Blocks](https://www.blocknotejs.org/docs/document-structure#column-blocks) are enabled.
+ * @remarks `() => Plugin`
+ */
dropCursor?: (opts: {
editor: BlockNoteEditor<
NoInfer,
@@ -230,9 +252,13 @@ export type BlockNoteEditorOptions<
}) => Plugin;
/**
- * The content that should be in the editor when it's created, represented as an array of partial block objects.
+ * The content that should be in the editor when it's created, represented as an array of {@link PartialBlock} objects.
+ *
+ * See [Partial Blocks](https://www.blocknotejs.org/docs/editor-api/manipulating-blocks#partial-blocks) for more info.
+ *
+ * @remarks `PartialBlock[]`
*/
- initialContent: PartialBlock<
+ initialContent?: PartialBlock<
NoInfer,
NoInfer,
NoInfer
@@ -240,14 +266,19 @@ export type BlockNoteEditorOptions<
/**
* @deprecated, provide placeholders via dictionary instead
+ * @internal
*/
- placeholders: Record<
+ placeholders?: Record<
string | "default" | "emptyDocument",
string | undefined
>;
/**
* Custom paste handler that can be used to override the default paste behavior.
+ *
+ * See [Paste Handling](https://www.blocknotejs.org/docs/advanced/paste-handling) for more info.
+ *
+ * @remarks `PasteHandler`
* @returns The function should return `true` if the paste event was handled, otherwise it should return `false` if it should be canceled or `undefined` if it should be handled by another handler.
*
* @example
@@ -284,10 +315,21 @@ export type BlockNoteEditorOptions<
* implementing custom protocols / schemes
* @returns The URL that's
*/
- resolveFileUrl: (url: string) => Promise;
+ resolveFileUrl?: (url: string) => Promise;
- resolveUsers: (userIds: string[]) => Promise;
+ /**
+ * Resolve user information for comments.
+ *
+ * See [Comments](https://www.blocknotejs.org/docs/collaboration/comments) for more info.
+ */
+ resolveUsers?: (userIds: string[]) => Promise;
+ /**
+ * The schema of the editor. The schema defines which Blocks, InlineContent, and Styles are available in the editor.
+ *
+ * See [Custom Schemas](https://www.blocknotejs.org/docs/custom-schemas) for more info.
+ * @remarks `BlockNoteSchema`
+ */
schema: BlockNoteSchema;
/**
@@ -301,31 +343,29 @@ export type BlockNoteEditorOptions<
setIdAttribute?: boolean;
/**
- * The detection mode for showing the side menu - "viewport" always shows the
- * side menu for the block next to the mouse cursor, while "editor" only shows
- * it when hovering the editor or the side menu itself.
- *
+ * Controls how the Side Menu and block drag & drop interact with the editor bounds.
+ * - When set to `"viewport"`, the Side Menu appears next to the nearest block to the cursor,
+ * regardless of viewport position. Block dropping is locked to editor bounds.
+ * - When set to `"editor"`, the Side Menu and block dropping only work within editor bounds.
+ * Required when using multiple editors.
* @default "viewport"
*/
- sideMenuDetection: "viewport" | "editor";
+ sideMenuDetection?: "viewport" | "editor";
/**
- Select desired behavior when pressing `Tab` (or `Shift-Tab`). Specifically,
- what should happen when a user has selected multiple blocks while a toolbar
- is open:
- - `"prefer-navigate-ui"`: Change focus to the toolbar. The user needs to
- first press `Escape` to close the toolbar, and can then indent multiple
- blocks. Better for keyboard accessibility.
- - `"prefer-indent"`: Regardless of whether toolbars are open, indent the
- selection of blocks. In this case, it's not possible to navigate toolbars
- with the keyboard.
-
- @default "prefer-navigate-ui"
+ * Determines behavior when pressing Tab (or Shift-Tab) while multiple blocks are selected and a toolbar is open.
+ * - `"prefer-navigate-ui"`: Changes focus to the toolbar. User must press Escape to close toolbar before indenting blocks. Better for keyboard accessibility.
+ * - `"prefer-indent"`: Always indents selected blocks, regardless of toolbar state. Keyboard navigation of toolbars not possible.
+ * @default "prefer-navigate-ui"
*/
- tabBehavior: "prefer-navigate-ui" | "prefer-indent";
+ tabBehavior?: "prefer-navigate-ui" | "prefer-indent";
/**
* Allows enabling / disabling features of tables.
+ *
+ * See [Tables](https://www.blocknotejs.org/docs/editor-basics/document-structure#tables) for more info.
+ *
+ * @remarks `TableConfig`
*/
tables?: {
/**
@@ -354,6 +394,11 @@ export type BlockNoteEditorOptions<
headers?: boolean;
};
+ /**
+ * An option which user can pass with `false` value to disable the automatic creation of a trailing new block on the next line when the user types or edits any block.
+ *
+ * @default true
+ */
trailingBlock?: boolean;
/**
@@ -364,23 +409,26 @@ export type BlockNoteEditorOptions<
*
* @param file The file that should be uploaded.
* @returns The URL of the uploaded file OR an object containing props that should be set on the file block (such as an id)
+ * @remarks `(file: File) => Promise`
*/
- uploadFile: (
+ uploadFile?: (
file: File,
blockId?: string,
) => Promise>;
/**
* additional tiptap options, undocumented
+ * @internal
*/
- _tiptapOptions: Partial;
+ _tiptapOptions?: Partial;
/**
* (experimental) add extra extensions to the editor
*
* @deprecated, should use `extensions` instead
+ * @internal
*/
- _extensions: Record<
+ _extensions?: Record<
string,
| { plugin: Plugin; priority?: number }
| ((editor: BlockNoteEditor) => {
@@ -390,9 +438,11 @@ export type BlockNoteEditorOptions<
>;
/**
- * Register
+ * Register extensions to the editor.
+ *
+ * @internal
*/
- extensions: Array;
+ extensions?: Array;
/**
* Boolean indicating whether the editor is in headless mode.
@@ -400,8 +450,9 @@ export type BlockNoteEditorOptions<
* but there's no underlying editor (UI) instantiated.
*
* You probably don't need to set this manually, but use the `server-util` package instead that uses this option internally
+ * @internal
*/
- _headless: boolean;
+ _headless?: boolean;
};
const blockNoteTipTapOptions = {
diff --git a/packages/react/README.md b/packages/react/README.md
index 6ad9973798..f5a97c6c50 100644
--- a/packages/react/README.md
+++ b/packages/react/README.md
@@ -10,7 +10,7 @@ React rich text editor. Easily add a modern text editing experience to your app.
-
+
@@ -18,8 +18,8 @@ React rich text editor. Easily add a modern text editing experience to your app.
Homepage
-
Documentation
- -
- Quickstart
+ -
+ Install
-
Examples
@@ -54,31 +54,31 @@ If you prefer to create your own UI components (menus), or don't want to use Rea
BlockNote comes with a number of features and components to make it easy to embed a high-quality block-based editor in your app:
-### Animations:
+### Animations
-### Helpful placeholders:
+### Helpful placeholders
-### Drag and drop blocks:
+### Drag and drop blocks
-### Nesting / indentation with tab and shift+tab:
+### Nesting / indentation with tab and shift+tab
-### Slash (/) menu:
+### Slash (/) menu
-### Format menu:
+### Format menu
-### Real-time collaboration:
+### Real-time collaboration
diff --git a/packages/react/src/editor/BlockNoteDefaultUI.tsx b/packages/react/src/editor/BlockNoteDefaultUI.tsx
index 73b010922a..6ef058466e 100644
--- a/packages/react/src/editor/BlockNoteDefaultUI.tsx
+++ b/packages/react/src/editor/BlockNoteDefaultUI.tsx
@@ -10,13 +10,52 @@ import { TableHandlesController } from "../components/TableHandles/TableHandlesC
import { useBlockNoteEditor } from "../hooks/useBlockNoteEditor.js";
export type BlockNoteDefaultUIProps = {
+ /**
+ * Whether the formatting toolbar should be enabled.
+ * @see {@link https://blocknotejs.org/docs/ui-components/formatting-toolbar}
+ */
formattingToolbar?: boolean;
+
+ /**
+ * Whether the link toolbar should be enabled.
+ * @see {@link https://blocknotejs.org/docs/ui-components/link-toolbar}
+ */
linkToolbar?: boolean;
+
+ /**
+ * Whether the slash menu should be enabled.
+ * @see {@link https://blocknotejs.org/docs/ui-components/suggestion-menus#slash-menu}
+ */
slashMenu?: boolean;
+
+ /**
+ * Whether the block side menu should be enabled.
+ * @see {@link https://blocknotejs.org/docs/ui-components/side-menu}
+ */
sideMenu?: boolean;
+
+ /**
+ * Whether the file panel should be enabled.
+ * @see {@link https://blocknotejs.org/docs/ui-components/file-panel}
+ */
filePanel?: boolean;
+
+ /**
+ * Whether the table handles should be enabled.
+ * @see {@link https://blocknotejs.org/docs/ui-components/table-handles}
+ */
tableHandles?: boolean;
+
+ /**
+ * Whether the emoji picker should be enabled.
+ * @see {@link https://blocknotejs.org/docs/advanced/grid-suggestion-menus#emoji-picker}
+ */
emojiPicker?: boolean;
+
+ /**
+ * Whether the default comments UI feature should be enabled.
+ * @see {@link https://blocknotejs.org/docs/ui-components/comments}
+ */
comments?: boolean;
};
diff --git a/packages/react/src/editor/BlockNoteView.tsx b/packages/react/src/editor/BlockNoteView.tsx
index 8fba028132..0738019da1 100644
--- a/packages/react/src/editor/BlockNoteView.tsx
+++ b/packages/react/src/editor/BlockNoteView.tsx
@@ -45,17 +45,16 @@ export type BlockNoteViewProps<
ISchema extends InlineContentSchema,
SSchema extends StyleSchema,
> = {
+ /**
+ * The {@link BlockNoteEditor} instance to render.
+ * @remarks `BlockNoteEditor`
+ */
editor: BlockNoteEditor;
- theme?: "light" | "dark";
-
/**
- * Whether to render the editor element itself.
- * When `false`, you're responsible for rendering the editor yourself using the `BlockNoteViewEditor` component.
- *
- * @default true
+ * The editor's theme, see [Themes](https://www.blocknotejs.org/docs/styling-theming/themes) for more about this.
*/
- renderEditor?: boolean;
+ theme?: "light" | "dark";
/**
* Locks the editor from being editable by the user if set to `false`.
@@ -70,26 +69,39 @@ export type BlockNoteViewProps<
/**
* A callback function that runs whenever the editor's contents change.
+ * Same as {@link BlockNoteEditor.onChange}.
+ * @remarks `(editor: BlockNoteEditor) => void`
*/
onChange?: Parameters<
BlockNoteEditor["onChange"]
>[0];
+ /**
+ * Whether to render the editor element itself.
+ * When `false`, you're responsible for rendering the editor yourself using the {@link BlockNoteViewEditor} component.
+ *
+ * @default true
+ */
+ renderEditor?: boolean;
+
+ /**
+ * Pass child elements to the {@link BlockNoteView} to create or customize toolbars, menus, or other UI components. See [UI Components](https://www.blocknotejs.org/docs/ui-components) for more.
+ */
children?: ReactNode;
ref?: Ref | undefined; // only here to get types working with the generics. Regular form doesn't work
-} & Omit<
- HTMLAttributes,
- "onChange" | "onSelectionChange" | "children"
-> &
- BlockNoteDefaultUIProps;
+} & BlockNoteDefaultUIProps;
function BlockNoteViewComponent<
BSchema extends BlockSchema,
ISchema extends InlineContentSchema,
SSchema extends StyleSchema,
>(
- props: BlockNoteViewProps,
+ props: BlockNoteViewProps &
+ Omit<
+ HTMLAttributes,
+ "onChange" | "onSelectionChange" | "children"
+ >,
ref: React.Ref,
) {
const {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index fc4d3f53e8..3efae91d7f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -3117,25 +3117,25 @@ importers:
fumadocs:
dependencies:
'@ai-sdk/anthropic':
- specifier: ^1.2.12
+ specifier: ^1.2.11
version: 1.2.12(zod@3.25.57)
'@ai-sdk/groq':
- specifier: ^1.2.9
+ specifier: ^1.1.0
version: 1.2.9(zod@3.25.57)
'@ai-sdk/mistral':
specifier: ^1.2.8
version: 1.2.8(zod@3.25.57)
'@ai-sdk/openai':
- specifier: ^1.3.22
+ specifier: ^1.1.0
version: 1.3.22(zod@3.25.57)
'@ai-sdk/openai-compatible':
specifier: ^0.2.14
version: 0.2.14(zod@3.25.57)
'@aws-sdk/client-s3':
- specifier: ^3.826.0
+ specifier: ^3.609.0
version: 3.826.0
'@aws-sdk/s3-request-presigner':
- specifier: ^3.826.0
+ specifier: ^3.609.0
version: 3.826.0
'@blocknote/code-block':
specifier: latest
@@ -3159,10 +3159,10 @@ importers:
specifier: latest
version: link:../packages/xl-pdf-exporter
'@emotion/react':
- specifier: ^11.14.0
+ specifier: ^11.11.4
version: 11.14.0(@types/react@19.1.7)(react@19.1.0)
'@emotion/styled':
- specifier: ^11.14.0
+ specifier: ^11.11.5
version: 11.14.0(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react@19.1.0)
'@fumadocs/mdx-remote':
specifier: 1.3.0
@@ -3174,28 +3174,28 @@ importers:
specifier: ^2.1.4
version: 2.2.0(react@19.1.0)
'@liveblocks/client':
- specifier: ^2.24.3
+ specifier: ^2.23.1
version: 2.24.3
'@liveblocks/react':
- specifier: ^2.24.3
+ specifier: ^2.23.1
version: 2.24.3(react@19.1.0)
'@liveblocks/react-blocknote':
- specifier: ^2.24.3
+ specifier: ^2.23.1
version: 2.24.3(04e518e4182a3036b4a35283aa97679f)
'@liveblocks/react-tiptap':
- specifier: ^2.24.3
+ specifier: ^2.23.1
version: 2.24.3(@tiptap/extension-collaboration-cursor@2.11.5(@tiptap/core@2.14.0(@tiptap/pm@2.12.0))(y-prosemirror@1.3.4(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.38.1)(y-protocols@1.0.6(yjs@13.6.27))(yjs@13.6.27)))(@tiptap/extension-collaboration@2.11.5(@tiptap/core@2.14.0(@tiptap/pm@2.12.0))(@tiptap/pm@2.12.0)(y-prosemirror@1.3.4(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.38.1)(y-protocols@1.0.6(yjs@13.6.27))(yjs@13.6.27)))(@tiptap/pm@2.12.0)(@tiptap/react@2.12.0(@tiptap/core@2.14.0(@tiptap/pm@2.12.0))(@tiptap/pm@2.12.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tiptap/suggestion@2.11.7(@tiptap/core@2.14.0(@tiptap/pm@2.12.0))(@tiptap/pm@2.12.0))(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.38.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(y-protocols@1.0.6(yjs@13.6.27))
'@liveblocks/react-ui':
- specifier: ^2.24.3
+ specifier: ^2.23.1
version: 2.24.3(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@mantine/core':
- specifier: ^7.17.8
+ specifier: ^7.10.1
version: 7.17.8(@mantine/hooks@7.17.3(react@19.1.0))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@mui/icons-material':
- specifier: ^5.17.1
+ specifier: ^5.16.1
version: 5.17.1(@mui/material@5.17.1(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@types/react@19.1.7)(react@19.1.0)
'@mui/material':
- specifier: ^5.17.1
+ specifier: ^5.16.1
version: 5.17.1(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@polar-sh/better-auth':
specifier: ^0.1.2
@@ -3216,22 +3216,22 @@ importers:
specifier: 9.14.0
version: 9.14.0(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.4.0-canary.75(@babel/core@7.26.10)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(webpack@5.98.0)
'@shikijs/core':
- specifier: ^3.6.0
+ specifier: ^3.2.1
version: 3.6.0
'@shikijs/engine-javascript':
- specifier: ^3.6.0
+ specifier: ^3.2.1
version: 3.6.0
'@shikijs/langs-precompiled':
- specifier: ^3.6.0
+ specifier: ^3.2.1
version: 3.6.0
'@shikijs/themes':
- specifier: ^3.6.0
+ specifier: ^3.2.1
version: 3.6.0
'@shikijs/types':
- specifier: ^3.6.0
+ specifier: ^3.2.1
version: 3.6.0
'@tiptap/core':
- specifier: ^2.14.0
+ specifier: ^2.12.0
version: 2.14.0(@tiptap/pm@2.12.0)
'@uppy/core':
specifier: ^3.13.1
@@ -3258,13 +3258,13 @@ importers:
specifier: ^3.2.0
version: 3.2.0(@uppy/core@3.13.1)
'@uppy/status-bar':
- specifier: ^3.3.3
+ specifier: ^3.1.1
version: 3.3.3(@uppy/core@3.13.1)
'@uppy/webcam':
specifier: ^3.4.2
version: 3.4.2(@uppy/core@3.13.1)
'@uppy/xhr-upload':
- specifier: ^3.6.8
+ specifier: ^3.4.0
version: 3.6.8(@uppy/core@3.13.1)
'@vercel/analytics':
specifier: ^1.5.0
@@ -3273,10 +3273,10 @@ importers:
specifier: ^0.6.8
version: 0.6.8
'@y-sweet/react':
- specifier: ^0.6.4
+ specifier: ^0.6.3
version: 0.6.4(react@19.1.0)(yjs@13.6.27)
ai:
- specifier: ^4.3.16
+ specifier: ^4.1.0
version: 4.3.16(react@19.1.0)(zod@3.25.57)
babel-plugin-react-compiler:
specifier: 19.1.0-rc.2
@@ -3294,7 +3294,7 @@ importers:
specifier: 2.1.1
version: 2.1.1
docx:
- specifier: ^9.5.0
+ specifier: ^9.0.2
version: 9.5.0
framer-motion:
specifier: ^10.16.16
@@ -3308,6 +3308,9 @@ importers:
fumadocs-mdx:
specifier: ^11.6.7
version: 11.6.7(@fumadocs/mdx-remote@1.3.0(acorn@8.14.1)(fumadocs-core@15.5.1(@types/react@19.1.7)(next@15.4.0-canary.75(@babel/core@7.26.10)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0))(acorn@8.14.1)(fumadocs-core@15.5.1(@types/react@19.1.7)(next@15.4.0-canary.75(@babel/core@7.26.10)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(next@15.4.0-canary.75(@babel/core@7.26.10)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))
+ fumadocs-twoslash:
+ specifier: 3.1.4
+ version: 3.1.4(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(fumadocs-ui@15.5.1(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(next@15.4.0-canary.75(@babel/core@7.26.10)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(tailwindcss@4.1.8))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
fumadocs-typescript:
specifier: 4.0.5
version: 4.0.5(typescript@5.8.3)
@@ -3333,7 +3336,7 @@ importers:
specifier: ^19.1.0
version: 19.1.0(react@19.1.0)
react-icons:
- specifier: ^5.5.0
+ specifier: ^5.2.1
version: 5.5.0(react@19.1.0)
remark:
specifier: 15.0.1
@@ -3350,17 +3353,23 @@ importers:
shiki:
specifier: 3.3.0
version: 3.3.0
+ ts-morph:
+ specifier: 26.0.0
+ version: 26.0.0
+ twoslash:
+ specifier: 0.3.1
+ version: 0.3.1(typescript@5.8.3)
y-partykit:
- specifier: ^0.0.33
- version: 0.0.33(react@19.1.0)(y-protocols@1.0.6(yjs@13.6.27))(yjs@13.6.27)
+ specifier: ^0.0.25
+ version: 0.0.25
yjs:
- specifier: ^13.6.27
+ specifier: ^13.6.15
version: 13.6.27
zod:
specifier: ^3.25.57
version: 3.25.57
zustand:
- specifier: ^5.0.5
+ specifier: ^5.0.3
version: 5.0.5(@types/react@19.1.7)(immer@10.1.1)(react@19.1.0)(use-sync-external-store@1.4.0(react@19.1.0))
devDependencies:
'@blocknote/ariakit':
@@ -9430,6 +9439,9 @@ packages:
'@shikijs/core@3.6.0':
resolution: {integrity: sha512-9By7Xb3olEX0o6UeJyPLI1PE1scC4d3wcVepvtv2xbuN9/IThYN4Wcwh24rcFeASzPam11MCq8yQpwwzCgSBRw==}
+ '@shikijs/core@3.7.0':
+ resolution: {integrity: sha512-yilc0S9HvTPyahHpcum8eonYrQtmGTU0lbtwxhA6jHv4Bm1cAdlPFRCJX4AHebkCm75aKTjjRAW+DezqD1b/cg==}
+
'@shikijs/engine-javascript@3.2.1':
resolution: {integrity: sha512-eMdcUzN3FMQYxOmRf2rmU8frikzoSHbQDFH2hIuXsrMO+IBOCI9BeeRkCiBkcLDHeRKbOCtYMJK3D6U32ooU9Q==}
@@ -9477,6 +9489,11 @@ packages:
'@shikijs/transformers@3.6.0':
resolution: {integrity: sha512-PYkU54lYV0RCaUG8n2FNTF+YWiU3uPhcjLGq2x/C8lIrUX9GVnRb3bK+R5xtdFHbuctntATKm7ondp/H/dux9Q==}
+ '@shikijs/twoslash@3.7.0':
+ resolution: {integrity: sha512-EjnV193iasm/M5UHVDJg6WyX6dIMCb0YhsKKlgWv3OK7iLFjuW7sUp978ZkO2OIn3niqBT6e+CX1LgoPM8jYjQ==}
+ peerDependencies:
+ typescript: '>=5.5.0'
+
'@shikijs/types@3.2.1':
resolution: {integrity: sha512-/NTWAk4KE2M8uac0RhOsIhYQf4pdU0OywQuYDGIGAJ6Mjunxl2cGiuLkvu4HLCMn+OTTLRWkjZITp+aYJv60yA==}
@@ -9486,6 +9503,9 @@ packages:
'@shikijs/types@3.6.0':
resolution: {integrity: sha512-cLWFiToxYu0aAzJqhXTQsFiJRTFDAGl93IrMSBNaGSzs7ixkLfdG6pH11HipuWFGW5vyx4X47W8HDQ7eSrmBUg==}
+ '@shikijs/types@3.7.0':
+ resolution: {integrity: sha512-MGaLeaRlSWpnP0XSAum3kP3a8vtcTsITqoEPYdt3lQG3YCdQH4DnEhodkYcNMcU0uW0RffhoD1O3e0vG5eSBBg==}
+
'@shikijs/vscode-textmate@10.0.2':
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
@@ -10461,6 +10481,11 @@ packages:
resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@typescript/vfs@1.6.1':
+ resolution: {integrity: sha512-JwoxboBh7Oz1v38tPbkrZ62ZXNHAk9bJ7c9x0eI5zBfBnBYGhURdbnh7Z4smN/MV48Y5OCcZb58n972UtbazsA==}
+ peerDependencies:
+ typescript: '*'
+
'@ungap/structured-clone@1.3.0':
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
@@ -12598,6 +12623,16 @@ packages:
'@fumadocs/mdx-remote':
optional: true
+ fumadocs-twoslash@3.1.4:
+ resolution: {integrity: sha512-mD3byKodAZ9c7OG6coppMUg/KcaYlM5DznTR4Yh0/adFkaToFYJcK/cJHHc/hHSou9WOXlwdSOrDUdMny8Qugw==}
+ peerDependencies:
+ '@types/react': '*'
+ fumadocs-ui: ^15.0.0
+ react: 18.x.x || 19.x.x
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
fumadocs-typescript@4.0.5:
resolution: {integrity: sha512-PN6BKj0jhs9KYUPf9mBIXFoBl7kGywTa/1ks3H8Mrs46geiY2u5amHHdPy5KLnqXrdW6jlCekciV3ztO7qi77g==}
peerDependencies:
@@ -16055,6 +16090,9 @@ packages:
tailwind-merge@3.3.0:
resolution: {integrity: sha512-fyW/pEfcQSiigd5SNn0nApUOxx0zB/dm6UDU/rEwc2c3sX2smWUNbapHv+QRqLGVp9GWX3THIa7MUGPo+YkDzQ==}
+ tailwind-merge@3.3.1:
+ resolution: {integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==}
+
tailwindcss-animate@1.0.7:
resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==}
peerDependencies:
@@ -16263,6 +16301,14 @@ packages:
tunnel-agent@0.6.0:
resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
+ twoslash-protocol@0.3.1:
+ resolution: {integrity: sha512-BMePTL9OkuNISSyyMclBBhV2s9++DiOCyhhCoV5Kaht6eaWLwVjCCUJHY33eZJPsyKeZYS8Wzz0h+XI01VohVw==}
+
+ twoslash@0.3.1:
+ resolution: {integrity: sha512-OGqMTGvqXTcb92YQdwGfEdK0nZJA64Aj/ChLOelbl3TfYch2IoBST0Yx4C0LQ7Lzyqm9RpgcpgDxeXQIz4p2Kg==}
+ peerDependencies:
+ typescript: ^5.5.0
+
type-check@0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
@@ -16921,16 +16967,6 @@ packages:
y-partykit@0.0.25:
resolution: {integrity: sha512-/EIL73TuYX6lYnxM4mb/kTTKllS1vNjBXk9KJXFwTXFrUqMo8hbJMqnE+glvBG2EDejEI06rk3jR50lpDB8Dqg==}
- y-partykit@0.0.33:
- resolution: {integrity: sha512-TqM2H/C1fBZbFjL9kpBLC3EWWaizBUYdFzW5DMGmcZYfQv5tYYIBTqUW4eCZOXHkhNLTEA+s2ydSKGYi8u1+sg==}
- peerDependencies:
- react: '*'
- y-protocols: ^1.0.6
- yjs: ^13.6.16
- peerDependenciesMeta:
- react:
- optional: true
-
y-prosemirror@1.3.4:
resolution: {integrity: sha512-fvklwVnjowbrtmM5PkyIrHNoqe7Bt1KEtBvucsJNCSZwOQYNR5UcKwJmhUOaEHUAyYPg7RrVqnMK/3DvMBU8dA==}
engines: {node: '>=16.0.0', npm: '>=8.0.0'}
@@ -18160,7 +18196,7 @@ snapshots:
'@babel/core': 7.26.10
'@babel/helper-compilation-targets': 7.27.0
'@babel/helper-plugin-utils': 7.26.5
- debug: 4.4.0
+ debug: 4.4.1
lodash.debounce: 4.0.8
resolve: 1.22.10
transitivePeerDependencies:
@@ -23355,6 +23391,13 @@ snapshots:
'@types/hast': 3.0.4
hast-util-to-html: 9.0.5
+ '@shikijs/core@3.7.0':
+ dependencies:
+ '@shikijs/types': 3.7.0
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+ hast-util-to-html: 9.0.5
+
'@shikijs/engine-javascript@3.2.1':
dependencies:
'@shikijs/types': 3.2.1
@@ -23431,6 +23474,15 @@ snapshots:
'@shikijs/core': 3.6.0
'@shikijs/types': 3.6.0
+ '@shikijs/twoslash@3.7.0(typescript@5.8.3)':
+ dependencies:
+ '@shikijs/core': 3.7.0
+ '@shikijs/types': 3.7.0
+ twoslash: 0.3.1(typescript@5.8.3)
+ typescript: 5.8.3
+ transitivePeerDependencies:
+ - supports-color
+
'@shikijs/types@3.2.1':
dependencies:
'@shikijs/vscode-textmate': 10.0.2
@@ -23446,6 +23498,11 @@ snapshots:
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
+ '@shikijs/types@3.7.0':
+ dependencies:
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+
'@shikijs/vscode-textmate@10.0.2': {}
'@shuding/opentype.js@1.4.0-beta.0':
@@ -24762,6 +24819,13 @@ snapshots:
'@typescript-eslint/types': 5.62.0
eslint-visitor-keys: 3.4.3
+ '@typescript/vfs@1.6.1(typescript@5.8.3)':
+ dependencies:
+ debug: 4.4.1
+ typescript: 5.8.3
+ transitivePeerDependencies:
+ - supports-color
+
'@ungap/structured-clone@1.3.0': {}
'@unrs/resolver-binding-darwin-arm64@1.3.2':
@@ -25248,7 +25312,7 @@ snapshots:
agent-base@6.0.2:
dependencies:
- debug: 4.4.0
+ debug: 4.4.1
transitivePeerDependencies:
- supports-color
@@ -25774,7 +25838,7 @@ snapshots:
capnp-ts@0.7.0:
dependencies:
- debug: 4.4.0
+ debug: 4.4.1
tslib: 2.8.1
transitivePeerDependencies:
- supports-color
@@ -27443,6 +27507,26 @@ snapshots:
- acorn
- supports-color
+ fumadocs-twoslash@3.1.4(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(fumadocs-ui@15.5.1(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(next@15.4.0-canary.75(@babel/core@7.26.10)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(tailwindcss@4.1.8))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3):
+ dependencies:
+ '@radix-ui/react-popover': 1.1.14(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@shikijs/twoslash': 3.7.0(typescript@5.8.3)
+ fumadocs-ui: 15.5.1(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(next@15.4.0-canary.75(@babel/core@7.26.10)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(tailwindcss@4.1.8)
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-gfm: 3.1.0
+ mdast-util-to-hast: 13.2.0
+ react: 19.1.0
+ shiki: 3.6.0
+ tailwind-merge: 3.3.1
+ twoslash: 0.3.1(typescript@5.8.3)
+ optionalDependencies:
+ '@types/react': 19.1.7
+ transitivePeerDependencies:
+ - '@types/react-dom'
+ - react-dom
+ - supports-color
+ - typescript
+
fumadocs-typescript@4.0.5(typescript@5.8.3):
dependencies:
estree-util-value-to-estree: 3.4.0
@@ -29600,7 +29684,7 @@ snapshots:
micromark@3.2.0:
dependencies:
'@types/debug': 4.1.12
- debug: 4.4.0
+ debug: 4.4.1
decode-named-character-reference: 1.1.0
micromark-core-commonmark: 1.1.0
micromark-factory-space: 1.1.0
@@ -29622,7 +29706,7 @@ snapshots:
micromark@4.0.2:
dependencies:
'@types/debug': 4.1.12
- debug: 4.4.0
+ debug: 4.4.1
decode-named-character-reference: 1.1.0
devlop: 1.1.0
micromark-core-commonmark: 2.0.3
@@ -32205,6 +32289,8 @@ snapshots:
tailwind-merge@3.3.0: {}
+ tailwind-merge@3.3.1: {}
+
tailwindcss-animate@1.0.7(tailwindcss@3.4.17):
dependencies:
tailwindcss: 3.4.17
@@ -32433,6 +32519,16 @@ snapshots:
dependencies:
safe-buffer: 5.2.1
+ twoslash-protocol@0.3.1: {}
+
+ twoslash@0.3.1(typescript@5.8.3):
+ dependencies:
+ '@typescript/vfs': 1.6.1(typescript@5.8.3)
+ twoslash-protocol: 0.3.1
+ typescript: 5.8.3
+ transitivePeerDependencies:
+ - supports-color
+
type-check@0.4.0:
dependencies:
prelude-ls: 1.2.1
@@ -33337,17 +33433,8 @@ snapshots:
lib0: 0.2.101
lodash.debounce: 4.0.8
react: 18.3.1
- y-protocols: 1.0.6(yjs@13.6.24)
- yjs: 13.6.24
-
- y-partykit@0.0.33(react@19.1.0)(y-protocols@1.0.6(yjs@13.6.27))(yjs@13.6.27):
- dependencies:
- lib0: 0.2.101
- lodash.debounce: 4.0.8
y-protocols: 1.0.6(yjs@13.6.27)
yjs: 13.6.27
- optionalDependencies:
- react: 19.1.0
y-prosemirror@1.3.4(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.38.1)(y-protocols@1.0.6(yjs@13.6.24))(yjs@13.6.24):
dependencies: