Next.js usage (or other server-side React frameworks)
diff --git a/docs/pages/docs/styling-theming/themes.mdx b/docs/pages/docs/styling-theming/themes.mdx
index 335205bd63..8c74c91cda 100644
--- a/docs/pages/docs/styling-theming/themes.mdx
+++ b/docs/pages/docs/styling-theming/themes.mdx
@@ -11,6 +11,8 @@ import { Example } from "@/components/example";
Themes let you quickly change the basic look of the editor UI, including colors, borders, shadows, and font. If you want to set more complex styles on the editor, see [Overriding CSS](/docs/styling-theming/overriding-css).
+_Themes are only available when using the default Mantine components. ShadCN / Ariakit components can be styled differently._
+
## Theme CSS Variables
A theme is made up of a set of CSS variables, which can be overwritten to change the editor theme. BlockNote comes with two default themes, one for light and one for dark mode, which are selected based on system preference.
diff --git a/docs/pages/docs/ui-components/_meta.json b/docs/pages/docs/ui-components/_meta.json
index 5784d1ed55..5aeec08e5a 100644
--- a/docs/pages/docs/ui-components/_meta.json
+++ b/docs/pages/docs/ui-components/_meta.json
@@ -1,7 +1,7 @@
{
"side-menu": "Block Side Menu",
"formatting-toolbar": "Formatting Toolbar",
- "link-toolbar": {
+ "hyperlink-toolbar": {
"title": "Link Toolbar",
"display": "hidden"
},
diff --git a/docs/pages/docs/ui-components/formatting-toolbar.mdx b/docs/pages/docs/ui-components/formatting-toolbar.mdx
index 2f2ee74ad3..ffe62720bf 100644
--- a/docs/pages/docs/ui-components/formatting-toolbar.mdx
+++ b/docs/pages/docs/ui-components/formatting-toolbar.mdx
@@ -23,21 +23,14 @@ You can change or replace the Formatting Toolbar with your own React component.
+We first define our custom `BlueButton`. The `useComponentsContext` hook gets all components used internally by BlockNote, so we want to use `Components.FormattingToolbar.Button` for this.
+
We use the `FormattingToolbar` component to create a custom Formatting Toolbar. By specifying its children, we can replace the default buttons in the toolbar with our own.
This custom Formatting Toolbar is passed to a `FormattingToolbarController`, which controls its position and visibility (above or below the highlighted text).
Setting `formattingToolbar={false}` on `BlockNoteView` tells BlockNote not to show the default Formatting Toolbar.
-
-
- Tip: The children you pass to the `FormattingToolbar` component
- should be default selects/buttons (e.g. `BlockTypeSelect` & `BasicTextStyleButton`) or custom selects/buttons
- (`ToolbarSelect` & `ToolbarButton`). To see all the components you can use, head to the
- [Formatting Toolbar's source code](https://github.com/TypeCellOS/BlockNote/blob/main/packages/react/src/components/FormattingToolbar/mantine/FormattingToolbar.tsx).
-
-
-
## Changing Block Type Select (Dropdown) Items
The first element in the default Formatting Toolbar is the Block Type Select, and you can change the items in it. The demo makes the Block Type Select work for image blocks by adding an item to it.
diff --git a/docs/pages/docs/ui-components/hyperlink-toolbar.mdx b/docs/pages/docs/ui-components/hyperlink-toolbar.mdx
index 2f1ea13f49..8ab0464757 100644
--- a/docs/pages/docs/ui-components/hyperlink-toolbar.mdx
+++ b/docs/pages/docs/ui-components/hyperlink-toolbar.mdx
@@ -19,19 +19,12 @@ TODO Image
You can change or replace the Link Toolbar with your own React component. In the demo below, a button is added to the default Link Toolbar, which opens a browser alert.
-[//]: # ( )
+[//]: # ' '
+
+We first define our custom `AlertButton`. The `useComponentsContext` hook gets all components used internally by BlockNote, so we want to use `Components.LinkToolbar.Button` for this.
We use the `LinkToolbar` component to create a custom Link Toolbar. By specifying its children, we can replace the default buttons in the toolbar with our own.
This custom Link Toolbar is passed to a `LinkToolbarController`, which controls its position and visibility (above or below the hovered link).
Setting `linkToolbar={false}` on `BlockNoteView` tells BlockNote not to show the default Link Toolbar.
-
-
-
- Tip: The children you pass to the `LinkToolbar`
- component should be default buttons (e.g. TODO) or custom selects/buttons
- (`ToolbarSelect` & `ToolbarButton`). To see all the components you can
- use, head to the [Link Toolbar's source code](link).
-
-
diff --git a/docs/pages/docs/ui-components/side-menu.mdx b/docs/pages/docs/ui-components/side-menu.mdx
index 6a23c1d826..4236843ddf 100644
--- a/docs/pages/docs/ui-components/side-menu.mdx
+++ b/docs/pages/docs/ui-components/side-menu.mdx
@@ -31,21 +31,14 @@ You can change or replace the Block Side Menu with your own React component. In
+We first define our custom `RemoveBlockButton`. The `useComponentsContext` hook gets all components used internally by BlockNote, so we want to use `Components.SideMenu.Button` for this.
+
We use the `SideMenu` component to create a custom Block Side Menu. By specifying its children, we can replace the default buttons in the menu with our own.
This custom Side Menu is passed to a `SideMenuController`, which controls its position and visibility (on the left side when you hover a block).
Setting `sideMenu={false}` on `BlockNoteView` tells BlockNote not to show the default Block Side Menu.
-
-
- Tip: The children you pass to the `SideMenu` component
- should be default buttons (e.g. `DragHandleButton`) or custom buttons
- (`SideMenuButton`). To see all the components you can use, head to the
- [Side Menu's source code](link).
-
-
-
## Changing Drag Handle Menu Items
You can also change the items in the Drag Handle Menu. The demo below adds an item that resets the block type to a paragraph.
diff --git a/docs/styles.css b/docs/styles.css
index 510ff1d534..ada51f15b1 100644
--- a/docs/styles.css
+++ b/docs/styles.css
@@ -2,3 +2,11 @@
@tailwind components;
@tailwind utilities;
@tailwind variants;
+
+/* Hack needed because the ShadCN Tailwind config overrides the Nextra Tailwind
+config. This is a problem because ShadCN relies on CSS variables which are only
+scoped to the editor, and are undefined when Nextra components try to use them.
+Seems like this only affects border radius in the demos though. */
+body {
+ --radius: 0.5rem;
+}
\ No newline at end of file
diff --git a/examples/01-basic/01-minimal/App.tsx b/examples/01-basic/01-minimal/App.tsx
index 55a0cc8e69..c545b7b4dd 100644
--- a/examples/01-basic/01-minimal/App.tsx
+++ b/examples/01-basic/01-minimal/App.tsx
@@ -1,6 +1,7 @@
import "@blocknote/core/fonts/inter.css";
-import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
export default function App() {
// Creates a new editor instance.
diff --git a/examples/01-basic/01-minimal/package.json b/examples/01-basic/01-minimal/package.json
index 41993cc9e0..81b9a97220 100644
--- a/examples/01-basic/01-minimal/package.json
+++ b/examples/01-basic/01-minimal/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-minimal",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/01-basic/02-block-objects/App.tsx b/examples/01-basic/02-block-objects/App.tsx
index 45cd7c39e6..846df5d180 100644
--- a/examples/01-basic/02-block-objects/App.tsx
+++ b/examples/01-basic/02-block-objects/App.tsx
@@ -1,7 +1,8 @@
import { Block } from "@blocknote/core";
import "@blocknote/core/fonts/inter.css";
-import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import { useState } from "react";
import "./styles.css";
diff --git a/examples/01-basic/02-block-objects/package.json b/examples/01-basic/02-block-objects/package.json
index 0acac38a6d..b837666f72 100644
--- a/examples/01-basic/02-block-objects/package.json
+++ b/examples/01-basic/02-block-objects/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-block-objects",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/01-basic/03-all-blocks/App.tsx b/examples/01-basic/03-all-blocks/App.tsx
index 19758e6017..ff6e4d05bd 100644
--- a/examples/01-basic/03-all-blocks/App.tsx
+++ b/examples/01-basic/03-all-blocks/App.tsx
@@ -1,6 +1,7 @@
import "@blocknote/core/fonts/inter.css";
-import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
export default function App() {
// Creates a new editor instance.
diff --git a/examples/01-basic/03-all-blocks/package.json b/examples/01-basic/03-all-blocks/package.json
index 39561f0b95..7e7b18cbde 100644
--- a/examples/01-basic/03-all-blocks/package.json
+++ b/examples/01-basic/03-all-blocks/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-all-blocks",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/01-basic/04-selection-blocks/App.tsx b/examples/01-basic/04-selection-blocks/App.tsx
index 5649a37878..5251754f5a 100644
--- a/examples/01-basic/04-selection-blocks/App.tsx
+++ b/examples/01-basic/04-selection-blocks/App.tsx
@@ -1,7 +1,8 @@
import { Block } from "@blocknote/core";
import "@blocknote/core/fonts/inter.css";
-import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import { useState } from "react";
import "./styles.css";
diff --git a/examples/01-basic/04-selection-blocks/package.json b/examples/01-basic/04-selection-blocks/package.json
index e087a6d5ff..1ee11c639e 100644
--- a/examples/01-basic/04-selection-blocks/package.json
+++ b/examples/01-basic/04-selection-blocks/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-selection-blocks",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/01-basic/05-block-manipulation/App.tsx b/examples/01-basic/05-block-manipulation/App.tsx
index f961d3527d..412f39c56e 100644
--- a/examples/01-basic/05-block-manipulation/App.tsx
+++ b/examples/01-basic/05-block-manipulation/App.tsx
@@ -1,6 +1,7 @@
import "@blocknote/core/fonts/inter.css";
-import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import "./styles.css";
diff --git a/examples/01-basic/05-block-manipulation/package.json b/examples/01-basic/05-block-manipulation/package.json
index 9a0b49bbf6..2686943289 100644
--- a/examples/01-basic/05-block-manipulation/package.json
+++ b/examples/01-basic/05-block-manipulation/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-block-manipulation",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/01-basic/06-file-uploading/App.tsx b/examples/01-basic/06-file-uploading/App.tsx
index c7fea399e8..725c2346a9 100644
--- a/examples/01-basic/06-file-uploading/App.tsx
+++ b/examples/01-basic/06-file-uploading/App.tsx
@@ -1,6 +1,7 @@
import "@blocknote/core/fonts/inter.css";
-import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
// Uploads a file to tmpfiles.org and returns the URL to the uploaded file.
async function uploadFile(file: File) {
diff --git a/examples/01-basic/06-file-uploading/package.json b/examples/01-basic/06-file-uploading/package.json
index 4d80ea85cb..00cbc515d8 100644
--- a/examples/01-basic/06-file-uploading/package.json
+++ b/examples/01-basic/06-file-uploading/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-file-uploading",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/01-basic/07-saving-loading/App.tsx b/examples/01-basic/07-saving-loading/App.tsx
index df8a07b99e..5fe11c206b 100644
--- a/examples/01-basic/07-saving-loading/App.tsx
+++ b/examples/01-basic/07-saving-loading/App.tsx
@@ -1,7 +1,7 @@
import { Block, BlockNoteEditor, PartialBlock } from "@blocknote/core";
import "@blocknote/core/fonts/inter.css";
-import { BlockNoteView } from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import { useEffect, useMemo, useState } from "react";
async function saveToStorage(jsonBlocks: Block[]) {
diff --git a/examples/01-basic/07-saving-loading/package.json b/examples/01-basic/07-saving-loading/package.json
index 927b53a1d9..10dd1597ec 100644
--- a/examples/01-basic/07-saving-loading/package.json
+++ b/examples/01-basic/07-saving-loading/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-saving-loading",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/01-basic/08-shadcn/.bnexample.json b/examples/01-basic/08-shadcn/.bnexample.json
new file mode 100644
index 0000000000..6d4a02dd52
--- /dev/null
+++ b/examples/01-basic/08-shadcn/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "matthewlipski",
+ "tags": ["Basic"]
+}
diff --git a/examples/01-basic/08-shadcn/App.tsx b/examples/01-basic/08-shadcn/App.tsx
new file mode 100644
index 0000000000..754b4a5e94
--- /dev/null
+++ b/examples/01-basic/08-shadcn/App.tsx
@@ -0,0 +1,22 @@
+import "@blocknote/core/fonts/inter.css";
+import { useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/shadcn";
+import "@blocknote/shadcn/style.css";
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote();
+
+ // Renders the editor instance using a React component.
+ return (
+
+ );
+}
diff --git a/examples/01-basic/08-shadcn/README.md b/examples/01-basic/08-shadcn/README.md
new file mode 100644
index 0000000000..b585d3e461
--- /dev/null
+++ b/examples/01-basic/08-shadcn/README.md
@@ -0,0 +1,7 @@
+# Use with ShadCN
+
+This example shows how you can use BlockNote with ShadCN (instead of Mantine).
+
+**Relevant Docs:**
+
+- [ShadCN](/docs/advanced/shadcn)
diff --git a/examples/01-basic/08-shadcn/index.html b/examples/01-basic/08-shadcn/index.html
new file mode 100644
index 0000000000..c70c418c1a
--- /dev/null
+++ b/examples/01-basic/08-shadcn/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Use with ShadCN
+
+
+
+
+
+
diff --git a/examples/01-basic/08-shadcn/main.tsx b/examples/01-basic/08-shadcn/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/01-basic/08-shadcn/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/01-basic/08-shadcn/package.json b/examples/01-basic/08-shadcn/package.json
new file mode 100644
index 0000000000..a5f526e246
--- /dev/null
+++ b/examples/01-basic/08-shadcn/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "@blocknote/example-shadcn",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.12.4",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/01-basic/08-shadcn/tsconfig.json b/examples/01-basic/08-shadcn/tsconfig.json
new file mode 100644
index 0000000000..1bd8ab3c57
--- /dev/null
+++ b/examples/01-basic/08-shadcn/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "__ADD_FOR_LOCAL_DEV_references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/01-basic/08-shadcn/vite.config.ts b/examples/01-basic/08-shadcn/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/01-basic/08-shadcn/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/01-basic/09-ariakit/.bnexample.json b/examples/01-basic/09-ariakit/.bnexample.json
new file mode 100644
index 0000000000..6d4a02dd52
--- /dev/null
+++ b/examples/01-basic/09-ariakit/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "matthewlipski",
+ "tags": ["Basic"]
+}
diff --git a/examples/01-basic/09-ariakit/App.tsx b/examples/01-basic/09-ariakit/App.tsx
new file mode 100644
index 0000000000..1a86f6b436
--- /dev/null
+++ b/examples/01-basic/09-ariakit/App.tsx
@@ -0,0 +1,12 @@
+import "@blocknote/core/fonts/inter.css";
+import { useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/ariakit";
+import "@blocknote/ariakit/style.css";
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote();
+
+ // Renders the editor instance using a React component.
+ return ;
+}
diff --git a/examples/01-basic/09-ariakit/README.md b/examples/01-basic/09-ariakit/README.md
new file mode 100644
index 0000000000..7ddb27b10a
--- /dev/null
+++ b/examples/01-basic/09-ariakit/README.md
@@ -0,0 +1,7 @@
+# Use with Ariakit
+
+This example shows how you can use BlockNote with Ariakit (instead of Mantine).
+
+**Relevant Docs:**
+
+- [Ariakit](/docs/advanced/ariakit)
diff --git a/examples/01-basic/09-ariakit/index.html b/examples/01-basic/09-ariakit/index.html
new file mode 100644
index 0000000000..f394c4992a
--- /dev/null
+++ b/examples/01-basic/09-ariakit/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Use with Ariakit
+
+
+
+
+
+
diff --git a/examples/01-basic/09-ariakit/main.tsx b/examples/01-basic/09-ariakit/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/01-basic/09-ariakit/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/01-basic/09-ariakit/package.json b/examples/01-basic/09-ariakit/package.json
new file mode 100644
index 0000000000..4a5ba888e6
--- /dev/null
+++ b/examples/01-basic/09-ariakit/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "@blocknote/example-ariakit",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.12.4",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/01-basic/09-ariakit/tsconfig.json b/examples/01-basic/09-ariakit/tsconfig.json
new file mode 100644
index 0000000000..1bd8ab3c57
--- /dev/null
+++ b/examples/01-basic/09-ariakit/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "__ADD_FOR_LOCAL_DEV_references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/01-basic/09-ariakit/vite.config.ts b/examples/01-basic/09-ariakit/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/01-basic/09-ariakit/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/01-basic/10-localization/.bnexample.json b/examples/01-basic/10-localization/.bnexample.json
new file mode 100644
index 0000000000..fd06fde1e0
--- /dev/null
+++ b/examples/01-basic/10-localization/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "yousefed",
+ "tags": ["Basic"]
+}
diff --git a/examples/01-basic/10-localization/App.tsx b/examples/01-basic/10-localization/App.tsx
new file mode 100644
index 0000000000..9799a8ad7b
--- /dev/null
+++ b/examples/01-basic/10-localization/App.tsx
@@ -0,0 +1,18 @@
+import { locales } from "@blocknote/core";
+import "@blocknote/core/fonts/inter.css";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
+import { useCreateBlockNote } from "@blocknote/react";
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote({
+ // Passes the Dutch (NL) dictionary to the editor instance.
+ // You can also provide your own dictionary here to customize the strings used in the editor,
+ // or submit a Pull Request to add support for your language of your choice
+ dictionary: locales.nl,
+ });
+
+ // Renders the editor instance using a React component.
+ return ;
+}
diff --git a/examples/01-basic/10-localization/README.md b/examples/01-basic/10-localization/README.md
new file mode 100644
index 0000000000..e1da3ce24b
--- /dev/null
+++ b/examples/01-basic/10-localization/README.md
@@ -0,0 +1,9 @@
+# Localization (i18n)
+
+In this example, we pass in a custom dictionary to change the interface of the editor to use Dutch (NL) strings.
+
+You can also provide your own dictionary to customize the strings used in the editor, or submit a Pull Request to add support for your language of your choice.
+
+**Relevant Docs:**
+
+- [Editor Setup](/docs/editor-basics/setup)
diff --git a/examples/01-basic/10-localization/index.html b/examples/01-basic/10-localization/index.html
new file mode 100644
index 0000000000..5a75a1709e
--- /dev/null
+++ b/examples/01-basic/10-localization/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Localization (i18n)
+
+
+
+
+
+
diff --git a/examples/01-basic/10-localization/main.tsx b/examples/01-basic/10-localization/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/01-basic/10-localization/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/01-basic/10-localization/package.json b/examples/01-basic/10-localization/package.json
new file mode 100644
index 0000000000..8fcb99d3fe
--- /dev/null
+++ b/examples/01-basic/10-localization/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "@blocknote/example-localization",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.12.4",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/01-basic/10-localization/tsconfig.json b/examples/01-basic/10-localization/tsconfig.json
new file mode 100644
index 0000000000..1bd8ab3c57
--- /dev/null
+++ b/examples/01-basic/10-localization/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "__ADD_FOR_LOCAL_DEV_references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/01-basic/10-localization/vite.config.ts b/examples/01-basic/10-localization/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/01-basic/10-localization/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/01-basic/testing/App.tsx b/examples/01-basic/testing/App.tsx
index 5bc1b1c47d..de439b5928 100644
--- a/examples/01-basic/testing/App.tsx
+++ b/examples/01-basic/testing/App.tsx
@@ -1,7 +1,8 @@
import { uploadToTmpFilesDotOrg_DEV_ONLY } from "@blocknote/core";
import "@blocknote/core/fonts/inter.css";
-import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
export default function App() {
// Creates a new editor instance.
diff --git a/examples/01-basic/testing/package.json b/examples/01-basic/testing/package.json
index 451c22b29e..8c3884e1b7 100644
--- a/examples/01-basic/testing/package.json
+++ b/examples/01-basic/testing/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-testing",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/02-ui-components/01-ui-elements-remove/App.tsx b/examples/02-ui-components/01-ui-elements-remove/App.tsx
index 0f67fdc449..b2f9038ab6 100644
--- a/examples/02-ui-components/01-ui-elements-remove/App.tsx
+++ b/examples/02-ui-components/01-ui-elements-remove/App.tsx
@@ -1,6 +1,7 @@
import "@blocknote/core/fonts/inter.css";
-import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
export default function App() {
// Creates a new editor instance.
diff --git a/examples/02-ui-components/01-ui-elements-remove/package.json b/examples/02-ui-components/01-ui-elements-remove/package.json
index 01bc2f7fc2..8a9d42d3a1 100644
--- a/examples/02-ui-components/01-ui-elements-remove/package.json
+++ b/examples/02-ui-components/01-ui-elements-remove/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-ui-elements-remove",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/02-ui-components/02-formatting-toolbar-buttons/App.tsx b/examples/02-ui-components/02-formatting-toolbar-buttons/App.tsx
index 8f44929e33..779452273d 100644
--- a/examples/02-ui-components/02-formatting-toolbar-buttons/App.tsx
+++ b/examples/02-ui-components/02-formatting-toolbar-buttons/App.tsx
@@ -1,7 +1,6 @@
import "@blocknote/core/fonts/inter.css";
import {
BasicTextStyleButton,
- BlockNoteView,
BlockTypeSelect,
ColorStyleButton,
CreateLinkButton,
@@ -14,7 +13,8 @@ import {
UnnestBlockButton,
useCreateBlockNote,
} from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import { BlueButton } from "./BlueButton";
diff --git a/examples/02-ui-components/02-formatting-toolbar-buttons/BlueButton.tsx b/examples/02-ui-components/02-formatting-toolbar-buttons/BlueButton.tsx
index 4cde53596c..48400a273e 100644
--- a/examples/02-ui-components/02-formatting-toolbar-buttons/BlueButton.tsx
+++ b/examples/02-ui-components/02-formatting-toolbar-buttons/BlueButton.tsx
@@ -1,14 +1,17 @@
import {
- ToolbarButton,
useBlockNoteEditor,
+ useComponentsContext,
useEditorContentOrSelectionChange,
} from "@blocknote/react";
+import "@blocknote/mantine/style.css";
import { useState } from "react";
// Custom Formatting Toolbar Button to toggle blue text & background color.
export function BlueButton() {
const editor = useBlockNoteEditor();
+ const Components = useComponentsContext()!;
+
// Tracks whether the text & background are both blue.
const [isSelected, setIsSelected] = useState(
editor.getActiveStyles().textColor === "blue" &&
@@ -24,7 +27,7 @@ export function BlueButton() {
}, editor);
return (
- {
editor.toggleStyles({
@@ -34,6 +37,6 @@ export function BlueButton() {
}}
isSelected={isSelected}>
Blue
-
+
);
}
diff --git a/examples/02-ui-components/02-formatting-toolbar-buttons/package.json b/examples/02-ui-components/02-formatting-toolbar-buttons/package.json
index e4db1b4ba8..0dca1262e1 100644
--- a/examples/02-ui-components/02-formatting-toolbar-buttons/package.json
+++ b/examples/02-ui-components/02-formatting-toolbar-buttons/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-formatting-toolbar-buttons",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/02-ui-components/03-formatting-toolbar-block-type-items/App.tsx b/examples/02-ui-components/03-formatting-toolbar-block-type-items/App.tsx
index 0ede58d56e..fce0767f09 100644
--- a/examples/02-ui-components/03-formatting-toolbar-block-type-items/App.tsx
+++ b/examples/02-ui-components/03-formatting-toolbar-block-type-items/App.tsx
@@ -1,14 +1,14 @@
import { BlockNoteSchema, defaultBlockSpecs } from "@blocknote/core";
import "@blocknote/core/fonts/inter.css";
import {
- BlockNoteView,
+ BlockTypeSelectItem,
FormattingToolbar,
FormattingToolbarController,
- useCreateBlockNote,
blockTypeSelectItems,
- BlockTypeSelectItem,
+ useCreateBlockNote,
} from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import { RiAlertFill } from "react-icons/ri";
import { Alert } from "./Alert";
@@ -56,7 +56,7 @@ export default function App() {
formattingToolbar={() => (
- {
- editor.removeBlocks([props.block]);
- }}
- />
-
+ {
+ editor.removeBlocks([props.block]);
+ }}
+ />
+ }
+ />
);
}
diff --git a/examples/02-ui-components/04-side-menu-buttons/package.json b/examples/02-ui-components/04-side-menu-buttons/package.json
index c5c820c0cb..140e5b1e3d 100644
--- a/examples/02-ui-components/04-side-menu-buttons/package.json
+++ b/examples/02-ui-components/04-side-menu-buttons/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-side-menu-buttons",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-icons": "^4.3.1"
diff --git a/examples/02-ui-components/05-side-menu-drag-handle-items/App.tsx b/examples/02-ui-components/05-side-menu-drag-handle-items/App.tsx
index 8652837ae1..9f9cb25f57 100644
--- a/examples/02-ui-components/05-side-menu-drag-handle-items/App.tsx
+++ b/examples/02-ui-components/05-side-menu-drag-handle-items/App.tsx
@@ -1,15 +1,15 @@
import "@blocknote/core/fonts/inter.css";
import {
BlockColorsItem,
- BlockNoteView,
DragHandleMenu,
- DragHandleMenuItem,
RemoveBlockItem,
SideMenu,
SideMenuController,
+ useComponentsContext,
useCreateBlockNote,
} from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
export default function App() {
// Creates a new editor instance.
@@ -34,6 +34,8 @@ export default function App() {
],
});
+ const Components = useComponentsContext()!;
+
// Renders the editor instance.
return (
@@ -46,12 +48,12 @@ export default function App() {
Delete
Colors
{/* Item which resets the hovered block's type. */}
- {
editor.updateBlock(props.block, { type: "paragraph" });
}}>
Reset Type
-
+
)}
/>
diff --git a/examples/02-ui-components/05-side-menu-drag-handle-items/package.json b/examples/02-ui-components/05-side-menu-drag-handle-items/package.json
index 9982ce078e..64da52462a 100644
--- a/examples/02-ui-components/05-side-menu-drag-handle-items/package.json
+++ b/examples/02-ui-components/05-side-menu-drag-handle-items/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-side-menu-drag-handle-items",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-icons": "^4.3.1"
diff --git a/examples/02-ui-components/06-suggestion-menus-slash-menu-items/App.tsx b/examples/02-ui-components/06-suggestion-menus-slash-menu-items/App.tsx
index bc2900fbec..984cf3d4e1 100644
--- a/examples/02-ui-components/06-suggestion-menus-slash-menu-items/App.tsx
+++ b/examples/02-ui-components/06-suggestion-menus-slash-menu-items/App.tsx
@@ -5,13 +5,13 @@ import {
} from "@blocknote/core";
import "@blocknote/core/fonts/inter.css";
import {
- BlockNoteView,
DefaultReactSuggestionItem,
getDefaultReactSlashMenuItems,
SuggestionMenuController,
useCreateBlockNote,
} from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import { HiOutlineGlobeAlt } from "react-icons/hi";
// Custom Slash Menu item to insert a block after the current one.
diff --git a/examples/02-ui-components/06-suggestion-menus-slash-menu-items/package.json b/examples/02-ui-components/06-suggestion-menus-slash-menu-items/package.json
index 87a8b55798..63ea77793c 100644
--- a/examples/02-ui-components/06-suggestion-menus-slash-menu-items/package.json
+++ b/examples/02-ui-components/06-suggestion-menus-slash-menu-items/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-suggestion-menus-slash-menu-items",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-icons": "^4.3.1"
diff --git a/examples/02-ui-components/07-suggestion-menus-slash-menu-component/App.tsx b/examples/02-ui-components/07-suggestion-menus-slash-menu-component/App.tsx
index fdf1137fa7..2bd26465f0 100644
--- a/examples/02-ui-components/07-suggestion-menus-slash-menu-component/App.tsx
+++ b/examples/02-ui-components/07-suggestion-menus-slash-menu-component/App.tsx
@@ -1,12 +1,12 @@
import "@blocknote/core/fonts/inter.css";
import {
- BlockNoteView,
DefaultReactSuggestionItem,
SuggestionMenuController,
SuggestionMenuProps,
useCreateBlockNote,
} from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import "./styles.css";
diff --git a/examples/02-ui-components/07-suggestion-menus-slash-menu-component/package.json b/examples/02-ui-components/07-suggestion-menus-slash-menu-component/package.json
index 7eb92b487a..d0a6a12b00 100644
--- a/examples/02-ui-components/07-suggestion-menus-slash-menu-component/package.json
+++ b/examples/02-ui-components/07-suggestion-menus-slash-menu-component/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-suggestion-menus-slash-menu-component",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/02-ui-components/08-custom-ui/App.tsx b/examples/02-ui-components/08-custom-ui/App.tsx
index b447f7aefa..f3bb61a09f 100644
--- a/examples/02-ui-components/08-custom-ui/App.tsx
+++ b/examples/02-ui-components/08-custom-ui/App.tsx
@@ -1,13 +1,13 @@
import { filterSuggestionItems } from "@blocknote/core";
import "@blocknote/core/fonts/inter.css";
import {
- BlockNoteView,
getDefaultReactSlashMenuItems,
SideMenuController,
SuggestionMenuController,
useCreateBlockNote,
} from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import { CustomFormattingToolbar } from "./CustomFormattingToolbar";
import { CustomSideMenu } from "./CustomSideMenu";
diff --git a/examples/02-ui-components/08-custom-ui/package.json b/examples/02-ui-components/08-custom-ui/package.json
index db84e08ed6..7c66c2093e 100644
--- a/examples/02-ui-components/08-custom-ui/package.json
+++ b/examples/02-ui-components/08-custom-ui/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-custom-ui",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-icons": "^4.3.1"
diff --git a/examples/02-ui-components/link-toolbar-buttons/AlertButton.tsx b/examples/02-ui-components/link-toolbar-buttons/AlertButton.tsx
index 123d856b0e..b393d6077e 100644
--- a/examples/02-ui-components/link-toolbar-buttons/AlertButton.tsx
+++ b/examples/02-ui-components/link-toolbar-buttons/AlertButton.tsx
@@ -1,14 +1,16 @@
-import { LinkToolbarProps, ToolbarButton } from "@blocknote/react";
+import { LinkToolbarProps, useComponentsContext } from "@blocknote/react";
// Custom Link Toolbar button to open a browser alert.
export function AlertButton(props: LinkToolbarProps) {
+ const Components = useComponentsContext()!;
+
return (
- {
window.alert(`Link URL: ${props.url}`);
}}>
Open Alert
-
+
);
}
diff --git a/examples/02-ui-components/link-toolbar-buttons/App.tsx b/examples/02-ui-components/link-toolbar-buttons/App.tsx
index 1e4525bd72..4664d4bf28 100644
--- a/examples/02-ui-components/link-toolbar-buttons/App.tsx
+++ b/examples/02-ui-components/link-toolbar-buttons/App.tsx
@@ -1,11 +1,11 @@
import "@blocknote/core/fonts/inter.css";
import {
- BlockNoteView,
LinkToolbar,
LinkToolbarController,
useCreateBlockNote,
} from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import { AlertButton } from "./AlertButton";
diff --git a/examples/02-ui-components/link-toolbar-buttons/package.json b/examples/02-ui-components/link-toolbar-buttons/package.json
index 470ec0c68f..56e4b874f3 100644
--- a/examples/02-ui-components/link-toolbar-buttons/package.json
+++ b/examples/02-ui-components/link-toolbar-buttons/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-link-toolbar-buttons",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/03-theming/01-theming-dom-attributes/App.tsx b/examples/03-theming/01-theming-dom-attributes/App.tsx
index 5f5aa61cc9..7068e12388 100644
--- a/examples/03-theming/01-theming-dom-attributes/App.tsx
+++ b/examples/03-theming/01-theming-dom-attributes/App.tsx
@@ -1,6 +1,7 @@
import "@blocknote/core/fonts/inter.css";
-import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import "./styles.css";
diff --git a/examples/03-theming/01-theming-dom-attributes/package.json b/examples/03-theming/01-theming-dom-attributes/package.json
index d747c5a61e..22a493f456 100644
--- a/examples/03-theming/01-theming-dom-attributes/package.json
+++ b/examples/03-theming/01-theming-dom-attributes/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-theming-dom-attributes",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/03-theming/02-changing-font/App.tsx b/examples/03-theming/02-changing-font/App.tsx
index e21dd05893..4ef3f9a3dd 100644
--- a/examples/03-theming/02-changing-font/App.tsx
+++ b/examples/03-theming/02-changing-font/App.tsx
@@ -1,6 +1,7 @@
import "@blocknote/core/fonts/inter.css";
-import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import "./styles.css";
diff --git a/examples/03-theming/02-changing-font/package.json b/examples/03-theming/02-changing-font/package.json
index ba4a149a7f..5869405b62 100644
--- a/examples/03-theming/02-changing-font/package.json
+++ b/examples/03-theming/02-changing-font/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-changing-font",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/03-theming/03-theming-css/App.tsx b/examples/03-theming/03-theming-css/App.tsx
index 7a65b64349..493ae7d4ed 100644
--- a/examples/03-theming/03-theming-css/App.tsx
+++ b/examples/03-theming/03-theming-css/App.tsx
@@ -1,6 +1,7 @@
import "@blocknote/core/fonts/inter.css";
-import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import "./styles.css";
diff --git a/examples/03-theming/03-theming-css/package.json b/examples/03-theming/03-theming-css/package.json
index ff356edda6..f0d3d8b136 100644
--- a/examples/03-theming/03-theming-css/package.json
+++ b/examples/03-theming/03-theming-css/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-theming-css",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/03-theming/04-theming-css-variables/App.tsx b/examples/03-theming/04-theming-css-variables/App.tsx
index dcfc1a4a72..ba45053f04 100644
--- a/examples/03-theming/04-theming-css-variables/App.tsx
+++ b/examples/03-theming/04-theming-css-variables/App.tsx
@@ -1,6 +1,7 @@
import "@blocknote/core/fonts/inter.css";
-import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import "./styles.css";
diff --git a/examples/03-theming/04-theming-css-variables/package.json b/examples/03-theming/04-theming-css-variables/package.json
index c4a0335626..43df97f493 100644
--- a/examples/03-theming/04-theming-css-variables/package.json
+++ b/examples/03-theming/04-theming-css-variables/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-theming-css-variables",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/03-theming/05-theming-css-variables-code/App.tsx b/examples/03-theming/05-theming-css-variables-code/App.tsx
index 0f8e944d32..8a02496d7e 100644
--- a/examples/03-theming/05-theming-css-variables-code/App.tsx
+++ b/examples/03-theming/05-theming-css-variables-code/App.tsx
@@ -4,9 +4,9 @@ import {
darkDefaultTheme,
lightDefaultTheme,
Theme,
- useCreateBlockNote,
-} from "@blocknote/react";
-import "@blocknote/react/style.css";
+} from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
+import { useCreateBlockNote } from "@blocknote/react";
// Base theme
const lightRedTheme = {
diff --git a/examples/03-theming/05-theming-css-variables-code/package.json b/examples/03-theming/05-theming-css-variables-code/package.json
index 27c24dc2a0..f139bf737b 100644
--- a/examples/03-theming/05-theming-css-variables-code/package.json
+++ b/examples/03-theming/05-theming-css-variables-code/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-theming-css-variables-code",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/04-interoperability/01-converting-blocks-to-html/App.tsx b/examples/04-interoperability/01-converting-blocks-to-html/App.tsx
index 698de6f48e..e10fe0c57f 100644
--- a/examples/04-interoperability/01-converting-blocks-to-html/App.tsx
+++ b/examples/04-interoperability/01-converting-blocks-to-html/App.tsx
@@ -1,6 +1,7 @@
import "@blocknote/core/fonts/inter.css";
-import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import { useState } from "react";
import "./styles.css";
diff --git a/examples/04-interoperability/01-converting-blocks-to-html/package.json b/examples/04-interoperability/01-converting-blocks-to-html/package.json
index 49508d72f5..b50f1b3860 100644
--- a/examples/04-interoperability/01-converting-blocks-to-html/package.json
+++ b/examples/04-interoperability/01-converting-blocks-to-html/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-converting-blocks-to-html",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/04-interoperability/02-converting-blocks-from-html/App.tsx b/examples/04-interoperability/02-converting-blocks-from-html/App.tsx
index 98af0279b5..8b53b5ac9c 100644
--- a/examples/04-interoperability/02-converting-blocks-from-html/App.tsx
+++ b/examples/04-interoperability/02-converting-blocks-from-html/App.tsx
@@ -1,6 +1,7 @@
import "@blocknote/core/fonts/inter.css";
-import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import { ChangeEvent, useCallback, useEffect } from "react";
import "./styles.css";
diff --git a/examples/04-interoperability/02-converting-blocks-from-html/package.json b/examples/04-interoperability/02-converting-blocks-from-html/package.json
index ec274231e4..07b2ea2a48 100644
--- a/examples/04-interoperability/02-converting-blocks-from-html/package.json
+++ b/examples/04-interoperability/02-converting-blocks-from-html/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-converting-blocks-from-html",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/04-interoperability/03-converting-blocks-to-md/App.tsx b/examples/04-interoperability/03-converting-blocks-to-md/App.tsx
index 1e020bfae7..c51a3ac92e 100644
--- a/examples/04-interoperability/03-converting-blocks-to-md/App.tsx
+++ b/examples/04-interoperability/03-converting-blocks-to-md/App.tsx
@@ -1,6 +1,7 @@
import "@blocknote/core/fonts/inter.css";
-import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import { useState } from "react";
import "./styles.css";
diff --git a/examples/04-interoperability/03-converting-blocks-to-md/package.json b/examples/04-interoperability/03-converting-blocks-to-md/package.json
index b57907e8cc..17f357ec34 100644
--- a/examples/04-interoperability/03-converting-blocks-to-md/package.json
+++ b/examples/04-interoperability/03-converting-blocks-to-md/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-converting-blocks-to-md",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/04-interoperability/04-converting-blocks-from-md/App.tsx b/examples/04-interoperability/04-converting-blocks-from-md/App.tsx
index 3015c30f9d..876f5573e9 100644
--- a/examples/04-interoperability/04-converting-blocks-from-md/App.tsx
+++ b/examples/04-interoperability/04-converting-blocks-from-md/App.tsx
@@ -1,6 +1,7 @@
import "@blocknote/core/fonts/inter.css";
-import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import { ChangeEvent, useCallback, useEffect } from "react";
const initialMarkdown = "Hello, **world!**";
diff --git a/examples/04-interoperability/04-converting-blocks-from-md/package.json b/examples/04-interoperability/04-converting-blocks-from-md/package.json
index a1e6d389d8..0e044fe334 100644
--- a/examples/04-interoperability/04-converting-blocks-from-md/package.json
+++ b/examples/04-interoperability/04-converting-blocks-from-md/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-converting-blocks-from-md",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/05-custom-schema/01-alert-block/App.tsx b/examples/05-custom-schema/01-alert-block/App.tsx
index 0dda8fbe61..dcaefdfbdf 100644
--- a/examples/05-custom-schema/01-alert-block/App.tsx
+++ b/examples/05-custom-schema/01-alert-block/App.tsx
@@ -6,12 +6,12 @@ import {
} from "@blocknote/core";
import "@blocknote/core/fonts/inter.css";
import {
- BlockNoteView,
SuggestionMenuController,
getDefaultReactSlashMenuItems,
useCreateBlockNote,
} from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import { RiAlertFill } from "react-icons/ri";
import { Alert } from "./Alert";
diff --git a/examples/05-custom-schema/01-alert-block/package.json b/examples/05-custom-schema/01-alert-block/package.json
index 004639656c..86d721a065 100644
--- a/examples/05-custom-schema/01-alert-block/package.json
+++ b/examples/05-custom-schema/01-alert-block/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-alert-block",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"@mantine/core": "^7.7.1",
diff --git a/examples/05-custom-schema/02-suggestion-menus-mentions/App.tsx b/examples/05-custom-schema/02-suggestion-menus-mentions/App.tsx
index d3f0463537..e86e4594e9 100644
--- a/examples/05-custom-schema/02-suggestion-menus-mentions/App.tsx
+++ b/examples/05-custom-schema/02-suggestion-menus-mentions/App.tsx
@@ -5,12 +5,12 @@ import {
} from "@blocknote/core";
import "@blocknote/core/fonts/inter.css";
import {
- BlockNoteView,
DefaultReactSuggestionItem,
SuggestionMenuController,
useCreateBlockNote,
} from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import { Mention } from "./Mention";
diff --git a/examples/05-custom-schema/02-suggestion-menus-mentions/package.json b/examples/05-custom-schema/02-suggestion-menus-mentions/package.json
index d8c980f452..a7815452ce 100644
--- a/examples/05-custom-schema/02-suggestion-menus-mentions/package.json
+++ b/examples/05-custom-schema/02-suggestion-menus-mentions/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-suggestion-menus-mentions",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/05-custom-schema/03-font-style/App.tsx b/examples/05-custom-schema/03-font-style/App.tsx
index edb7f96322..0035fc1bbb 100644
--- a/examples/05-custom-schema/03-font-style/App.tsx
+++ b/examples/05-custom-schema/03-font-style/App.tsx
@@ -2,7 +2,6 @@ import { BlockNoteSchema, defaultStyleSpecs } from "@blocknote/core";
import "@blocknote/core/fonts/inter.css";
import {
BasicTextStyleButton,
- BlockNoteView,
BlockTypeSelect,
ColorStyleButton,
CreateLinkButton,
@@ -12,12 +11,13 @@ import {
NestBlockButton,
ReplaceImageButton,
TextAlignButton,
- ToolbarButton,
UnnestBlockButton,
useBlockNoteEditor,
+ useComponentsContext,
useCreateBlockNote,
} from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import { RiText } from "react-icons/ri";
import { Font } from "./Font";
@@ -41,10 +41,12 @@ const SetFontStyleButton = () => {
typeof schema.styleSchema
>();
+ const Components = useComponentsContext()!;
+
return (
- }
onClick={() => {
const fontName = prompt("Enter a font name") || "Comic Sans MS";
diff --git a/examples/05-custom-schema/03-font-style/package.json b/examples/05-custom-schema/03-font-style/package.json
index f00fab3dee..433bfa0633 100644
--- a/examples/05-custom-schema/03-font-style/package.json
+++ b/examples/05-custom-schema/03-font-style/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-font-style",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/05-custom-schema/react-custom-blocks/App.tsx b/examples/05-custom-schema/react-custom-blocks/App.tsx
index 49a541a21c..f92ffb7be6 100644
--- a/examples/05-custom-schema/react-custom-blocks/App.tsx
+++ b/examples/05-custom-schema/react-custom-blocks/App.tsx
@@ -4,12 +4,9 @@ import {
defaultProps,
} from "@blocknote/core";
import "@blocknote/core/fonts/inter.css";
-import {
- BlockNoteView,
- createReactBlockSpec,
- useCreateBlockNote,
-} from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { createReactBlockSpec, useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import "./styles.css";
diff --git a/examples/05-custom-schema/react-custom-blocks/package.json b/examples/05-custom-schema/react-custom-blocks/package.json
index c76019d6ce..45304a212d 100644
--- a/examples/05-custom-schema/react-custom-blocks/package.json
+++ b/examples/05-custom-schema/react-custom-blocks/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-react-custom-blocks",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/05-custom-schema/react-custom-inline-content/App.tsx b/examples/05-custom-schema/react-custom-inline-content/App.tsx
index e321420646..54f0ff7251 100644
--- a/examples/05-custom-schema/react-custom-inline-content/App.tsx
+++ b/examples/05-custom-schema/react-custom-inline-content/App.tsx
@@ -1,11 +1,11 @@
import { BlockNoteSchema, defaultInlineContentSpecs } from "@blocknote/core";
import "@blocknote/core/fonts/inter.css";
import {
- BlockNoteView,
createReactInlineContentSpec,
useCreateBlockNote,
} from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
const mention = createReactInlineContentSpec(
{
diff --git a/examples/05-custom-schema/react-custom-inline-content/package.json b/examples/05-custom-schema/react-custom-inline-content/package.json
index 0122e6fd86..c1481cc5a3 100644
--- a/examples/05-custom-schema/react-custom-inline-content/package.json
+++ b/examples/05-custom-schema/react-custom-inline-content/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-react-custom-inline-content",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/05-custom-schema/react-custom-styles/App.tsx b/examples/05-custom-schema/react-custom-styles/App.tsx
index aba31bdeda..f19533c79d 100644
--- a/examples/05-custom-schema/react-custom-styles/App.tsx
+++ b/examples/05-custom-schema/react-custom-styles/App.tsx
@@ -1,17 +1,17 @@
import { BlockNoteSchema, defaultStyleSpecs } from "@blocknote/core";
import "@blocknote/core/fonts/inter.css";
import {
- BlockNoteView,
createReactStyleSpec,
FormattingToolbar,
FormattingToolbarController,
FormattingToolbarProps,
- ToolbarButton,
useActiveStyles,
useBlockNoteEditor,
+ useComponentsContext,
useCreateBlockNote,
} from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
const small = createReactStyleSpec(
{
@@ -51,9 +51,11 @@ const CustomFormattingToolbar = (props: FormattingToolbarProps) => {
const editor = useBlockNoteEditor(schema);
const activeStyles = useActiveStyles(editor);
+ const Components = useComponentsContext()!;
+
return (
- {
editor.toggleStyles({
@@ -62,8 +64,8 @@ const CustomFormattingToolbar = (props: FormattingToolbarProps) => {
}}
isSelected={activeStyles.small}>
Small
-
-
+ {
editor.toggleStyles({
@@ -72,7 +74,7 @@ const CustomFormattingToolbar = (props: FormattingToolbarProps) => {
}}
isSelected={!!activeStyles.fontSize}>
Font size
-
+
);
};
diff --git a/examples/05-custom-schema/react-custom-styles/package.json b/examples/05-custom-schema/react-custom-styles/package.json
index 327acc839d..268064ac15 100644
--- a/examples/05-custom-schema/react-custom-styles/package.json
+++ b/examples/05-custom-schema/react-custom-styles/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-react-custom-styles",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/06-collaboration/01-partykit/App.tsx b/examples/06-collaboration/01-partykit/App.tsx
index 5d0e98fb51..cecfb6767e 100644
--- a/examples/06-collaboration/01-partykit/App.tsx
+++ b/examples/06-collaboration/01-partykit/App.tsx
@@ -1,6 +1,7 @@
import "@blocknote/core/fonts/inter.css";
-import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import YPartyKitProvider from "y-partykit/provider";
import * as Y from "yjs";
diff --git a/examples/06-collaboration/01-partykit/package.json b/examples/06-collaboration/01-partykit/package.json
index 983e97f256..cd02a25020 100644
--- a/examples/06-collaboration/01-partykit/package.json
+++ b/examples/06-collaboration/01-partykit/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-partykit",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"y-partykit": "^0.0.25",
diff --git a/examples/06-collaboration/02-liveblocks/App.tsx b/examples/06-collaboration/02-liveblocks/App.tsx
index cc65e59863..854b6b1091 100644
--- a/examples/06-collaboration/02-liveblocks/App.tsx
+++ b/examples/06-collaboration/02-liveblocks/App.tsx
@@ -1,6 +1,7 @@
import "@blocknote/core/fonts/inter.css";
-import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import { createClient } from "@liveblocks/client";
import LiveblocksProvider from "@liveblocks/yjs";
import * as Y from "yjs";
diff --git a/examples/06-collaboration/02-liveblocks/package.json b/examples/06-collaboration/02-liveblocks/package.json
index 992c95c466..22e6c315d9 100644
--- a/examples/06-collaboration/02-liveblocks/package.json
+++ b/examples/06-collaboration/02-liveblocks/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-liveblocks",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"@liveblocks/client": "^1.10.0",
diff --git a/examples/vanilla-js/react-vanilla-custom-blocks/App.tsx b/examples/vanilla-js/react-vanilla-custom-blocks/App.tsx
index 6be9d75827..c0dbb42ce8 100644
--- a/examples/vanilla-js/react-vanilla-custom-blocks/App.tsx
+++ b/examples/vanilla-js/react-vanilla-custom-blocks/App.tsx
@@ -5,8 +5,9 @@ import {
defaultProps,
} from "@blocknote/core";
import "@blocknote/core/fonts/inter.css";
-import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
import "./styles.css";
diff --git a/examples/vanilla-js/react-vanilla-custom-blocks/package.json b/examples/vanilla-js/react-vanilla-custom-blocks/package.json
index 618db40ffe..1e6bbd0343 100644
--- a/examples/vanilla-js/react-vanilla-custom-blocks/package.json
+++ b/examples/vanilla-js/react-vanilla-custom-blocks/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-react-vanilla-custom-blocks",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/vanilla-js/react-vanilla-custom-inline-content/App.tsx b/examples/vanilla-js/react-vanilla-custom-inline-content/App.tsx
index a090f2aa00..7e81477387 100644
--- a/examples/vanilla-js/react-vanilla-custom-inline-content/App.tsx
+++ b/examples/vanilla-js/react-vanilla-custom-inline-content/App.tsx
@@ -4,8 +4,9 @@ import {
defaultInlineContentSpecs,
} from "@blocknote/core";
import "@blocknote/core/fonts/inter.css";
-import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { useCreateBlockNote } from "@blocknote/react";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
const mention = createInlineContentSpec(
{
diff --git a/examples/vanilla-js/react-vanilla-custom-inline-content/package.json b/examples/vanilla-js/react-vanilla-custom-inline-content/package.json
index 83d07b6eb4..54afa39e7c 100644
--- a/examples/vanilla-js/react-vanilla-custom-inline-content/package.json
+++ b/examples/vanilla-js/react-vanilla-custom-inline-content/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-react-vanilla-custom-inline-content",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/examples/vanilla-js/react-vanilla-custom-styles/App.tsx b/examples/vanilla-js/react-vanilla-custom-styles/App.tsx
index ee30b7b8ef..813952cda7 100644
--- a/examples/vanilla-js/react-vanilla-custom-styles/App.tsx
+++ b/examples/vanilla-js/react-vanilla-custom-styles/App.tsx
@@ -5,16 +5,16 @@ import {
} from "@blocknote/core";
import "@blocknote/core/fonts/inter.css";
import {
- BlockNoteView,
FormattingToolbar,
FormattingToolbarController,
FormattingToolbarProps,
- ToolbarButton,
useActiveStyles,
useBlockNoteEditor,
+ useComponentsContext,
useCreateBlockNote,
} from "@blocknote/react";
-import "@blocknote/react/style.css";
+import { BlockNoteView } from "@blocknote/mantine";
+import "@blocknote/mantine/style.css";
const small = createStyleSpec(
{
@@ -63,9 +63,11 @@ const CustomFormattingToolbar = (props: FormattingToolbarProps) => {
const editor = useBlockNoteEditor(schema);
const activeStyles = useActiveStyles(editor);
+ const Components = useComponentsContext()!;
+
return (
- {
editor.toggleStyles({
@@ -74,8 +76,8 @@ const CustomFormattingToolbar = (props: FormattingToolbarProps) => {
}}
isSelected={activeStyles.small}>
Small
-
-
+ {
editor.toggleStyles({
@@ -84,7 +86,7 @@ const CustomFormattingToolbar = (props: FormattingToolbarProps) => {
}}
isSelected={!!activeStyles.fontSize}>
Font size
-
+
);
};
diff --git a/examples/vanilla-js/react-vanilla-custom-styles/package.json b/examples/vanilla-js/react-vanilla-custom-styles/package.json
index d6cb5a2f53..980714f744 100644
--- a/examples/vanilla-js/react-vanilla-custom-styles/package.json
+++ b/examples/vanilla-js/react-vanilla-custom-styles/package.json
@@ -2,7 +2,7 @@
"name": "@blocknote/example-react-vanilla-custom-styles",
"description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"private": true,
- "version": "0.12.0",
+ "version": "0.12.4",
"scripts": {
"start": "vite",
"dev": "vite",
@@ -11,8 +11,11 @@
"lint": "eslint . --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
diff --git a/package-lock.json b/package-lock.json
index ab08e787e9..8164cfb7a5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -26,8 +26,11 @@
"docs": {
"version": "0.12.4",
"dependencies": {
+ "@blocknote/ariakit": "^0.12.4",
"@blocknote/core": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
"@blocknote/react": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"@headlessui/react": "^1.7.18",
"@mantine/core": "^7.7.1",
"@next/bundle-analyzer": "^14.1.0",
@@ -79,9 +82,9 @@
}
},
"docs/node_modules/prettier-plugin-tailwindcss": {
- "version": "0.5.13",
- "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.5.13.tgz",
- "integrity": "sha512-2tPWHCFNC+WRjAC4SIWQNSOdcL1NNkydXim8w7TDqlZi+/ulZYz2OouAI6qMtkggnPt7lGamboj6LcTMwcCvoQ==",
+ "version": "0.5.14",
+ "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.5.14.tgz",
+ "integrity": "sha512-Puaz+wPUAhFp8Lo9HuciYKM2Y2XExESjeT+9NQoVFXZsPPnc9VYss2SpxdQ6vbatmt8/4+SN0oe0I1cPDABg9Q==",
"dev": true,
"engines": {
"node": ">=14.21.3"
@@ -152,20 +155,10 @@
}
}
},
- "node_modules/@aashutoshrathi/word-wrap": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
- "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/@alloc/quick-lru": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
"integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
- "dev": true,
"engines": {
"node": ">=10"
},
@@ -186,10 +179,45 @@
"node": ">=6.0.0"
}
},
+ "node_modules/@ariakit/core": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/@ariakit/core/-/core-0.4.6.tgz",
+ "integrity": "sha512-L2WIZZlxDs611m3YLSv2xvJyQrkkVQJlxn8Y4DlI1G65VLTEH7hysw3RYUNdXsl0gP6S20id3zBMJCHT9BCRcg=="
+ },
+ "node_modules/@ariakit/react": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/@ariakit/react/-/react-0.4.6.tgz",
+ "integrity": "sha512-7lZQew9n+nxswgJ5aL87xo42I+t3A8gWzaxIIZY+c58SLCASh1IdDkGLhGPcyhmXWRIjs/8L1h6cMbRMEBrtJQ==",
+ "dependencies": {
+ "@ariakit/react-core": "0.4.6"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/ariakit"
+ },
+ "peerDependencies": {
+ "react": "^17.0.0 || ^18.0.0",
+ "react-dom": "^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@ariakit/react-core": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/@ariakit/react-core/-/react-core-0.4.6.tgz",
+ "integrity": "sha512-2Ca327IzSOxQEd3gEr59JJj0y8fXDMLYd+948wyOzIsk2/yoTnA4+R7Vhs361w3KzOjBQM44KmnNL7ckBMtT0w==",
+ "dependencies": {
+ "@ariakit/core": "0.4.6",
+ "@floating-ui/dom": "^1.0.0",
+ "use-sync-external-store": "^1.2.0"
+ },
+ "peerDependencies": {
+ "react": "^17.0.0 || ^18.0.0",
+ "react-dom": "^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/@auth/core": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@auth/core/-/core-0.28.1.tgz",
- "integrity": "sha512-gvp74mypYZADpTlfGRp6HE0G3pIHWvtJpy+KZ+8FvY0cmlIpHog+jdMOdd29dQtLtN25kF2YbfHsesCFuGUQbg==",
+ "version": "0.30.0",
+ "resolved": "https://registry.npmjs.org/@auth/core/-/core-0.30.0.tgz",
+ "integrity": "sha512-8AE4m/nk+4EIiVCJwxZAsJeAQuzpEC8M8768mmKVn60CGDdupKQkVhxbRlm5Qh7eNRCoFFME+0DvtaX2aXrYaA==",
"dependencies": {
"@panva/hkdf": "^1.1.1",
"@types/cookie": "0.6.0",
@@ -230,30 +258,30 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.1.tgz",
- "integrity": "sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==",
+ "version": "7.24.4",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz",
+ "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.24.3",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.3.tgz",
- "integrity": "sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz",
+ "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==",
"dev": true,
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.24.2",
- "@babel/generator": "^7.24.1",
+ "@babel/generator": "^7.24.5",
"@babel/helper-compilation-targets": "^7.23.6",
- "@babel/helper-module-transforms": "^7.23.3",
- "@babel/helpers": "^7.24.1",
- "@babel/parser": "^7.24.1",
+ "@babel/helper-module-transforms": "^7.24.5",
+ "@babel/helpers": "^7.24.5",
+ "@babel/parser": "^7.24.5",
"@babel/template": "^7.24.0",
- "@babel/traverse": "^7.24.1",
- "@babel/types": "^7.24.0",
+ "@babel/traverse": "^7.24.5",
+ "@babel/types": "^7.24.5",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -278,9 +306,9 @@
}
},
"node_modules/@babel/eslint-parser": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.24.1.tgz",
- "integrity": "sha512-d5guuzMlPeDfZIbpQ8+g1NaCNuAGBBGNECh0HVqz1sjOeVLh2CEaifuOysCH18URW6R7pqXINvf5PaR/dC6jLQ==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.24.5.tgz",
+ "integrity": "sha512-gsUcqS/fPlgAw1kOtpss7uhY6E9SFFANQ6EFX5GTvzUwaV0+sGaZWk6xq22MOdeT9wfxyokW3ceCUvOiRtZciQ==",
"dev": true,
"dependencies": {
"@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1",
@@ -292,7 +320,7 @@
},
"peerDependencies": {
"@babel/core": "^7.11.0",
- "eslint": "^7.5.0 || ^8.0.0"
+ "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0"
}
},
"node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": {
@@ -314,12 +342,12 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.1.tgz",
- "integrity": "sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz",
+ "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.24.0",
+ "@babel/types": "^7.24.5",
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^2.5.1"
@@ -378,19 +406,19 @@
}
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.1.tgz",
- "integrity": "sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz",
+ "integrity": "sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==",
"dev": true,
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-function-name": "^7.23.0",
- "@babel/helper-member-expression-to-functions": "^7.23.0",
+ "@babel/helper-member-expression-to-functions": "^7.24.5",
"@babel/helper-optimise-call-expression": "^7.22.5",
"@babel/helper-replace-supers": "^7.24.1",
"@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/helper-split-export-declaration": "^7.24.5",
"semver": "^6.3.1"
},
"engines": {
@@ -436,9 +464,9 @@
}
},
"node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz",
- "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==",
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz",
+ "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==",
"dev": true,
"dependencies": {
"@babel/helper-compilation-targets": "^7.22.6",
@@ -486,12 +514,12 @@
}
},
"node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz",
- "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz",
+ "integrity": "sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.23.0"
+ "@babel/types": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
@@ -510,16 +538,16 @@
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
- "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz",
+ "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==",
"dev": true,
"dependencies": {
"@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-module-imports": "^7.22.15",
- "@babel/helper-simple-access": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/helper-validator-identifier": "^7.22.20"
+ "@babel/helper-module-imports": "^7.24.3",
+ "@babel/helper-simple-access": "^7.24.5",
+ "@babel/helper-split-export-declaration": "^7.24.5",
+ "@babel/helper-validator-identifier": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
@@ -541,9 +569,9 @@
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.24.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz",
- "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz",
+ "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==",
"dev": true,
"engines": {
"node": ">=6.9.0"
@@ -584,12 +612,12 @@
}
},
"node_modules/@babel/helper-simple-access": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
- "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz",
+ "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
@@ -608,12 +636,12 @@
}
},
"node_modules/@babel/helper-split-export-declaration": {
- "version": "7.22.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
- "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz",
+ "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
@@ -629,9 +657,9 @@
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
- "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz",
+ "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==",
"dev": true,
"engines": {
"node": ">=6.9.0"
@@ -647,40 +675,40 @@
}
},
"node_modules/@babel/helper-wrap-function": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz",
- "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.5.tgz",
+ "integrity": "sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw==",
"dev": true,
"dependencies": {
- "@babel/helper-function-name": "^7.22.5",
- "@babel/template": "^7.22.15",
- "@babel/types": "^7.22.19"
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/template": "^7.24.0",
+ "@babel/types": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helpers": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.1.tgz",
- "integrity": "sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz",
+ "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==",
"dev": true,
"dependencies": {
"@babel/template": "^7.24.0",
- "@babel/traverse": "^7.24.1",
- "@babel/types": "^7.24.0"
+ "@babel/traverse": "^7.24.5",
+ "@babel/types": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/highlight": {
- "version": "7.24.2",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz",
- "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz",
+ "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==",
"dev": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.22.20",
+ "@babel/helper-validator-identifier": "^7.24.5",
"chalk": "^2.4.2",
"js-tokens": "^4.0.0",
"picocolors": "^1.0.0"
@@ -761,9 +789,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz",
- "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz",
+ "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==",
"dev": true,
"bin": {
"parser": "bin/babel-parser.js"
@@ -772,6 +800,22 @@
"node": ">=6.0.0"
}
},
+ "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz",
+ "integrity": "sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-plugin-utils": "^7.24.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
"node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz",
@@ -1296,12 +1340,12 @@
}
},
"node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.1.tgz",
- "integrity": "sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz",
+ "integrity": "sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.0"
+ "@babel/helper-plugin-utils": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1327,12 +1371,12 @@
}
},
"node_modules/@babel/plugin-transform-class-static-block": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.1.tgz",
- "integrity": "sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA==",
+ "version": "7.24.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz",
+ "integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==",
"dev": true,
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.24.1",
+ "@babel/helper-create-class-features-plugin": "^7.24.4",
"@babel/helper-plugin-utils": "^7.24.0",
"@babel/plugin-syntax-class-static-block": "^7.14.5"
},
@@ -1344,18 +1388,18 @@
}
},
"node_modules/@babel/plugin-transform-classes": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz",
- "integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz",
+ "integrity": "sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==",
"dev": true,
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-compilation-targets": "^7.23.6",
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-function-name": "^7.23.0",
- "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-plugin-utils": "^7.24.5",
"@babel/helper-replace-supers": "^7.24.1",
- "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/helper-split-export-declaration": "^7.24.5",
"globals": "^11.1.0"
},
"engines": {
@@ -1391,12 +1435,12 @@
}
},
"node_modules/@babel/plugin-transform-destructuring": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz",
- "integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz",
+ "integrity": "sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.0"
+ "@babel/helper-plugin-utils": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1726,15 +1770,15 @@
}
},
"node_modules/@babel/plugin-transform-object-rest-spread": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz",
- "integrity": "sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz",
+ "integrity": "sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==",
"dev": true,
"dependencies": {
"@babel/helper-compilation-targets": "^7.23.6",
- "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-plugin-utils": "^7.24.5",
"@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.24.1"
+ "@babel/plugin-transform-parameters": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1776,12 +1820,12 @@
}
},
"node_modules/@babel/plugin-transform-optional-chaining": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz",
- "integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz",
+ "integrity": "sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-plugin-utils": "^7.24.5",
"@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
"@babel/plugin-syntax-optional-chaining": "^7.8.3"
},
@@ -1793,12 +1837,12 @@
}
},
"node_modules/@babel/plugin-transform-parameters": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz",
- "integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz",
+ "integrity": "sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.0"
+ "@babel/helper-plugin-utils": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1824,14 +1868,14 @@
}
},
"node_modules/@babel/plugin-transform-private-property-in-object": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz",
- "integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz",
+ "integrity": "sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==",
"dev": true,
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-create-class-features-plugin": "^7.24.1",
- "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-create-class-features-plugin": "^7.24.5",
+ "@babel/helper-plugin-utils": "^7.24.5",
"@babel/plugin-syntax-private-property-in-object": "^7.14.5"
},
"engines": {
@@ -1906,12 +1950,12 @@
}
},
"node_modules/@babel/plugin-transform-react-jsx-self": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.1.tgz",
- "integrity": "sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.5.tgz",
+ "integrity": "sha512-RtCJoUO2oYrYwFPtR1/jkoBEcFuI1ae9a9IMxeyAVa3a1Ap4AnxmyIKG2b2FaJKqkidw/0cxRbWN+HOs6ZWd1w==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.0"
+ "@babel/helper-plugin-utils": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
@@ -2073,12 +2117,12 @@
}
},
"node_modules/@babel/plugin-transform-typeof-symbol": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz",
- "integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz",
+ "integrity": "sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.0"
+ "@babel/helper-plugin-utils": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
@@ -2088,14 +2132,14 @@
}
},
"node_modules/@babel/plugin-transform-typescript": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.1.tgz",
- "integrity": "sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz",
+ "integrity": "sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==",
"dev": true,
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-create-class-features-plugin": "^7.24.1",
- "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-create-class-features-plugin": "^7.24.5",
+ "@babel/helper-plugin-utils": "^7.24.5",
"@babel/plugin-syntax-typescript": "^7.24.1"
},
"engines": {
@@ -2169,15 +2213,16 @@
}
},
"node_modules/@babel/preset-env": {
- "version": "7.24.3",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.3.tgz",
- "integrity": "sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.5.tgz",
+ "integrity": "sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.24.1",
+ "@babel/compat-data": "^7.24.4",
"@babel/helper-compilation-targets": "^7.23.6",
- "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-plugin-utils": "^7.24.5",
"@babel/helper-validator-option": "^7.23.5",
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.5",
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1",
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1",
"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1",
@@ -2204,12 +2249,12 @@
"@babel/plugin-transform-async-generator-functions": "^7.24.3",
"@babel/plugin-transform-async-to-generator": "^7.24.1",
"@babel/plugin-transform-block-scoped-functions": "^7.24.1",
- "@babel/plugin-transform-block-scoping": "^7.24.1",
+ "@babel/plugin-transform-block-scoping": "^7.24.5",
"@babel/plugin-transform-class-properties": "^7.24.1",
- "@babel/plugin-transform-class-static-block": "^7.24.1",
- "@babel/plugin-transform-classes": "^7.24.1",
+ "@babel/plugin-transform-class-static-block": "^7.24.4",
+ "@babel/plugin-transform-classes": "^7.24.5",
"@babel/plugin-transform-computed-properties": "^7.24.1",
- "@babel/plugin-transform-destructuring": "^7.24.1",
+ "@babel/plugin-transform-destructuring": "^7.24.5",
"@babel/plugin-transform-dotall-regex": "^7.24.1",
"@babel/plugin-transform-duplicate-keys": "^7.24.1",
"@babel/plugin-transform-dynamic-import": "^7.24.1",
@@ -2229,13 +2274,13 @@
"@babel/plugin-transform-new-target": "^7.24.1",
"@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1",
"@babel/plugin-transform-numeric-separator": "^7.24.1",
- "@babel/plugin-transform-object-rest-spread": "^7.24.1",
+ "@babel/plugin-transform-object-rest-spread": "^7.24.5",
"@babel/plugin-transform-object-super": "^7.24.1",
"@babel/plugin-transform-optional-catch-binding": "^7.24.1",
- "@babel/plugin-transform-optional-chaining": "^7.24.1",
- "@babel/plugin-transform-parameters": "^7.24.1",
+ "@babel/plugin-transform-optional-chaining": "^7.24.5",
+ "@babel/plugin-transform-parameters": "^7.24.5",
"@babel/plugin-transform-private-methods": "^7.24.1",
- "@babel/plugin-transform-private-property-in-object": "^7.24.1",
+ "@babel/plugin-transform-private-property-in-object": "^7.24.5",
"@babel/plugin-transform-property-literals": "^7.24.1",
"@babel/plugin-transform-regenerator": "^7.24.1",
"@babel/plugin-transform-reserved-words": "^7.24.1",
@@ -2243,7 +2288,7 @@
"@babel/plugin-transform-spread": "^7.24.1",
"@babel/plugin-transform-sticky-regex": "^7.24.1",
"@babel/plugin-transform-template-literals": "^7.24.1",
- "@babel/plugin-transform-typeof-symbol": "^7.24.1",
+ "@babel/plugin-transform-typeof-symbol": "^7.24.5",
"@babel/plugin-transform-unicode-escapes": "^7.24.1",
"@babel/plugin-transform-unicode-property-regex": "^7.24.1",
"@babel/plugin-transform-unicode-regex": "^7.24.1",
@@ -2331,9 +2376,9 @@
"dev": true
},
"node_modules/@babel/runtime": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.1.tgz",
- "integrity": "sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz",
+ "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==",
"dependencies": {
"regenerator-runtime": "^0.14.0"
},
@@ -2356,19 +2401,19 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz",
- "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz",
+ "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.24.1",
- "@babel/generator": "^7.24.1",
+ "@babel/code-frame": "^7.24.2",
+ "@babel/generator": "^7.24.5",
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-function-name": "^7.23.0",
"@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/parser": "^7.24.1",
- "@babel/types": "^7.24.0",
+ "@babel/helper-split-export-declaration": "^7.24.5",
+ "@babel/parser": "^7.24.5",
+ "@babel/types": "^7.24.5",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
@@ -2386,19 +2431,23 @@
}
},
"node_modules/@babel/types": {
- "version": "7.24.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz",
- "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz",
+ "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==",
"dev": true,
"dependencies": {
- "@babel/helper-string-parser": "^7.23.4",
- "@babel/helper-validator-identifier": "^7.22.20",
+ "@babel/helper-string-parser": "^7.24.1",
+ "@babel/helper-validator-identifier": "^7.24.5",
"to-fast-properties": "^2.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
+ "node_modules/@blocknote/ariakit": {
+ "resolved": "packages/ariakit",
+ "link": true
+ },
"node_modules/@blocknote/core": {
"resolved": "packages/core",
"link": true
@@ -2411,10 +2460,18 @@
"resolved": "playground",
"link": true
},
+ "node_modules/@blocknote/mantine": {
+ "resolved": "packages/mantine",
+ "link": true
+ },
"node_modules/@blocknote/react": {
"resolved": "packages/react",
"link": true
},
+ "node_modules/@blocknote/shadcn": {
+ "resolved": "packages/shadcn",
+ "link": true
+ },
"node_modules/@blocknote/tests": {
"resolved": "tests",
"link": true
@@ -2980,26 +3037,26 @@
}
},
"node_modules/@floating-ui/core": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz",
- "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.1.tgz",
+ "integrity": "sha512-42UH54oPZHPdRHdw6BgoBD6cg/eVTmVrFcgeRDM3jbO7uxSoipVcmcIGFcA5jmOHO5apcyvBhkSKES3fQJnu7A==",
"dependencies": {
- "@floating-ui/utils": "^0.2.1"
+ "@floating-ui/utils": "^0.2.0"
}
},
"node_modules/@floating-ui/dom": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz",
- "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==",
+ "version": "1.6.4",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.4.tgz",
+ "integrity": "sha512-0G8R+zOvQsAG1pg2Q99P21jiqxqGBW1iRe/iXHsBRBxnpXKFI8QwbB4x5KmYLggNO5m34IQgOIu9SCRfR/WWiQ==",
"dependencies": {
"@floating-ui/core": "^1.0.0",
"@floating-ui/utils": "^0.2.0"
}
},
"node_modules/@floating-ui/react": {
- "version": "0.26.10",
- "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.10.tgz",
- "integrity": "sha512-sh6f9gVvWQdEzLObrWbJ97c0clJObiALsFe0LiR/kb3tDRKwEhObASEH2QyfdoO/ZBPzwxa9j+nYFo+sqgbioA==",
+ "version": "0.26.13",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.13.tgz",
+ "integrity": "sha512-kBa9wntpugzrZ8t/4yWelvSmEKZdeTXTJzrxqyrLmcU/n1SM4nvse8yQh2e1b37rJGvtu0EplV9+IkBrCJ1vkw==",
"dependencies": {
"@floating-ui/react-dom": "^2.0.0",
"@floating-ui/utils": "^0.2.0",
@@ -3011,11 +3068,11 @@
}
},
"node_modules/@floating-ui/react-dom": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz",
- "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==",
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.9.tgz",
+ "integrity": "sha512-q0umO0+LQK4+p6aGyvzASqKbKOJcAHJ7ycE9CuUvfx3s9zTHWmGJTPOIlM/hmSBfUfg/XfY5YhLBLR/LHwShQQ==",
"dependencies": {
- "@floating-ui/dom": "^1.6.1"
+ "@floating-ui/dom": "^1.0.0"
},
"peerDependencies": {
"react": ">=16.8.0",
@@ -3023,9 +3080,9 @@
}
},
"node_modules/@floating-ui/utils": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz",
- "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q=="
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.2.tgz",
+ "integrity": "sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw=="
},
"node_modules/@gar/promisify": {
"version": "1.1.3",
@@ -3034,9 +3091,9 @@
"dev": true
},
"node_modules/@headlessui/react": {
- "version": "1.7.18",
- "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.18.tgz",
- "integrity": "sha512-4i5DOrzwN4qSgNsL4Si61VMkUcWbcSKueUV7sFhpHzQcSShdlHENE5+QBntMSRvHt8NyoFO2AGG8si9lq+w4zQ==",
+ "version": "1.7.19",
+ "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.19.tgz",
+ "integrity": "sha512-Ll+8q3OlMJfJbAKM/+/Y2q6PPYbryqNTXDbryx7SXLIDamkF6iQFbriYHga0dY44PvDhvvBWCx1Xj4U5+G4hOw==",
"dependencies": {
"@tanstack/react-virtual": "^3.0.0-beta.60",
"client-only": "^0.0.1"
@@ -3049,6 +3106,14 @@
"react-dom": "^16 || ^17 || ^18"
}
},
+ "node_modules/@hookform/resolvers": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.3.4.tgz",
+ "integrity": "sha512-o5cgpGOuJYrd+iMKvkttOclgwRW86EsWJZZRC23prf0uU2i48Htq4PuT73AVb9ionFyZrwYEITuOFGF+BydEtQ==",
+ "peerDependencies": {
+ "react-hook-form": "^7.0.0"
+ }
+ },
"node_modules/@humanwhocodes/config-array": {
"version": "0.11.14",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
@@ -3095,7 +3160,6 @@
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
"integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
- "dev": true,
"dependencies": {
"string-width": "^5.1.2",
"string-width-cjs": "npm:string-width@^4.2.0",
@@ -3112,7 +3176,6 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
"integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
- "dev": true,
"engines": {
"node": ">=12"
},
@@ -3124,7 +3187,6 @@
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
- "dev": true,
"dependencies": {
"ansi-regex": "^6.0.1"
},
@@ -4271,25 +4333,25 @@
}
},
"node_modules/@liveblocks/client": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@liveblocks/client/-/client-1.11.0.tgz",
- "integrity": "sha512-dZJM6rra/jBk7C++Cm7PX10TbwklkDv76LmMs8IZj8qkXrdG91ejT5PuLXXo3sDIMCdr2apbKyS6pdb8yw4DCA==",
+ "version": "1.11.3",
+ "resolved": "https://registry.npmjs.org/@liveblocks/client/-/client-1.11.3.tgz",
+ "integrity": "sha512-Vinzfrz/pBGN/l3XTDgYiUrBzs1xmzKzMtES/qHdIWxTVyVEBT5p8ilyi7kSCdRkdSe6bfmnJmkQljViTsX3vw==",
"dependencies": {
- "@liveblocks/core": "1.11.0"
+ "@liveblocks/core": "1.11.3"
}
},
"node_modules/@liveblocks/core": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@liveblocks/core/-/core-1.11.0.tgz",
- "integrity": "sha512-fB5ZlT/HiXHynDiVwtGz7/9ZJy9RF7nziJ7LicVvMc9OCuibLj8xl4Mp/ZHvFSAcbpWA2kKQe0m0wPawSkamIw=="
+ "version": "1.11.3",
+ "resolved": "https://registry.npmjs.org/@liveblocks/core/-/core-1.11.3.tgz",
+ "integrity": "sha512-lai5o9nhgboocb+AQzL94syp8CZ4blTJFk6xWgUD+/L3qK110ADp7JSEH93k90pXqjf5zBOj5XWPMYehQ6I43w=="
},
"node_modules/@liveblocks/yjs": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@liveblocks/yjs/-/yjs-1.11.0.tgz",
- "integrity": "sha512-CfuHUxelk1hflN7BJuVSkNeFqByjes49MAYRHbt/vK41/GpylepCc3EOdU+MWqDPl5CctdVNE7FPbjaSLS3l+g==",
+ "version": "1.11.3",
+ "resolved": "https://registry.npmjs.org/@liveblocks/yjs/-/yjs-1.11.3.tgz",
+ "integrity": "sha512-HB2Gi+Z7FuHZe9QuESfyAXhs+rYh7vSK6l/1SpKFYcQdp6/Kjk9jQNfx0UFw4GhhnJzTKnPE7HMQYSTmtisNkQ==",
"dependencies": {
- "@liveblocks/client": "1.11.0",
- "@liveblocks/core": "1.11.0",
+ "@liveblocks/client": "1.11.3",
+ "@liveblocks/core": "1.11.3",
"js-base64": "^3.7.5"
},
"peerDependencies": {
@@ -4297,9 +4359,9 @@
}
},
"node_modules/@mantine/core": {
- "version": "7.7.1",
- "resolved": "https://registry.npmjs.org/@mantine/core/-/core-7.7.1.tgz",
- "integrity": "sha512-SdPzjvqvEK7uHFuVD3a8w3OZyQVoCwIXLSUfOtRNouDMQgsq6Ac7QjKXBBOk3wNweOWFVOU1vATLHobSmow0lQ==",
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/@mantine/core/-/core-7.8.1.tgz",
+ "integrity": "sha512-dttbP2BhBzFJYBqgAQedJRca5+MXlJbppRhRsufnFeO7YC/UpZutOoHQ9dxGEQnhAWJ/d+wuRvYWG/gXex+wYQ==",
"dependencies": {
"@floating-ui/react": "^0.26.9",
"clsx": "2.1.0",
@@ -4309,15 +4371,23 @@
"type-fest": "^4.12.0"
},
"peerDependencies": {
- "@mantine/hooks": "7.7.1",
+ "@mantine/hooks": "7.8.1",
"react": "^18.2.0",
"react-dom": "^18.2.0"
}
},
+ "node_modules/@mantine/core/node_modules/clsx": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz",
+ "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/@mantine/hooks": {
- "version": "7.7.1",
- "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-7.7.1.tgz",
- "integrity": "sha512-3YH2FzKMlg840tb04PBDcDXyBCi9puFOxEBVgc6Y/pN6KFqfOoAnQE/YvgOtwSNXZlbTWyDlQoYj+3je7pA7og==",
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-7.8.1.tgz",
+ "integrity": "sha512-zCLqnxTUR2N6Awbt4rv/26UKTc75dXTVmCPsWUb6wdQExuC28fucG6kMoNYHVmOBDq9f3KP9zWOGDelHM2ogZA==",
"peerDependencies": {
"react": "^18.2.0"
}
@@ -4569,9 +4639,9 @@
}
},
"node_modules/@next/bundle-analyzer": {
- "version": "14.1.4",
- "resolved": "https://registry.npmjs.org/@next/bundle-analyzer/-/bundle-analyzer-14.1.4.tgz",
- "integrity": "sha512-IpF/18HcAOcfHRr24tqPOUpMmVKIqvkCxIubMeRYWCXs3jm7niPGrt8Mu74yMDzfGlUwgQA6Xd6BUc5+jQxcEg==",
+ "version": "14.2.3",
+ "resolved": "https://registry.npmjs.org/@next/bundle-analyzer/-/bundle-analyzer-14.2.3.tgz",
+ "integrity": "sha512-Z88hbbngMs7njZKI8kTJIlpdLKYfMSLwnsqYe54AP4aLmgL70/Ynx/J201DQ+q2Lr6FxFw1uCeLGImDrHOl2ZA==",
"dependencies": {
"webpack-bundle-analyzer": "4.10.1"
}
@@ -4784,7 +4854,6 @@
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
"dependencies": {
"@nodelib/fs.stat": "2.0.5",
"run-parallel": "^1.1.9"
@@ -4797,7 +4866,6 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true,
"engines": {
"node": ">= 8"
}
@@ -4806,7 +4874,6 @@
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
"dependencies": {
"@nodelib/fs.scandir": "2.1.5",
"fastq": "^1.6.0"
@@ -5517,21 +5584,20 @@
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
"integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
- "dev": true,
"optional": true,
"engines": {
"node": ">=14"
}
},
"node_modules/@playwright/experimental-ct-core": {
- "version": "1.42.1",
- "resolved": "https://registry.npmjs.org/@playwright/experimental-ct-core/-/experimental-ct-core-1.42.1.tgz",
- "integrity": "sha512-wBS6pzgJwRuK0MwgiooamLW0prQLgT0RAhxooeMyqU97VbDI5aYuuynlxobJDDymU4HcOKARg2rG8h6jX7ShrA==",
+ "version": "1.43.1",
+ "resolved": "https://registry.npmjs.org/@playwright/experimental-ct-core/-/experimental-ct-core-1.43.1.tgz",
+ "integrity": "sha512-4llE4A8fgqRsIHIAO4FVcolxzkvhJ60462C8MBERUEmEa4K/X34NiEIi2mhQTcfWp4iBlf9JPspiun3FDv/yig==",
"dev": true,
"dependencies": {
- "playwright": "1.42.1",
- "playwright-core": "1.42.1",
- "vite": "^5.0.12"
+ "playwright": "1.43.1",
+ "playwright-core": "1.43.1",
+ "vite": "^5.0.13"
},
"bin": {
"playwright": "cli.js"
@@ -5944,104 +6010,951 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
- "node_modules/@playwright/experimental-ct-core/node_modules/vite": {
- "version": "5.2.7",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.7.tgz",
- "integrity": "sha512-k14PWOKLI6pMaSzAuGtT+Cf0YmIx12z9YGon39onaJNy8DLBfBJrzg9FQEmkAM5lpHBZs9wksWAsyF/HkpEwJA==",
- "dev": true,
+ "node_modules/@playwright/experimental-ct-core/node_modules/vite": {
+ "version": "5.2.10",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.10.tgz",
+ "integrity": "sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw==",
+ "dev": true,
+ "dependencies": {
+ "esbuild": "^0.20.1",
+ "postcss": "^8.4.38",
+ "rollup": "^4.13.0"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^18.0.0 || >=20.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@types/node": "^18.0.0 || >=20.0.0",
+ "less": "*",
+ "lightningcss": "^1.21.0",
+ "sass": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@playwright/experimental-ct-react": {
+ "version": "1.43.1",
+ "resolved": "https://registry.npmjs.org/@playwright/experimental-ct-react/-/experimental-ct-react-1.43.1.tgz",
+ "integrity": "sha512-DZ09HBBa0iLxINHjlFbn/qZdpcSAgCFLSRvLDfrCFapT7umvPWg0T/ngleiEpuleSm0ZQpDKiE6GQF4TtqxRNA==",
+ "dev": true,
+ "dependencies": {
+ "@playwright/experimental-ct-core": "1.43.1",
+ "@vitejs/plugin-react": "^4.2.1"
+ },
+ "bin": {
+ "playwright": "cli.js"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@playwright/test": {
+ "version": "1.43.1",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.43.1.tgz",
+ "integrity": "sha512-HgtQzFgNEEo4TE22K/X7sYTYNqEMMTZmFS8kTq6m8hXj+m1D8TgwgIbumHddJa9h4yl4GkKb8/bgAl2+g7eDgA==",
+ "dev": true,
+ "dependencies": {
+ "playwright": "1.43.1"
+ },
+ "bin": {
+ "playwright": "cli.js"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@polka/url": {
+ "version": "1.0.0-next.25",
+ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz",
+ "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ=="
+ },
+ "node_modules/@popperjs/core": {
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
+ "node_modules/@radix-ui/colors": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/colors/-/colors-3.0.0.tgz",
+ "integrity": "sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==",
+ "dev": true
+ },
+ "node_modules/@radix-ui/number": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz",
+ "integrity": "sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ }
+ },
+ "node_modules/@radix-ui/primitive": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz",
+ "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ }
+ },
+ "node_modules/@radix-ui/react-arrow": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz",
+ "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.3"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-collection": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz",
+ "integrity": "sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.1",
+ "@radix-ui/react-context": "1.0.1",
+ "@radix-ui/react-primitive": "1.0.3",
+ "@radix-ui/react-slot": "1.0.2"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-compose-refs": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz",
+ "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-context": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz",
+ "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-direction": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz",
+ "integrity": "sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-dismissable-layer": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz",
+ "integrity": "sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.1",
+ "@radix-ui/react-compose-refs": "1.0.1",
+ "@radix-ui/react-primitive": "1.0.3",
+ "@radix-ui/react-use-callback-ref": "1.0.1",
+ "@radix-ui/react-use-escape-keydown": "1.0.3"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-dropdown-menu": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.0.6.tgz",
+ "integrity": "sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.1",
+ "@radix-ui/react-compose-refs": "1.0.1",
+ "@radix-ui/react-context": "1.0.1",
+ "@radix-ui/react-id": "1.0.1",
+ "@radix-ui/react-menu": "2.0.6",
+ "@radix-ui/react-primitive": "1.0.3",
+ "@radix-ui/react-use-controllable-state": "1.0.1"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-focus-guards": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz",
+ "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-focus-scope": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz",
+ "integrity": "sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.1",
+ "@radix-ui/react-primitive": "1.0.3",
+ "@radix-ui/react-use-callback-ref": "1.0.1"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-id": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz",
+ "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-layout-effect": "1.0.1"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-label": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.0.2.tgz",
+ "integrity": "sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.3"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-menu": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.0.6.tgz",
+ "integrity": "sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.1",
+ "@radix-ui/react-collection": "1.0.3",
+ "@radix-ui/react-compose-refs": "1.0.1",
+ "@radix-ui/react-context": "1.0.1",
+ "@radix-ui/react-direction": "1.0.1",
+ "@radix-ui/react-dismissable-layer": "1.0.5",
+ "@radix-ui/react-focus-guards": "1.0.1",
+ "@radix-ui/react-focus-scope": "1.0.4",
+ "@radix-ui/react-id": "1.0.1",
+ "@radix-ui/react-popper": "1.1.3",
+ "@radix-ui/react-portal": "1.0.4",
+ "@radix-ui/react-presence": "1.0.1",
+ "@radix-ui/react-primitive": "1.0.3",
+ "@radix-ui/react-roving-focus": "1.0.4",
+ "@radix-ui/react-slot": "1.0.2",
+ "@radix-ui/react-use-callback-ref": "1.0.1",
+ "aria-hidden": "^1.1.1",
+ "react-remove-scroll": "2.5.5"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-menu/node_modules/react-remove-scroll": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz",
+ "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==",
+ "dependencies": {
+ "react-remove-scroll-bar": "^2.3.3",
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.1.0",
+ "use-callback-ref": "^1.3.0",
+ "use-sidecar": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-popover": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.0.7.tgz",
+ "integrity": "sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.1",
+ "@radix-ui/react-compose-refs": "1.0.1",
+ "@radix-ui/react-context": "1.0.1",
+ "@radix-ui/react-dismissable-layer": "1.0.5",
+ "@radix-ui/react-focus-guards": "1.0.1",
+ "@radix-ui/react-focus-scope": "1.0.4",
+ "@radix-ui/react-id": "1.0.1",
+ "@radix-ui/react-popper": "1.1.3",
+ "@radix-ui/react-portal": "1.0.4",
+ "@radix-ui/react-presence": "1.0.1",
+ "@radix-ui/react-primitive": "1.0.3",
+ "@radix-ui/react-slot": "1.0.2",
+ "@radix-ui/react-use-controllable-state": "1.0.1",
+ "aria-hidden": "^1.1.1",
+ "react-remove-scroll": "2.5.5"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-popover/node_modules/react-remove-scroll": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz",
+ "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==",
+ "dependencies": {
+ "react-remove-scroll-bar": "^2.3.3",
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.1.0",
+ "use-callback-ref": "^1.3.0",
+ "use-sidecar": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-popper": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.3.tgz",
+ "integrity": "sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@floating-ui/react-dom": "^2.0.0",
+ "@radix-ui/react-arrow": "1.0.3",
+ "@radix-ui/react-compose-refs": "1.0.1",
+ "@radix-ui/react-context": "1.0.1",
+ "@radix-ui/react-primitive": "1.0.3",
+ "@radix-ui/react-use-callback-ref": "1.0.1",
+ "@radix-ui/react-use-layout-effect": "1.0.1",
+ "@radix-ui/react-use-rect": "1.0.1",
+ "@radix-ui/react-use-size": "1.0.1",
+ "@radix-ui/rect": "1.0.1"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-portal": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.4.tgz",
+ "integrity": "sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.3"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-presence": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.1.tgz",
+ "integrity": "sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.1",
+ "@radix-ui/react-use-layout-effect": "1.0.1"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-primitive": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz",
+ "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.2"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-roving-focus": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz",
+ "integrity": "sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.1",
+ "@radix-ui/react-collection": "1.0.3",
+ "@radix-ui/react-compose-refs": "1.0.1",
+ "@radix-ui/react-context": "1.0.1",
+ "@radix-ui/react-direction": "1.0.1",
+ "@radix-ui/react-id": "1.0.1",
+ "@radix-ui/react-primitive": "1.0.3",
+ "@radix-ui/react-use-callback-ref": "1.0.1",
+ "@radix-ui/react-use-controllable-state": "1.0.1"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-select": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.0.0.tgz",
+ "integrity": "sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/number": "1.0.1",
+ "@radix-ui/primitive": "1.0.1",
+ "@radix-ui/react-collection": "1.0.3",
+ "@radix-ui/react-compose-refs": "1.0.1",
+ "@radix-ui/react-context": "1.0.1",
+ "@radix-ui/react-direction": "1.0.1",
+ "@radix-ui/react-dismissable-layer": "1.0.5",
+ "@radix-ui/react-focus-guards": "1.0.1",
+ "@radix-ui/react-focus-scope": "1.0.4",
+ "@radix-ui/react-id": "1.0.1",
+ "@radix-ui/react-popper": "1.1.3",
+ "@radix-ui/react-portal": "1.0.4",
+ "@radix-ui/react-primitive": "1.0.3",
+ "@radix-ui/react-slot": "1.0.2",
+ "@radix-ui/react-use-callback-ref": "1.0.1",
+ "@radix-ui/react-use-controllable-state": "1.0.1",
+ "@radix-ui/react-use-layout-effect": "1.0.1",
+ "@radix-ui/react-use-previous": "1.0.1",
+ "@radix-ui/react-visually-hidden": "1.0.3",
+ "aria-hidden": "^1.1.1",
+ "react-remove-scroll": "2.5.5"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-select/node_modules/react-remove-scroll": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz",
+ "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==",
+ "dependencies": {
+ "react-remove-scroll-bar": "^2.3.3",
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.1.0",
+ "use-callback-ref": "^1.3.0",
+ "use-sidecar": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-slot": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz",
+ "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.1"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-tabs": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.0.4.tgz",
+ "integrity": "sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.1",
+ "@radix-ui/react-context": "1.0.1",
+ "@radix-ui/react-direction": "1.0.1",
+ "@radix-ui/react-id": "1.0.1",
+ "@radix-ui/react-presence": "1.0.1",
+ "@radix-ui/react-primitive": "1.0.3",
+ "@radix-ui/react-roving-focus": "1.0.4",
+ "@radix-ui/react-use-controllable-state": "1.0.1"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-toggle": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.0.3.tgz",
+ "integrity": "sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.1",
+ "@radix-ui/react-primitive": "1.0.3",
+ "@radix-ui/react-use-controllable-state": "1.0.1"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-tooltip": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.0.7.tgz",
+ "integrity": "sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.1",
+ "@radix-ui/react-compose-refs": "1.0.1",
+ "@radix-ui/react-context": "1.0.1",
+ "@radix-ui/react-dismissable-layer": "1.0.5",
+ "@radix-ui/react-id": "1.0.1",
+ "@radix-ui/react-popper": "1.1.3",
+ "@radix-ui/react-portal": "1.0.4",
+ "@radix-ui/react-presence": "1.0.1",
+ "@radix-ui/react-primitive": "1.0.3",
+ "@radix-ui/react-slot": "1.0.2",
+ "@radix-ui/react-use-controllable-state": "1.0.1",
+ "@radix-ui/react-visually-hidden": "1.0.3"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-use-callback-ref": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz",
+ "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-use-controllable-state": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz",
+ "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-callback-ref": "1.0.1"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-use-escape-keydown": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz",
+ "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==",
"dependencies": {
- "esbuild": "^0.20.1",
- "postcss": "^8.4.38",
- "rollup": "^4.13.0"
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-callback-ref": "1.0.1"
},
- "bin": {
- "vite": "bin/vite.js"
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0"
},
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-use-layout-effect": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz",
+ "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
},
- "funding": {
- "url": "https://github.com/vitejs/vite?sponsor=1"
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0"
},
- "optionalDependencies": {
- "fsevents": "~2.3.3"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-use-previous": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz",
+ "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
},
"peerDependencies": {
- "@types/node": "^18.0.0 || >=20.0.0",
- "less": "*",
- "lightningcss": "^1.21.0",
- "sass": "*",
- "stylus": "*",
- "sugarss": "*",
- "terser": "^5.4.0"
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0"
},
"peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "less": {
- "optional": true
- },
- "lightningcss": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "stylus": {
- "optional": true
- },
- "sugarss": {
- "optional": true
- },
- "terser": {
+ "@types/react": {
"optional": true
}
}
},
- "node_modules/@playwright/experimental-ct-react": {
- "version": "1.42.1",
- "resolved": "https://registry.npmjs.org/@playwright/experimental-ct-react/-/experimental-ct-react-1.42.1.tgz",
- "integrity": "sha512-/dxu7nkGOlZIx9MUGQPM5kiIGksYIBaaJKQuNmaJNV29V3VGI1p9yQqrvl1jFK/Hu7SC1LmFB8RlkrOgMiZKYg==",
- "dev": true,
+ "node_modules/@radix-ui/react-use-rect": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz",
+ "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==",
"dependencies": {
- "@playwright/experimental-ct-core": "1.42.1",
- "@vitejs/plugin-react": "^4.2.1"
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/rect": "1.0.1"
},
- "bin": {
- "playwright": "cli.js"
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0"
},
- "engines": {
- "node": ">=16"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/@playwright/test": {
- "version": "1.42.1",
- "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.42.1.tgz",
- "integrity": "sha512-Gq9rmS54mjBL/7/MvBaNOBwbfnh7beHvS6oS4srqXFcQHpQCV1+c8JXWE8VLPyRDhgS3H8x8A7hztqI9VnwrAQ==",
- "dev": true,
+ "node_modules/@radix-ui/react-use-size": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz",
+ "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==",
"dependencies": {
- "playwright": "1.42.1"
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-layout-effect": "1.0.1"
},
- "bin": {
- "playwright": "cli.js"
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0"
},
- "engines": {
- "node": ">=16"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/@polka/url": {
- "version": "1.0.0-next.25",
- "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz",
- "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ=="
+ "node_modules/@radix-ui/react-visually-hidden": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz",
+ "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.3"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
},
- "node_modules/@popperjs/core": {
- "version": "2.11.8",
- "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
- "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/popperjs"
+ "node_modules/@radix-ui/rect": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz",
+ "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
}
},
"node_modules/@remirror/core-constants": {
@@ -6050,9 +6963,9 @@
"integrity": "sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ=="
},
"node_modules/@remix-run/router": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.3.tgz",
- "integrity": "sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==",
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.16.0.tgz",
+ "integrity": "sha512-Quz1KOffeEf/zwkCBM3kBtH4ZoZ+pT3xIXBG4PPW/XFtDP7EGhtTiC2+gpL9GnR7+Qdet5Oa6cYSvwKYg6kN9Q==",
"engines": {
"node": ">=14.0.0"
}
@@ -6079,9 +6992,9 @@
}
},
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.13.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.2.tgz",
- "integrity": "sha512-3XFIDKWMFZrMnao1mJhnOT1h2g0169Os848NhhmGweEcfJ4rCi+3yMCOLG4zA61rbJdkcrM/DjVZm9Hg5p5w7g==",
+ "version": "4.17.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.2.tgz",
+ "integrity": "sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==",
"cpu": [
"arm"
],
@@ -6093,9 +7006,9 @@
"peer": true
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.13.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.2.tgz",
- "integrity": "sha512-GdxxXbAuM7Y/YQM9/TwwP+L0omeE/lJAR1J+olu36c3LqqZEBdsIWeQ91KBe6nxwOnb06Xh7JS2U5ooWU5/LgQ==",
+ "version": "4.17.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.17.2.tgz",
+ "integrity": "sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==",
"cpu": [
"arm64"
],
@@ -6107,9 +7020,9 @@
"peer": true
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.13.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.2.tgz",
- "integrity": "sha512-mCMlpzlBgOTdaFs83I4XRr8wNPveJiJX1RLfv4hggyIVhfB5mJfN4P8Z6yKh+oE4Luz+qq1P3kVdWrCKcMYrrA==",
+ "version": "4.17.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.2.tgz",
+ "integrity": "sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==",
"cpu": [
"arm64"
],
@@ -6121,9 +7034,9 @@
"peer": true
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.13.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.2.tgz",
- "integrity": "sha512-yUoEvnH0FBef/NbB1u6d3HNGyruAKnN74LrPAfDQL3O32e3k3OSfLrPgSJmgb3PJrBZWfPyt6m4ZhAFa2nZp2A==",
+ "version": "4.17.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.2.tgz",
+ "integrity": "sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==",
"cpu": [
"x64"
],
@@ -6135,9 +7048,23 @@
"peer": true
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.13.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.2.tgz",
- "integrity": "sha512-GYbLs5ErswU/Xs7aGXqzc3RrdEjKdmoCrgzhJWyFL0r5fL3qd1NPcDKDowDnmcoSiGJeU68/Vy+OMUluRxPiLQ==",
+ "version": "4.17.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.17.2.tgz",
+ "integrity": "sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.17.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.17.2.tgz",
+ "integrity": "sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==",
"cpu": [
"arm"
],
@@ -6149,9 +7076,9 @@
"peer": true
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.13.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.2.tgz",
- "integrity": "sha512-L1+D8/wqGnKQIlh4Zre9i4R4b4noxzH5DDciyahX4oOz62CphY7WDWqJoQ66zNR4oScLNOqQJfNSIAe/6TPUmQ==",
+ "version": "4.17.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.17.2.tgz",
+ "integrity": "sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==",
"cpu": [
"arm64"
],
@@ -6163,9 +7090,9 @@
"peer": true
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.13.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.2.tgz",
- "integrity": "sha512-tK5eoKFkXdz6vjfkSTCupUzCo40xueTOiOO6PeEIadlNBkadH1wNOH8ILCPIl8by/Gmb5AGAeQOFeLev7iZDOA==",
+ "version": "4.17.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.17.2.tgz",
+ "integrity": "sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==",
"cpu": [
"arm64"
],
@@ -6177,11 +7104,11 @@
"peer": true
},
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
- "version": "4.13.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.13.2.tgz",
- "integrity": "sha512-zvXvAUGGEYi6tYhcDmb9wlOckVbuD+7z3mzInCSTACJ4DQrdSLPNUeDIcAQW39M3q6PDquqLWu7pnO39uSMRzQ==",
+ "version": "4.17.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.17.2.tgz",
+ "integrity": "sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==",
"cpu": [
- "ppc64le"
+ "ppc64"
],
"dev": true,
"optional": true,
@@ -6191,9 +7118,9 @@
"peer": true
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.13.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.2.tgz",
- "integrity": "sha512-C3GSKvMtdudHCN5HdmAMSRYR2kkhgdOfye4w0xzyii7lebVr4riCgmM6lRiSCnJn2w1Xz7ZZzHKuLrjx5620kw==",
+ "version": "4.17.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.17.2.tgz",
+ "integrity": "sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==",
"cpu": [
"riscv64"
],
@@ -6205,9 +7132,9 @@
"peer": true
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.13.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.13.2.tgz",
- "integrity": "sha512-l4U0KDFwzD36j7HdfJ5/TveEQ1fUTjFFQP5qIt9gBqBgu1G8/kCaq5Ok05kd5TG9F8Lltf3MoYsUMw3rNlJ0Yg==",
+ "version": "4.17.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.17.2.tgz",
+ "integrity": "sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==",
"cpu": [
"s390x"
],
@@ -6219,9 +7146,9 @@
"peer": true
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.13.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.13.2.tgz",
- "integrity": "sha512-xXMLUAMzrtsvh3cZ448vbXqlUa7ZL8z0MwHp63K2IIID2+DeP5iWIT6g1SN7hg1VxPzqx0xZdiDM9l4n9LRU1A==",
+ "version": "4.17.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.2.tgz",
+ "integrity": "sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==",
"cpu": [
"x64"
],
@@ -6233,9 +7160,9 @@
"peer": true
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.13.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.13.2.tgz",
- "integrity": "sha512-M/JYAWickafUijWPai4ehrjzVPKRCyDb1SLuO+ZyPfoXgeCEAlgPkNXewFZx0zcnoIe3ay4UjXIMdXQXOZXWqA==",
+ "version": "4.17.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.2.tgz",
+ "integrity": "sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==",
"cpu": [
"x64"
],
@@ -6247,9 +7174,9 @@
"peer": true
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.13.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.2.tgz",
- "integrity": "sha512-2YWwoVg9KRkIKaXSh0mz3NmfurpmYoBBTAXA9qt7VXk0Xy12PoOP40EFuau+ajgALbbhi4uTj3tSG3tVseCjuA==",
+ "version": "4.17.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.17.2.tgz",
+ "integrity": "sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==",
"cpu": [
"arm64"
],
@@ -6261,9 +7188,9 @@
"peer": true
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.13.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.2.tgz",
- "integrity": "sha512-2FSsE9aQ6OWD20E498NYKEQLneShWes0NGMPQwxWOdws35qQXH+FplabOSP5zEe1pVjurSDOGEVCE2agFwSEsw==",
+ "version": "4.17.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.17.2.tgz",
+ "integrity": "sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==",
"cpu": [
"ia32"
],
@@ -6275,9 +7202,9 @@
"peer": true
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.13.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.2.tgz",
- "integrity": "sha512-7h7J2nokcdPePdKykd8wtc8QqqkqxIrUz7MHj6aNr8waBRU//NLDVnNjQnqQO6fqtjrtCdftpbTuOKAyrAQETQ==",
+ "version": "4.17.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.17.2.tgz",
+ "integrity": "sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==",
"cpu": [
"x64"
],
@@ -6289,9 +7216,9 @@
"peer": true
},
"node_modules/@rushstack/eslint-patch": {
- "version": "1.10.1",
- "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.1.tgz",
- "integrity": "sha512-S3Kq8e7LqxkA9s7HKLqXGTGck1uwis5vAXan3FnU5yw1Ec5hsSGnq4s/UCaSqABPOnOTg7zASLyst7+ohgWexg==",
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.2.tgz",
+ "integrity": "sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw==",
"dev": true
},
"node_modules/@shuding/opentype.js": {
@@ -6324,11 +7251,11 @@
}
},
"node_modules/@tanstack/react-virtual": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.2.0.tgz",
- "integrity": "sha512-OEdMByf2hEfDa6XDbGlZN8qO6bTjlNKqjM3im9JG+u3mCL8jALy0T/67oDI001raUUPh1Bdmfn4ZvPOV5knpcg==",
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.5.0.tgz",
+ "integrity": "sha512-rtvo7KwuIvqK9zb0VZ5IL7fiJAEnG+0EiFZz8FUOs+2mhGqdGmjKIaT1XU7Zq0eFqL0jonLlhbayJI/J2SA/Bw==",
"dependencies": {
- "@tanstack/virtual-core": "3.2.0"
+ "@tanstack/virtual-core": "3.5.0"
},
"funding": {
"type": "github",
@@ -6340,9 +7267,9 @@
}
},
"node_modules/@tanstack/virtual-core": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.2.0.tgz",
- "integrity": "sha512-P5XgYoAw/vfW65byBbJQCw+cagdXDT/qH6wmABiLt4v4YBT2q2vqCOhihe+D1Nt325F/S/0Tkv6C5z0Lv+VBQQ==",
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.5.0.tgz",
+ "integrity": "sha512-KnPRCkQTyqhanNC0K63GBG3wA8I+D1fQuVnAvcBF8f13akOKeQp1gSbu6f77zCxhEk727iV5oQnbHLYzHrECLg==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/tannerlinsley"
@@ -6408,9 +7335,9 @@
}
},
"node_modules/@tiptap/core": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.2.4.tgz",
- "integrity": "sha512-cRrI8IlLIhCE1hacBQzXIC8dsRvGq6a4lYWQK/BaHuZg21CG7szp3Vd8Ix+ra1f5v0xPOT+Hy+QFNQooRMKMCw==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.3.0.tgz",
+ "integrity": "sha512-Gk2JN3i5CMkYGmsbyFI7cBUftWa+F7QYmeCLTWfbuy+hCM2OBsnYVKxhggFPGXRL5KLBEgBWeCeWMHfIw3B2MA==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -6420,9 +7347,9 @@
}
},
"node_modules/@tiptap/extension-bold": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.2.4.tgz",
- "integrity": "sha512-v3tTLc8YESFZPOGj5ByFr8VbmQ/PTo49T1vsK50VubxIN/5r9cXlKH8kb3dZlZxCxJa3FrXNO/M8rdGBSWQvSg==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.3.0.tgz",
+ "integrity": "sha512-SzkbJibHXFNU7TRaAebTtwbXUEhGZ8+MhlBn12aQ4QhdjNtFpQwKXQPyYeDyZGcyiOFgtFTb+WIfCGm8ZX0Fpw==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -6432,9 +7359,9 @@
}
},
"node_modules/@tiptap/extension-bubble-menu": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.2.4.tgz",
- "integrity": "sha512-Nx1fS9jcFlhxaTDYlnayz2UulhK6CMaePc36+7PQIVI+u20RhgTCRNr25zKNemvsiM0RPZZVUjlHkxC0l5as1Q==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.3.0.tgz",
+ "integrity": "sha512-dqyfQ8idTlhapvt0fxCGvkyjw92pBEwPqmkJ01h3EE8wTh53j0ytOHyMSf1KBuzardxpd8Yya3zlrAcR0Z3DlQ==",
"dependencies": {
"tippy.js": "^6.3.7"
},
@@ -6448,9 +7375,9 @@
}
},
"node_modules/@tiptap/extension-code": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.2.4.tgz",
- "integrity": "sha512-JB4SJ2mUU/9qXFUf+K5K9szvovnN9AIcCb0f0UlcVBuddKHSqCl3wO3QJgYt44BfQTLMNuyzr+zVqfFd6BNt/g==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.3.0.tgz",
+ "integrity": "sha512-O2FZmosiIRoVbW82fZy8xW4h4gb2xAzxWzHEcsHPlwCbE3vYvcBMmbkQ5p+33eRtuRQInzl3Q/cwupv9ctIepQ==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -6460,9 +7387,9 @@
}
},
"node_modules/@tiptap/extension-collaboration": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-collaboration/-/extension-collaboration-2.2.4.tgz",
- "integrity": "sha512-Q9DnGeTYhB8TDud9B2zbRZqbNdBi0C/zzTYora2bFRRXnUzQUJgvV7HeIcHajj2wdKe8HXGwXjrCzORUtwUFgA==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-collaboration/-/extension-collaboration-2.3.0.tgz",
+ "integrity": "sha512-mim3lG+wdlSYiPdPYO6jAt0YhBauS0E1GoqrDgIVPM5G3qqcMC8DMLsA3XPkf5LZE7JSJRcX+R8Wo2VJXvqqYQ==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -6474,9 +7401,9 @@
}
},
"node_modules/@tiptap/extension-collaboration-cursor": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-collaboration-cursor/-/extension-collaboration-cursor-2.2.4.tgz",
- "integrity": "sha512-G0j08yGwFaq3AiaNHR+CUVCqLQv0fZhmwy9V1ByE7YkIgiDs9icCuKo1cbY2riW/Sn874rIHEctMxA8hVsNttw==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-collaboration-cursor/-/extension-collaboration-cursor-2.3.0.tgz",
+ "integrity": "sha512-nwh3yBuFCBvGLzJeCDzwAesm4nkbIQuYJCM7IUt/JHnY4nj6H9ZtJQw4gWe4CCiEzl8zgozIDyq/WSExweH7zw==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -6487,9 +7414,9 @@
}
},
"node_modules/@tiptap/extension-dropcursor": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.2.4.tgz",
- "integrity": "sha512-IHwkEKmqpqXyJi16h7871NrcIqeyN7I6XRE2qdqi+MhGigVWI8nWHoYbjRKa7K/1uhs5zeRYyDlq5EuZyL6mgA==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.3.0.tgz",
+ "integrity": "sha512-WWxxGQPWdbzxyYP6jtBYSq4wMRhINhI0wBC8pgkxTVwCIWftMuYj++FP4LLIpuWgj78PWApuoM0QQxk4Lj7FOw==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -6500,9 +7427,9 @@
}
},
"node_modules/@tiptap/extension-floating-menu": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.2.4.tgz",
- "integrity": "sha512-U25l7PEzOmlAPugNRl8t8lqyhQZS6W/+3f92+FdwW9qXju3i62iX/3OGCC3Gv+vybmQ4fbZmMjvl+VDfenNi3A==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.3.0.tgz",
+ "integrity": "sha512-bNY43/yU/+wGfmk2eDV7EPDAN/akbC+YnSKTA5VPJADzscvlrL2HlQrxbd/STIdlwKqdPU5MokcvCChhfZ4f6w==",
"dependencies": {
"tippy.js": "^6.3.7"
},
@@ -6516,9 +7443,9 @@
}
},
"node_modules/@tiptap/extension-gapcursor": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.2.4.tgz",
- "integrity": "sha512-Y6htT/RDSqkQ1UwG2Ia+rNVRvxrKPOs3RbqKHPaWr3vbFWwhHyKhMCvi/FqfI3d5pViVHOZQ7jhb5hT/a0BmNw==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.3.0.tgz",
+ "integrity": "sha512-OxcXcfD0uzNcXdXu2ZpXFAtXIsgK2MBHvFUs0t0gxtcL/t43pTOQBLy+29Ei30BxpwLghtX8jQ6IDzMiybq/sA==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -6529,9 +7456,9 @@
}
},
"node_modules/@tiptap/extension-hard-break": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.2.4.tgz",
- "integrity": "sha512-FPvS57GcqHIeLbPKGJa3gnH30Xw+YB1PXXnAWG2MpnMtc2Vtj1l5xaYYBZB+ADdXLAlU0YMbKhFLQO4+pg1Isg==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.3.0.tgz",
+ "integrity": "sha512-9pXi69SzLabbjY5KZ54UKzu7HAHTla9aYZKH56VatOAiJOPKJppFbU2/NfJwGzDrEtfOiDqr3dYbUDF3RuCFoQ==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -6541,9 +7468,9 @@
}
},
"node_modules/@tiptap/extension-history": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.2.4.tgz",
- "integrity": "sha512-FDM32XYF5NU4mzh+fJ8w2CyUqv0l2Nl15sd6fOhQkVxSj8t57z+DUXc9ZR3zkH+1RAagYJo/2Gu3e99KpMr0tg==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.3.0.tgz",
+ "integrity": "sha512-EF5Oq9fe/VBzU1Lsow2ubOlx1e1r4OQT1WUPGsRnL7pr94GH1Skpk7/hs9COJ9K6kP3Ebt42XjP0JEQodR58YA==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -6554,9 +7481,9 @@
}
},
"node_modules/@tiptap/extension-horizontal-rule": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.2.4.tgz",
- "integrity": "sha512-iCRHjFQQHApWg3R4fkKkJQhWEOdu1Fdc4YEAukdOXPSg3fg36IwjvsMXjt9SYBtVZ+iio3rORCZGXyMvgCH9uw==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.3.0.tgz",
+ "integrity": "sha512-4DB8GU3uuDzzyqUmONIb3CHXcQ6Nuy4mHHkFSmUyEjg1i5eMQU5H7S6mNvZbltcJB2ImgCSwSMlj1kVN3MLIPg==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -6567,9 +7494,9 @@
}
},
"node_modules/@tiptap/extension-italic": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.2.4.tgz",
- "integrity": "sha512-qIhGNvWnsQswSgEMRA8jQQjxfkOGNAuNWKEVQX9DPoqAUgknT41hQcAMP8L2+OdACpb2jbVMOO5Cy5Dof2L8/w==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.3.0.tgz",
+ "integrity": "sha512-jdFjLjdt5JtPlGMpoS6TEq5rznjbAYVlPwcw5VkYENVIYIGIR1ylIw2JwK1nUEsQ+OgYwVxHLejcUXWG1dCi2g==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -6579,9 +7506,9 @@
}
},
"node_modules/@tiptap/extension-link": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.2.4.tgz",
- "integrity": "sha512-Qsx0cFZm4dxbkToXs5TcXbSoUdicv8db1gV1DYIZdETqjBm4wFjlzCUP7hPHFlvNfeSy1BzAMRt+RpeuiwvxWQ==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.3.0.tgz",
+ "integrity": "sha512-CnJAlV0ZOdEhKmDfYKuHJVG8g79iCFQ85cX/CROTWyuMfXz9uhj2rLpZ6nfidVbonqxAhQp7NAIr2y+Fj5/53A==",
"dependencies": {
"linkifyjs": "^4.1.0"
},
@@ -6595,9 +7522,9 @@
}
},
"node_modules/@tiptap/extension-paragraph": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.2.4.tgz",
- "integrity": "sha512-m1KwyvTNJxsq7StbspbcOhxO4Wk4YpElDbqOouWi+H4c8azdpI5Pn96ZqhFeE9bSyjByg6OcB/wqoJsLbeFWdQ==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.3.0.tgz",
+ "integrity": "sha512-peCpA7DFqkd0cHb+cHv4YHNoMsXG8tKFNJlCHpLmsZWl2hWmpKgKmUrXAUfzjcFSvkZxn0xYc5oWbqUgg+2LzA==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -6607,9 +7534,9 @@
}
},
"node_modules/@tiptap/extension-strike": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.2.4.tgz",
- "integrity": "sha512-/a2EwQgA+PpG17V2tVRspcrIY0SN3blwcgM7lxdW4aucGkqSKnf7+91dkhQEwCZ//o8kv9mBCyRoCUcGy6S5Xg==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.3.0.tgz",
+ "integrity": "sha512-gOW4ALeH8gkJiUGGXVy/AOd5lAPTX0bzoOW1+sCLcTA7t8dluBW7M2ngNYxTEtlKqyv7aLfrgsYSiqucmmfSLw==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -6619,9 +7546,9 @@
}
},
"node_modules/@tiptap/extension-table-cell": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-table-cell/-/extension-table-cell-2.2.4.tgz",
- "integrity": "sha512-Dt3FjNjM1Mh2BgEjvx5+s96DiJpC82BdMtqicO3z/Pk0X1bn70ocMuURNR7upfRYI+9YbE3+3wBk/vY1yf7ydw==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-table-cell/-/extension-table-cell-2.3.0.tgz",
+ "integrity": "sha512-jsFp5lc+be04AsuMiTGlluLnsmJl/51+sv0DewYHeidh7iyvk3R5y2pyA+Bk1V/txFdaH5GxOQvSH3RonEVMAg==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -6631,9 +7558,9 @@
}
},
"node_modules/@tiptap/extension-table-header": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-table-header/-/extension-table-header-2.2.4.tgz",
- "integrity": "sha512-epRrB/468yGvKb/n6lW3VXWUpjMp3+mKxGWfsXLQncGb1leRbqkgQgsUUYuIEosk+70bjzz6lbfHKQBz408s3g==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-table-header/-/extension-table-header-2.3.0.tgz",
+ "integrity": "sha512-wLvJqDBaXc/xs+NBJZoSIfO7fVYqcrIlsdtQRlBec3vTpSG0w0zlrM/JY4mjQKHzWsDk6hb9mvbK2scChOu5TA==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -6643,9 +7570,9 @@
}
},
"node_modules/@tiptap/extension-table-row": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-table-row/-/extension-table-row-2.2.4.tgz",
- "integrity": "sha512-VItZ0byY5CVMrcSRrdBjhElHxIq1JQAAli+o3UNYM5rLKHKx4ezeBCUh80wIKvmaAxWsLMs8h/t4crxUE8dyHA==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-table-row/-/extension-table-row-2.3.0.tgz",
+ "integrity": "sha512-i2o/S8Mggw1GDxF5N5i8SvDvmOvbHu8MuWpdhFwfOkbrnEdtHlU/GjWIEstPymg4QyrfAEQa/KDffkrX0T7RNw==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -6655,9 +7582,9 @@
}
},
"node_modules/@tiptap/extension-text": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.2.4.tgz",
- "integrity": "sha512-NlKHMPnRJXB+0AGtDlU0P2Pg+SdesA2lMMd7JzDUgJgL7pX2jOb8eUqSeOjFKuSzFSqYfH6C3o6mQiNhuQMv+g==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.3.0.tgz",
+ "integrity": "sha512-zkudl0TyKRy/8vHtyo5dMzjBRD0HEUnsS8YOsjR4xwQq5EYUXleRgM1s6lb6Yms2sLUAZRWdDddoQ686iq4zQg==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -6667,9 +7594,9 @@
}
},
"node_modules/@tiptap/extension-underline": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.2.4.tgz",
- "integrity": "sha512-jCHgIJMwtXlGHVy/j3L8/QvglHCikkHJw7YS5yf8E/8HlPh1tZfVy/IxdgacDOpUN30X+UPJZQDdVKymafgwdA==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.3.0.tgz",
+ "integrity": "sha512-vmmcwCPmWqGKYHZevz50+bxrpHyiu5y6YZweAE476hn8Mud6vYg7RpkXgW8bjkCOky6UA51uelslSc0XrLE6uw==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -6679,9 +7606,9 @@
}
},
"node_modules/@tiptap/pm": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.2.4.tgz",
- "integrity": "sha512-Po0klR165zgtinhVp1nwMubjyKx6gAY9kH3IzcniYLCkqhPgiqnAcCr61TBpp4hfK8YURBS4ihvCB1dyfCyY8A==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.3.0.tgz",
+ "integrity": "sha512-4WYqShZBwDyReKvapC0nmeYdOtZbZ31y4MjolpKQaSD4I7kg/oZspC+byUGdvIRsNpRN7i2X0IyvdISKk8gw5Q==",
"dependencies": {
"prosemirror-changeset": "^2.2.1",
"prosemirror-collab": "^1.3.1",
@@ -6708,12 +7635,12 @@
}
},
"node_modules/@tiptap/react": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/react/-/react-2.2.4.tgz",
- "integrity": "sha512-HkYmMZWcETPZn3KpzdDg/ns2TKeFh54TvtCEInA4ljYtWGLoZc/A+KaiEtMIgVs+Mo1XwrhuoNGjL9c0OK2HJw==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/react/-/react-2.3.0.tgz",
+ "integrity": "sha512-ThgFJQTWYKRClTV2Zg0wBRqfy0EGz3U4NOey7jwncUjSjx5+o9nXbfQAYWDKQFfWyE+wnrBTYfddEP9pHNX5cQ==",
"dependencies": {
- "@tiptap/extension-bubble-menu": "^2.2.4",
- "@tiptap/extension-floating-menu": "^2.2.4"
+ "@tiptap/extension-bubble-menu": "^2.3.0",
+ "@tiptap/extension-floating-menu": "^2.3.0"
},
"funding": {
"type": "github",
@@ -6831,9 +7758,9 @@
}
},
"node_modules/@types/eslint": {
- "version": "8.56.7",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.7.tgz",
- "integrity": "sha512-SjDvI/x3zsZnOkYZ3lCt9lOZWZLB2jIlNKz+LBgCtDurK0JZcwucxYHn1w2BJkD34dgX9Tjnak0txtq4WTggEA==",
+ "version": "8.56.10",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz",
+ "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==",
"dependencies": {
"@types/estree": "*",
"@types/json-schema": "*"
@@ -6938,9 +7865,9 @@
}
},
"node_modules/@types/mdx": {
- "version": "2.0.12",
- "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.12.tgz",
- "integrity": "sha512-H9VZ9YqE+H28FQVchC83RCs5xQ2J7mAAv6qdDEaWmXEVl3OpdH+xfrSUzQ1lp7U7oSTRZ0RvW08ASPJsYBi7Cw=="
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz",
+ "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw=="
},
"node_modules/@types/minimatch": {
"version": "3.0.5",
@@ -6960,9 +7887,9 @@
"integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
},
"node_modules/@types/node": {
- "version": "20.12.3",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.3.tgz",
- "integrity": "sha512-sD+ia2ubTeWrOu+YMF+MTAB7E+O7qsMqAbMfW7DG3K1URwhZ5hN1pLlRVGbf4wDFzSfikL05M17EyorS86jShw==",
+ "version": "20.12.7",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz",
+ "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==",
"dependencies": {
"undici-types": "~5.26.4"
}
@@ -6990,19 +7917,19 @@
"integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q=="
},
"node_modules/@types/react": {
- "version": "18.2.74",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.74.tgz",
- "integrity": "sha512-9AEqNZZyBx8OdZpxzQlaFEVCSFUM2YXJH46yPOiOpm078k6ZLOCcuAzGum/zK8YBwY+dbahVNbHrbgrAwIRlqw==",
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.1.tgz",
+ "integrity": "sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw==",
"dependencies": {
"@types/prop-types": "*",
"csstype": "^3.0.2"
}
},
"node_modules/@types/react-dom": {
- "version": "18.2.23",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.23.tgz",
- "integrity": "sha512-ZQ71wgGOTmDYpnav2knkjr3qXdAFu0vsk8Ci5w3pGAIdj7/kKAyn+VsQDhXsmzzzepAiI9leWMmubXz690AI/A==",
- "dev": true,
+ "version": "18.3.0",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz",
+ "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==",
+ "devOptional": true,
"dependencies": {
"@types/react": "*"
}
@@ -7765,7 +8692,6 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
"engines": {
"node": ">=8"
}
@@ -7779,7 +8705,6 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -7793,14 +8718,12 @@
"node_modules/any-promise": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
- "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
- "dev": true
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="
},
"node_modules/anymatch": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
"integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "dev": true,
"dependencies": {
"normalize-path": "^3.0.0",
"picomatch": "^2.0.4"
@@ -7850,14 +8773,24 @@
"node_modules/arg": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
- "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
- "dev": true
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="
},
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
},
+ "node_modules/aria-hidden": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz",
+ "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==",
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/aria-query": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
@@ -8121,7 +9054,6 @@
"version": "10.4.19",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz",
"integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -8214,13 +9146,13 @@
}
},
"node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.4.10",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz",
- "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==",
+ "version": "0.4.11",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz",
+ "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==",
"dev": true,
"dependencies": {
"@babel/compat-data": "^7.22.6",
- "@babel/helper-define-polyfill-provider": "^0.6.1",
+ "@babel/helper-define-polyfill-provider": "^0.6.2",
"semver": "^6.3.1"
},
"peerDependencies": {
@@ -8250,12 +9182,12 @@
}
},
"node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz",
- "integrity": "sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==",
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz",
+ "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==",
"dev": true,
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.6.1"
+ "@babel/helper-define-polyfill-provider": "^0.6.2"
},
"peerDependencies": {
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
@@ -8303,8 +9235,7 @@
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"node_modules/base64-js": {
"version": "1.5.1",
@@ -8370,7 +9301,6 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
"integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
- "dev": true,
"engines": {
"node": ">=8"
},
@@ -8403,7 +9333,6 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
"dependencies": {
"fill-range": "^7.0.1"
},
@@ -8472,9 +9401,9 @@
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
},
"node_modules/builtins": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz",
- "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz",
+ "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==",
"dev": true,
"dependencies": {
"semver": "^7.0.0"
@@ -8646,7 +9575,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
"integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
- "dev": true,
"engines": {
"node": ">= 6"
}
@@ -8677,9 +9605,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001605",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001605.tgz",
- "integrity": "sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ==",
+ "version": "1.0.30001614",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001614.tgz",
+ "integrity": "sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==",
"funding": [
{
"type": "opencollective",
@@ -8805,7 +9733,6 @@
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
"integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
- "dev": true,
"dependencies": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
@@ -8829,7 +9756,6 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
"dependencies": {
"is-glob": "^4.0.1"
},
@@ -8861,6 +9787,25 @@
"integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
"dev": true
},
+ "node_modules/class-variance-authority": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz",
+ "integrity": "sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==",
+ "dependencies": {
+ "clsx": "2.0.0"
+ },
+ "funding": {
+ "url": "https://joebell.co.uk"
+ }
+ },
+ "node_modules/class-variance-authority/node_modules/clsx": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz",
+ "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/classnames": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
@@ -9140,9 +10085,9 @@
}
},
"node_modules/clsx": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz",
- "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
"engines": {
"node": ">=6"
}
@@ -9163,7 +10108,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
"dependencies": {
"color-name": "~1.1.4"
},
@@ -9220,11 +10164,11 @@
}
},
"node_modules/commander": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
- "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
"engines": {
- "node": ">= 12"
+ "node": ">= 6"
}
},
"node_modules/common-ancestor-path": {
@@ -9281,6 +10225,12 @@
"typedarray": "^0.0.6"
}
},
+ "node_modules/confbox": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz",
+ "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==",
+ "dev": true
+ },
"node_modules/config-chain": {
"version": "1.1.13",
"resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
@@ -9452,9 +10402,9 @@
}
},
"node_modules/core-js-compat": {
- "version": "3.36.1",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz",
- "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==",
+ "version": "3.37.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz",
+ "integrity": "sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==",
"dev": true,
"dependencies": {
"browserslist": "^4.23.0"
@@ -9544,7 +10494,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
- "dev": true,
"bin": {
"cssesc": "bin/cssesc"
},
@@ -9570,13 +10519,9 @@
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
},
"node_modules/cytoscape": {
- "version": "3.28.1",
- "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.28.1.tgz",
- "integrity": "sha512-xyItz4O/4zp9/239wCcH8ZcFuuZooEeF8KHRmzjDfGdXsj3OG9MFSMA0pJE0uX3uCN/ygof6hHf4L7lst+JaDg==",
- "dependencies": {
- "heap": "^0.2.6",
- "lodash": "^4.17.21"
- },
+ "version": "3.29.2",
+ "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.29.2.tgz",
+ "integrity": "sha512-2G1ycU28Nh7OHT9rkXRLpCDP30MKH1dXJORZuBhtEhEW7pKwgPi77ImqlCWinouyE1PNepIOGZBOrE84DG7LyQ==",
"engines": {
"node": ">=0.10"
}
@@ -10120,9 +11065,9 @@
}
},
"node_modules/dayjs": {
- "version": "1.11.10",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
- "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
+ "version": "1.11.11",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz",
+ "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg=="
},
"node_modules/debounce": {
"version": "1.2.1",
@@ -10362,8 +11307,7 @@
"node_modules/didyoumean": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
- "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
- "dev": true
+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="
},
"node_modules/diff": {
"version": "5.2.0",
@@ -10397,8 +11341,7 @@
"node_modules/dlv": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
- "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
- "dev": true
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="
},
"node_modules/docs": {
"resolved": "docs",
@@ -10430,9 +11373,9 @@
}
},
"node_modules/dompurify": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.11.tgz",
- "integrity": "sha512-Fan4uMuyB26gFV3ovPoEoQbxRRPfTu3CvImyZnhGq5fsIEO+gEFLp45ISFt+kQBWsK5ulDdT0oV28jS1UrwQLg=="
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.2.tgz",
+ "integrity": "sha512-hLGGBI1tw5N8qTELr3blKjAML/LY4ANxksbS612UiJyDfyf/2D092Pvm+S7pmeTGJRqvlJkFzBoHBQKgQlOQVg=="
},
"node_modules/dot-prop": {
"version": "6.0.1",
@@ -10466,13 +11409,12 @@
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
- "dev": true
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
},
"node_modules/ejs": {
- "version": "3.1.9",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz",
- "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==",
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
+ "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
"dev": true,
"dependencies": {
"jake": "^10.8.5"
@@ -10485,20 +11427,19 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.4.724",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.724.tgz",
- "integrity": "sha512-RTRvkmRkGhNBPPpdrgtDKvmOEYTrPlXDfc0J/Nfq5s29tEahAwhiX4mmhNzj6febWMleulxVYPh7QwCSL/EldA=="
+ "version": "1.4.751",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.751.tgz",
+ "integrity": "sha512-2DEPi++qa89SMGRhufWTiLmzqyuGmNF3SK4+PQetW1JKiZdEpF4XQonJXJCzyuYSA6mauiMhbyVhqYAP45Hvfw=="
},
"node_modules/elkjs": {
- "version": "0.9.2",
- "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.9.2.tgz",
- "integrity": "sha512-2Y/RaA1pdgSHpY0YG4TYuYCD2wh97CRvu22eLG3Kz0pgQ/6KbIFTxsTnDc4MH/6hFlg2L/9qXrDMG0nMjP63iw=="
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.9.3.tgz",
+ "integrity": "sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ=="
},
"node_modules/emoji-regex": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
- "dev": true
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
},
"node_modules/emojis-list": {
"version": "3.0.0",
@@ -10585,9 +11526,9 @@
}
},
"node_modules/envinfo": {
- "version": "7.11.1",
- "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz",
- "integrity": "sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==",
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz",
+ "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==",
"dev": true,
"bin": {
"envinfo": "dist/cli.js"
@@ -10693,14 +11634,14 @@
}
},
"node_modules/es-iterator-helpers": {
- "version": "1.0.18",
- "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz",
- "integrity": "sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==",
+ "version": "1.0.19",
+ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz",
+ "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==",
"dev": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
- "es-abstract": "^1.23.0",
+ "es-abstract": "^1.23.3",
"es-errors": "^1.3.0",
"es-set-tostringtag": "^2.0.3",
"function-bind": "^1.1.2",
@@ -10718,9 +11659,9 @@
}
},
"node_modules/es-module-lexer": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz",
- "integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==",
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.2.tgz",
+ "integrity": "sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==",
"peer": true
},
"node_modules/es-object-atoms": {
@@ -11203,9 +12144,9 @@
}
},
"node_modules/eslint-plugin-react-hooks": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz",
- "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==",
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz",
+ "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==",
"dev": true,
"engines": {
"node": ">=10"
@@ -11603,7 +12544,6 @@
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
"integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
- "dev": true,
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3",
@@ -11619,7 +12559,6 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
"dependencies": {
"is-glob": "^4.0.1"
},
@@ -11642,7 +12581,6 @@
"version": "1.17.1",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
"integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
- "dev": true,
"dependencies": {
"reusify": "^1.0.4"
}
@@ -11722,7 +12660,6 @@
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
"dependencies": {
"to-regex-range": "^5.0.1"
},
@@ -11827,7 +12764,6 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
"integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
- "dev": true,
"dependencies": {
"cross-spawn": "^7.0.0",
"signal-exit": "^4.0.1"
@@ -11857,7 +12793,6 @@
"version": "4.3.7",
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
"integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
- "dev": true,
"engines": {
"node": "*"
},
@@ -11950,7 +12885,6 @@
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
"hasInstallScript": true,
"optional": true,
"os": [
@@ -11964,7 +12898,6 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -12314,9 +13247,9 @@
}
},
"node_modules/github-buttons": {
- "version": "2.27.0",
- "resolved": "https://registry.npmjs.org/github-buttons/-/github-buttons-2.27.0.tgz",
- "integrity": "sha512-PmfRMI2Rttg/2jDfKBeSl621sEznrsKF019SuoLdoNlO7qRUZaOyEI5Li4uW+79pVqnDtKfIEVuHTIJ5lgy64w=="
+ "version": "2.28.0",
+ "resolved": "https://registry.npmjs.org/github-buttons/-/github-buttons-2.28.0.tgz",
+ "integrity": "sha512-KsCbYiA+MiHO3ytzdGvGt/GNde4GfG9BrrLxxc+ut2snBF9IAjrn2F5mNgHHEXdG/CfFIHOMV8Uxy4LNhxZwUA=="
},
"node_modules/github-slugger": {
"version": "2.0.0",
@@ -12327,7 +13260,6 @@
"version": "10.3.12",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz",
"integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==",
- "dev": true,
"dependencies": {
"foreground-child": "^3.1.0",
"jackspeak": "^2.3.6",
@@ -12349,7 +13281,6 @@
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
- "dev": true,
"dependencies": {
"is-glob": "^4.0.3"
},
@@ -12366,7 +13297,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
"dependencies": {
"balanced-match": "^1.0.0"
}
@@ -12375,7 +13305,6 @@
"version": "9.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
"integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
- "dev": true,
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -12414,12 +13343,13 @@
}
},
"node_modules/globalthis": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
- "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
"dev": true,
"dependencies": {
- "define-properties": "^1.1.3"
+ "define-properties": "^1.2.1",
+ "gopd": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
@@ -12695,7 +13625,6 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
- "dev": true,
"dependencies": {
"function-bind": "^1.1.2"
},
@@ -13347,11 +14276,6 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/heap": {
- "version": "0.2.7",
- "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz",
- "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg=="
- },
"node_modules/hex-rgb": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/hex-rgb/-/hex-rgb-4.3.0.tgz",
@@ -13876,7 +14800,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
"dependencies": {
"binary-extensions": "^2.0.0"
},
@@ -13950,7 +14873,6 @@
"version": "2.13.1",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
"integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
- "dev": true,
"dependencies": {
"hasown": "^2.0.0"
},
@@ -14024,7 +14946,6 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -14045,7 +14966,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
"engines": {
"node": ">=8"
}
@@ -14069,7 +14989,6 @@
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
"dependencies": {
"is-extglob": "^2.1.1"
},
@@ -14160,7 +15079,6 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
"engines": {
"node": ">=0.12.0"
}
@@ -14479,7 +15397,6 @@
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
"integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
- "dev": true,
"dependencies": {
"@isaacs/cliui": "^8.0.2"
},
@@ -14544,15 +15461,14 @@
"version": "1.21.0",
"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",
"integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
- "dev": true,
"bin": {
"jiti": "bin/jiti.js"
}
},
"node_modules/jose": {
- "version": "5.2.3",
- "resolved": "https://registry.npmjs.org/jose/-/jose-5.2.3.tgz",
- "integrity": "sha512-KUXdbctm1uHVL8BYhnyHkgp3zDX5KW8ZhAKVFEfUbU2P8Alpzjb+48hHvjOdQIyPshoblhzsuqOwEEAbtHVirA==",
+ "version": "5.2.4",
+ "resolved": "https://registry.npmjs.org/jose/-/jose-5.2.4.tgz",
+ "integrity": "sha512-6ScbIk2WWCeXkmzF6bRPmEuaqy1m8SbsRFMa/FLrSCkGIhj8OLVG/IH+XHVmNMx/KUo8cVWEE6oKR4dJ+S0Rkg==",
"funding": {
"url": "https://github.com/sponsors/panva"
}
@@ -14779,6 +15695,14 @@
"katex": "cli.js"
}
},
+ "node_modules/katex/node_modules/commander": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
+ "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
"node_modules/keyv": {
"version": "4.5.4",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
@@ -15064,7 +15988,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
"integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
- "dev": true,
"engines": {
"node": ">=10"
}
@@ -15184,7 +16107,8 @@
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
},
"node_modules/lodash-es": {
"version": "4.17.21",
@@ -15266,16 +16190,21 @@
"yallist": "^3.0.2"
}
},
+ "node_modules/lucide-react": {
+ "version": "0.362.0",
+ "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.362.0.tgz",
+ "integrity": "sha512-0S+JudK0AD9vyB0zbu1K0aQsy8k9Wq2l03bio6wxqF2FhK2TSp/y+22HfMyv40EURifgxoSwdU8eIcOv0a8gBA==",
+ "peerDependencies": {
+ "react": "^16.5.1 || ^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/magic-string": {
- "version": "0.30.8",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz",
- "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==",
+ "version": "0.30.10",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz",
+ "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==",
"dev": true,
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.15"
- },
- "engines": {
- "node": ">=12"
}
},
"node_modules/make-dir": {
@@ -15939,7 +16868,6 @@
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true,
"engines": {
"node": ">= 8"
}
@@ -16687,7 +17615,6 @@
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
"integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "dev": true,
"dependencies": {
"braces": "^3.0.2",
"picomatch": "^2.3.1"
@@ -16797,7 +17724,6 @@
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
"integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
- "dev": true,
"engines": {
"node": ">=16 || 14 >=14.17"
}
@@ -17130,7 +18056,6 @@
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
"integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
- "dev": true,
"dependencies": {
"any-promise": "^1.0.0",
"object-assign": "^4.0.1",
@@ -17226,11 +18151,11 @@
}
},
"node_modules/next-auth": {
- "version": "5.0.0-beta.16",
- "resolved": "https://registry.npmjs.org/next-auth/-/next-auth-5.0.0-beta.16.tgz",
- "integrity": "sha512-dX2snB+ezN23tFzSes3n3uosT9iBf0eILPYWH/R2fd9n3ZzdMQlRzq7JIOPeS1aLc84IuRlyuyXyx9XmmZB6og==",
+ "version": "5.0.0-beta.17",
+ "resolved": "https://registry.npmjs.org/next-auth/-/next-auth-5.0.0-beta.17.tgz",
+ "integrity": "sha512-XA/7JtAjOgDfAeotJPFUsFZGGItZwzZrxLt9Gc9fE7EchLk6zydZfuZ22Vvwixs3IilkN644D5IoD5tEOAFGCQ==",
"dependencies": {
- "@auth/core": "0.28.1"
+ "@auth/core": "0.30.0"
},
"peerDependencies": {
"@simplewebauthn/browser": "^9.0.1",
@@ -17583,7 +18508,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -17592,7 +18516,6 @@
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
"integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
- "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -17933,9 +18856,9 @@
}
},
"node_modules/nwsapi": {
- "version": "2.2.7",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz",
- "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==",
+ "version": "2.2.9",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.9.tgz",
+ "integrity": "sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==",
"dev": true
},
"node_modules/nx": {
@@ -18233,7 +19156,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
"integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
- "dev": true,
"engines": {
"node": ">= 6"
}
@@ -18404,17 +19326,17 @@
}
},
"node_modules/optionator": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
- "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
"dev": true,
"dependencies": {
- "@aashutoshrathi/word-wrap": "^1.2.3",
"deep-is": "^0.1.3",
"fast-levenshtein": "^2.0.6",
"levn": "^0.4.1",
"prelude-ls": "^1.2.1",
- "type-check": "^0.4.0"
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
},
"engines": {
"node": ">= 0.8.0"
@@ -19402,14 +20324,12 @@
"node_modules/path-parse": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
"node_modules/path-scurry": {
"version": "1.10.2",
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz",
"integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==",
- "dev": true,
"dependencies": {
"lru-cache": "^10.2.0",
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
@@ -19422,10 +20342,9 @@
}
},
"node_modules/path-scurry/node_modules/lru-cache": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
- "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
- "dev": true,
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz",
+ "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==",
"engines": {
"node": "14 || >=16.14"
}
@@ -19481,7 +20400,6 @@
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true,
"engines": {
"node": ">=8.6"
},
@@ -19505,7 +20423,6 @@
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
"integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
- "dev": true,
"engines": {
"node": ">= 6"
}
@@ -19575,23 +20492,23 @@
}
},
"node_modules/pkg-types": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz",
- "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.0.tgz",
+ "integrity": "sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA==",
"dev": true,
"dependencies": {
- "jsonc-parser": "^3.2.0",
- "mlly": "^1.2.0",
- "pathe": "^1.1.0"
+ "confbox": "^0.1.7",
+ "mlly": "^1.6.1",
+ "pathe": "^1.1.2"
}
},
"node_modules/playwright": {
- "version": "1.42.1",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.42.1.tgz",
- "integrity": "sha512-PgwB03s2DZBcNRoW+1w9E+VkLBxweib6KTXM0M3tkiT4jVxKSi6PmVJ591J+0u10LUrgxB7dLRbiJqO5s2QPMg==",
+ "version": "1.43.1",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.43.1.tgz",
+ "integrity": "sha512-V7SoH0ai2kNt1Md9E3Gwas5B9m8KR2GVvwZnAI6Pg0m3sh7UvgiYhRrhsziCmqMJNouPckiOhk8T+9bSAK0VIA==",
"dev": true,
"dependencies": {
- "playwright-core": "1.42.1"
+ "playwright-core": "1.43.1"
},
"bin": {
"playwright": "cli.js"
@@ -19604,9 +20521,9 @@
}
},
"node_modules/playwright-core": {
- "version": "1.42.1",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.42.1.tgz",
- "integrity": "sha512-mxz6zclokgrke9p1vtdy/COWBH+eOZgYUVVU34C73M+4j4HLlQJHtfcqiqqxpP0o8HhMkflvfbquLX5dg6wlfA==",
+ "version": "1.43.1",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.43.1.tgz",
+ "integrity": "sha512-EI36Mto2Vrx6VF7rm708qSnesVQKbxEWvPrfA1IPY6HgczBplDx7ENtx+K2n4kJ41sLLkuGfmb0ZLSSXlDhqPg==",
"dev": true,
"bin": {
"playwright-core": "cli.js"
@@ -19628,7 +20545,6 @@
"version": "8.4.38",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
"integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -19656,7 +20572,6 @@
"version": "15.1.0",
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
"integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
- "dev": true,
"dependencies": {
"postcss-value-parser": "^4.0.0",
"read-cache": "^1.0.0",
@@ -19673,7 +20588,6 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
"integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
- "dev": true,
"dependencies": {
"camelcase-css": "^2.0.1"
},
@@ -19692,7 +20606,6 @@
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
"integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -19727,7 +20640,6 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz",
"integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==",
- "dev": true,
"engines": {
"node": ">=14"
},
@@ -19736,10 +20648,9 @@
}
},
"node_modules/postcss-load-config/node_modules/yaml": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.1.tgz",
- "integrity": "sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==",
- "dev": true,
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz",
+ "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==",
"bin": {
"yaml": "bin.mjs"
},
@@ -19751,7 +20662,6 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz",
"integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==",
- "dev": true,
"dependencies": {
"postcss-selector-parser": "^6.0.11"
},
@@ -19770,7 +20680,6 @@
"version": "6.0.16",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz",
"integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==",
- "dev": true,
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -19860,9 +20769,9 @@
}
},
"node_modules/pretty-format/node_modules/react-is": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
"dev": true
},
"node_modules/printable-characters": {
@@ -19942,9 +20851,9 @@
}
},
"node_modules/property-information": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.4.1.tgz",
- "integrity": "sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==",
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
+ "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
@@ -20117,11 +21026,11 @@
}
},
"node_modules/prosemirror-view": {
- "version": "1.33.3",
- "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.3.tgz",
- "integrity": "sha512-P4Ao/bc4OrU/2yLIf8dL4lJaEtjLR3QjIvQHgJYp2jUS7kYM4bSR6okbBjkqzOs/FwUon6UGjTLdKMnPL1MZqw==",
+ "version": "1.33.6",
+ "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.6.tgz",
+ "integrity": "sha512-zRLUNgLIQfd8IfGprsXxWTjdA8xEAFJe8cDNrOptj6Mop9sj+BMeVbJvceyAYCm5G2dOdT2prctH7K9dfnpIMw==",
"dependencies": {
- "prosemirror-model": "^1.16.0",
+ "prosemirror-model": "^1.20.0",
"prosemirror-state": "^1.0.0",
"prosemirror-transform": "^1.1.0"
}
@@ -20190,7 +21099,6 @@
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -20277,6 +21185,21 @@
"react": ">=16.3.0"
}
},
+ "node_modules/react-hook-form": {
+ "version": "7.51.3",
+ "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.51.3.tgz",
+ "integrity": "sha512-cvJ/wbHdhYx8aviSWh28w9ImjmVsb5Y05n1+FW786vEZQJV5STNM0pW6ujS+oiBecb0ARBxJFyAnXj9+GHXACQ==",
+ "engines": {
+ "node": ">=12.22.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/react-hook-form"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17 || ^18"
+ }
+ },
"node_modules/react-icons": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.12.0.tgz",
@@ -20303,9 +21226,9 @@
}
},
"node_modules/react-refresh": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
- "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
+ "version": "0.14.2",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
+ "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==",
"dev": true,
"engines": {
"node": ">=0.10.0"
@@ -20357,11 +21280,11 @@
}
},
"node_modules/react-router": {
- "version": "6.22.3",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.3.tgz",
- "integrity": "sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==",
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.23.0.tgz",
+ "integrity": "sha512-wPMZ8S2TuPadH0sF5irFGjkNLIcRvOSaEe7v+JER8508dyJumm6XZB1u5kztlX0RVq6AzRVndzqcUh6sFIauzA==",
"dependencies": {
- "@remix-run/router": "1.15.3"
+ "@remix-run/router": "1.16.0"
},
"engines": {
"node": ">=14.0.0"
@@ -20371,12 +21294,12 @@
}
},
"node_modules/react-router-dom": {
- "version": "6.22.3",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.3.tgz",
- "integrity": "sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==",
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.23.0.tgz",
+ "integrity": "sha512-Q9YaSYvubwgbal2c9DJKfx6hTNoBp3iJDsl+Duva/DwxoJH+OTXkxGpql4iUK2sla/8z4RpjAm6EWx1qUDuopQ==",
"dependencies": {
- "@remix-run/router": "1.15.3",
- "react-router": "6.22.3"
+ "@remix-run/router": "1.16.0",
+ "react-router": "6.23.0"
},
"engines": {
"node": ">=14.0.0"
@@ -20440,7 +21363,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
"integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
- "dev": true,
"dependencies": {
"pify": "^2.3.0"
}
@@ -20449,7 +21371,6 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
- "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -20786,7 +21707,6 @@
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
"dependencies": {
"picomatch": "^2.2.1"
},
@@ -20980,9 +21900,9 @@
"integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
},
"node_modules/rehype-katex/node_modules/hast-util-to-text": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.0.tgz",
- "integrity": "sha512-EWiE1FSArNBPUo1cKWtzqgnuRQwEeQbQtnFJRYV1hb1BWDgrAlBU0ExptvZMM/KSA82cDpm2sFGf3Dmc5Mza3w==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz",
+ "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==",
"dependencies": {
"@types/hast": "^3.0.0",
"@types/unist": "^3.0.0",
@@ -21610,7 +22530,6 @@
"version": "1.22.8",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
"integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
- "dev": true,
"dependencies": {
"is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
@@ -21694,7 +22613,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "dev": true,
"engines": {
"iojs": ">=1.0.0",
"node": ">=0.10.0"
@@ -21741,9 +22659,9 @@
"integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="
},
"node_modules/rollup": {
- "version": "4.13.2",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.2.tgz",
- "integrity": "sha512-MIlLgsdMprDBXC+4hsPgzWUasLO9CE4zOkj/u6j+Z6j5A4zRY+CtiXAdJyPtgCsc42g658Aeh1DlrdVEJhsL2g==",
+ "version": "4.17.2",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.17.2.tgz",
+ "integrity": "sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==",
"dev": true,
"dependencies": {
"@types/estree": "1.0.5"
@@ -21756,28 +22674,29 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.13.2",
- "@rollup/rollup-android-arm64": "4.13.2",
- "@rollup/rollup-darwin-arm64": "4.13.2",
- "@rollup/rollup-darwin-x64": "4.13.2",
- "@rollup/rollup-linux-arm-gnueabihf": "4.13.2",
- "@rollup/rollup-linux-arm64-gnu": "4.13.2",
- "@rollup/rollup-linux-arm64-musl": "4.13.2",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.13.2",
- "@rollup/rollup-linux-riscv64-gnu": "4.13.2",
- "@rollup/rollup-linux-s390x-gnu": "4.13.2",
- "@rollup/rollup-linux-x64-gnu": "4.13.2",
- "@rollup/rollup-linux-x64-musl": "4.13.2",
- "@rollup/rollup-win32-arm64-msvc": "4.13.2",
- "@rollup/rollup-win32-ia32-msvc": "4.13.2",
- "@rollup/rollup-win32-x64-msvc": "4.13.2",
+ "@rollup/rollup-android-arm-eabi": "4.17.2",
+ "@rollup/rollup-android-arm64": "4.17.2",
+ "@rollup/rollup-darwin-arm64": "4.17.2",
+ "@rollup/rollup-darwin-x64": "4.17.2",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.17.2",
+ "@rollup/rollup-linux-arm-musleabihf": "4.17.2",
+ "@rollup/rollup-linux-arm64-gnu": "4.17.2",
+ "@rollup/rollup-linux-arm64-musl": "4.17.2",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.17.2",
+ "@rollup/rollup-linux-riscv64-gnu": "4.17.2",
+ "@rollup/rollup-linux-s390x-gnu": "4.17.2",
+ "@rollup/rollup-linux-x64-gnu": "4.17.2",
+ "@rollup/rollup-linux-x64-musl": "4.17.2",
+ "@rollup/rollup-win32-arm64-msvc": "4.17.2",
+ "@rollup/rollup-win32-ia32-msvc": "4.17.2",
+ "@rollup/rollup-win32-x64-msvc": "4.17.2",
"fsevents": "~2.3.2"
}
},
"node_modules/rollup-plugin-webpack-stats": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/rollup-plugin-webpack-stats/-/rollup-plugin-webpack-stats-0.2.5.tgz",
- "integrity": "sha512-H/Qjg41rwga3SZxhIVghxCcouOWhBNhqNW7kk9z/Ie4yrjr/GBr1BnUMTa01FCXNqaiZqgbQODrm+14YGq7SKw==",
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-webpack-stats/-/rollup-plugin-webpack-stats-0.2.6.tgz",
+ "integrity": "sha512-JqWP0FWzMily2//1WxhopsKzPO6nnGiWn1PN7l4HFQbus0MVC4hMUZPmkIDb65QV98YUA1PFFBbDHEjRbzg7+g==",
"dev": true,
"engines": {
"node": ">=14"
@@ -21810,7 +22729,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -21951,9 +22869,9 @@
}
},
"node_modules/scheduler": {
- "version": "0.23.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
- "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
+ "version": "0.23.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
"dependencies": {
"loose-envify": "^1.1.0"
}
@@ -22189,9 +23107,9 @@
}
},
"node_modules/socks": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.1.tgz",
- "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==",
+ "version": "2.8.3",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz",
+ "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==",
"dev": true,
"dependencies": {
"ip-address": "^9.0.5",
@@ -22421,7 +23339,6 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
"integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
- "dev": true,
"dependencies": {
"eastasianwidth": "^0.2.0",
"emoji-regex": "^9.2.2",
@@ -22439,7 +23356,6 @@
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -22452,14 +23368,12 @@
"node_modules/string-width-cjs/node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
},
"node_modules/string-width/node_modules/ansi-regex": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
"integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
- "dev": true,
"engines": {
"node": ">=12"
},
@@ -22471,7 +23385,6 @@
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
- "dev": true,
"dependencies": {
"ansi-regex": "^6.0.1"
},
@@ -22563,9 +23476,9 @@
}
},
"node_modules/stringify-entities": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz",
- "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
+ "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
"dependencies": {
"character-entities-html4": "^2.0.0",
"character-entities-legacy": "^3.0.0"
@@ -22579,7 +23492,6 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -22592,7 +23504,6 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -22718,15 +23629,14 @@
}
},
"node_modules/stylis": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz",
- "integrity": "sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ=="
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz",
+ "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg=="
},
"node_modules/sucrase": {
"version": "3.35.0",
"resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
"integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
- "dev": true,
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.2",
"commander": "^4.0.0",
@@ -22744,20 +23654,10 @@
"node": ">=16 || 14 >=14.17"
}
},
- "node_modules/sucrase/node_modules/commander": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
- "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/sucrase/node_modules/lines-and-columns": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "dev": true
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
},
"node_modules/supports-color": {
"version": "7.2.0",
@@ -22775,7 +23675,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true,
"engines": {
"node": ">= 0.4"
},
@@ -22805,11 +23704,22 @@
"resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz",
"integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew=="
},
+ "node_modules/tailwind-merge": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.3.0.tgz",
+ "integrity": "sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA==",
+ "dependencies": {
+ "@babel/runtime": "^7.24.1"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/dcastil"
+ }
+ },
"node_modules/tailwindcss": {
"version": "3.4.3",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz",
"integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==",
- "dev": true,
"dependencies": {
"@alloc/quick-lru": "^5.2.0",
"arg": "^5.0.2",
@@ -22842,6 +23752,14 @@
"node": ">=14.0.0"
}
},
+ "node_modules/tailwindcss-animate": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz",
+ "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==",
+ "peerDependencies": {
+ "tailwindcss": ">=3.0.0 || insiders"
+ }
+ },
"node_modules/tapable": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
@@ -22908,9 +23826,9 @@
}
},
"node_modules/terser": {
- "version": "5.30.2",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.2.tgz",
- "integrity": "sha512-vTDjRKYKip4dOFL5VizdoxHTYDfEXPdz5t+FbxCC5Rp2s+KbEO8w5wqMDPgj7CtFKZuzq7PXv28fZoXfqqBVuw==",
+ "version": "5.31.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.0.tgz",
+ "integrity": "sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==",
"peer": true,
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
@@ -22984,7 +23902,6 @@
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
"integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
- "dev": true,
"dependencies": {
"any-promise": "^1.0.0"
}
@@ -22993,7 +23910,6 @@
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
"integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
- "dev": true,
"dependencies": {
"thenify": ">= 3.1.0 < 4"
},
@@ -23022,9 +23938,9 @@
"integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="
},
"node_modules/tinybench": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.6.0.tgz",
- "integrity": "sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==",
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.8.0.tgz",
+ "integrity": "sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==",
"dev": true
},
"node_modules/tinypool": {
@@ -23289,7 +24205,6 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
"dependencies": {
"is-number": "^7.0.0"
},
@@ -23306,9 +24221,9 @@
}
},
"node_modules/tough-cookie": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
- "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz",
+ "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==",
"dev": true,
"dependencies": {
"psl": "^1.1.33",
@@ -23397,8 +24312,7 @@
"node_modules/ts-interface-checker": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
- "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
- "dev": true
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="
},
"node_modules/tsconfig-paths": {
"version": "3.15.0",
@@ -23460,9 +24374,9 @@
"dev": true
},
"node_modules/tsx": {
- "version": "4.7.1",
- "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.7.1.tgz",
- "integrity": "sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==",
+ "version": "4.7.3",
+ "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.7.3.tgz",
+ "integrity": "sha512-+fQnMqIp/jxZEXLcj6WzYy9FhcS5/Dfk8y4AtzJ6ejKcKqmfTF8Gso/jtrzDggCF2zTU20gJa6n8XqPYwDAUYQ==",
"dev": true,
"dependencies": {
"esbuild": "~0.19.10",
@@ -23920,9 +24834,9 @@
}
},
"node_modules/type-fest": {
- "version": "4.14.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.14.0.tgz",
- "integrity": "sha512-on5/Cw89wwqGZQu+yWO0gGMGu8VNxsaW9SB2HE8yJjllEk7IDTwnSN1dUVldYILhYPN5HzD7WAaw2cc/jBfn0Q==",
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.18.0.tgz",
+ "integrity": "sha512-+dbmiyliDY/2TTcjCS7NpI9yV2iEFlUDk5TKnsbkN7ZoRu5s7bT+zvYtNFhFXC2oLwURGT2frACAZvbbyNBI+w==",
"engines": {
"node": ">=16"
},
@@ -24019,9 +24933,9 @@
}
},
"node_modules/typescript": {
- "version": "5.4.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz",
- "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==",
+ "version": "5.4.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",
+ "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -24545,11 +25459,18 @@
}
}
},
+ "node_modules/use-sync-external-store": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz",
+ "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
},
"node_modules/uuid": {
"version": "8.3.2",
@@ -25244,6 +26165,15 @@
"node": ">=8"
}
},
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/wordwrap": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
@@ -25273,7 +26203,6 @@
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
"integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
- "dev": true,
"dependencies": {
"ansi-styles": "^6.1.0",
"string-width": "^5.0.1",
@@ -25291,7 +26220,6 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -25307,14 +26235,12 @@
"node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
},
"node_modules/wrap-ansi-cjs/node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -25328,7 +26254,6 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
"integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
- "dev": true,
"engines": {
"node": ">=12"
},
@@ -25340,7 +26265,6 @@
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
"integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
- "dev": true,
"engines": {
"node": ">=12"
},
@@ -25352,7 +26276,6 @@
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
- "dev": true,
"dependencies": {
"ansi-regex": "^6.0.1"
},
@@ -25545,9 +26468,9 @@
}
},
"node_modules/ws": {
- "version": "8.16.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz",
- "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==",
+ "version": "8.17.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz",
+ "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==",
"engines": {
"node": ">=10.0.0"
},
@@ -25710,9 +26633,9 @@
}
},
"node_modules/yjs": {
- "version": "13.6.14",
- "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.14.tgz",
- "integrity": "sha512-D+7KcUr0j+vBCUSKXXEWfA+bG4UQBviAwP3gYBhkstkgwy5+8diOPMx0iqLIOxNo/HxaREUimZRxqHGAHCL2BQ==",
+ "version": "13.6.15",
+ "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.15.tgz",
+ "integrity": "sha512-moFv4uNYhp8BFxIk3AkpoAnnjts7gwdpiG8RtyFiKbMtxKCS0zVZ5wPaaGpwC3V2N/K8TK8MwtSI3+WO9CHWjQ==",
"dependencies": {
"lib0": "^0.2.86"
},
@@ -25760,9 +26683,9 @@
}
},
"node_modules/zod": {
- "version": "3.22.4",
- "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz",
- "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==",
+ "version": "3.23.5",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.5.tgz",
+ "integrity": "sha512-fkwiq0VIQTksNNA131rDOsVJcns0pfVUjHzLrNBiF/O/Xxb5lQyEXkhZWcJ7npWsYlvs+h0jFWXXy4X46Em1JA==",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
@@ -25776,6 +26699,53 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "packages/ariakit": {
+ "name": "@blocknote/ariakit",
+ "version": "0.12.4",
+ "license": "MPL-2.0",
+ "dependencies": {
+ "@ariakit/react": "^0.4.3",
+ "@blocknote/core": "0.12.4",
+ "@blocknote/react": "0.12.4",
+ "react": "^18",
+ "react-dom": "^18"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "prettier": "^2.7.1",
+ "rimraf": "^5.0.5",
+ "rollup-plugin-webpack-stats": "^0.2.2",
+ "typescript": "^5.3.3",
+ "vite": "^4.4.8",
+ "vite-plugin-eslint": "^1.8.1",
+ "vite-plugin-externalize-deps": "^0.7.0"
+ },
+ "peerDependencies": {
+ "react": "^18",
+ "react-dom": "^18"
+ }
+ },
+ "packages/ariakit/node_modules/rimraf": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz",
+ "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^10.3.7"
+ },
+ "bin": {
+ "rimraf": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"packages/core": {
"name": "@blocknote/core",
"version": "0.12.4",
@@ -25855,7 +26825,7 @@
},
"packages/dev-scripts": {
"name": "@blocknote/dev-scripts",
- "version": "0.12.1",
+ "version": "0.12.4",
"license": "MPL-2.0",
"devDependencies": {
"@types/react": "^18.0.25",
@@ -25870,11 +26840,62 @@
"typescript": "^5.3.3"
}
},
+ "packages/mantine": {
+ "name": "@blocknote/mantine",
+ "version": "0.12.4",
+ "license": "MPL-2.0",
+ "dependencies": {
+ "@blocknote/core": "0.12.4",
+ "@blocknote/react": "0.12.4",
+ "@mantine/core": "^7.5.0",
+ "@mantine/hooks": "^7.5.0",
+ "@mantine/utils": "^6.0.21",
+ "react": "^18",
+ "react-dom": "^18",
+ "react-icons": "^4.3.1"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "prettier": "^2.7.1",
+ "rimraf": "^5.0.5",
+ "rollup-plugin-webpack-stats": "^0.2.2",
+ "typescript": "^5.3.3",
+ "vite": "^4.4.8",
+ "vite-plugin-eslint": "^1.8.1",
+ "vite-plugin-externalize-deps": "^0.7.0"
+ },
+ "peerDependencies": {
+ "react": "^18",
+ "react-dom": "^18"
+ }
+ },
+ "packages/mantine/node_modules/rimraf": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz",
+ "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^10.3.7"
+ },
+ "bin": {
+ "rimraf": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"packages/react": {
"name": "@blocknote/react",
"version": "0.12.4",
"license": "MPL-2.0",
"dependencies": {
+ "@ariakit/react": "^0.4.3",
"@blocknote/core": "^0.12.4",
"@floating-ui/react": "^0.26.4",
"@mantine/core": "^7.7.1",
@@ -25884,7 +26905,7 @@
"@tiptap/react": "^2.0.3",
"lodash.merge": "^4.6.2",
"react": "^18",
- "react-dom": "^18.2.0",
+ "react-dom": "^18",
"react-icons": "^4.3.1",
"use-prefers-color-scheme": "^1.1.3"
},
@@ -25928,12 +26949,82 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "packages/shadcn": {
+ "name": "@blocknote/shadcn",
+ "version": "0.12.4",
+ "license": "MPL-2.0",
+ "dependencies": {
+ "@blocknote/core": "0.12.4",
+ "@blocknote/react": "0.12.4",
+ "@hookform/resolvers": "^3.3.4",
+ "@radix-ui/react-dropdown-menu": "^2.0.6",
+ "@radix-ui/react-label": "^2.0.2",
+ "@radix-ui/react-popover": "^1.0.7",
+ "@radix-ui/react-select": "^2.0.0",
+ "@radix-ui/react-slot": "^1.0.2",
+ "@radix-ui/react-tabs": "^1.0.4",
+ "@radix-ui/react-toggle": "^1.0.3",
+ "@radix-ui/react-tooltip": "^1.0.7",
+ "autoprefixer": "^10.4.19",
+ "class-variance-authority": "^0.7.0",
+ "clsx": "^2.1.1",
+ "lucide-react": "^0.362.0",
+ "postcss": "^8.4.38",
+ "react": "^18",
+ "react-dom": "^18",
+ "react-hook-form": "^7.51.3",
+ "tailwind-merge": "^2.3.0",
+ "tailwindcss": "^3.4.3",
+ "tailwindcss-animate": "^1.0.7",
+ "zod": "^3.22.4"
+ },
+ "devDependencies": {
+ "@radix-ui/colors": "^3.0.0",
+ "@types/node": "^20.12.7",
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "prettier": "^2.7.1",
+ "rimraf": "^5.0.5",
+ "rollup-plugin-webpack-stats": "^0.2.2",
+ "typescript": "^5.3.3",
+ "vite": "^4.4.8",
+ "vite-plugin-eslint": "^1.8.1",
+ "vite-plugin-externalize-deps": "^0.7.0"
+ },
+ "peerDependencies": {
+ "react": "^18",
+ "react-dom": "^18"
+ }
+ },
+ "packages/shadcn/node_modules/rimraf": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz",
+ "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^10.3.7"
+ },
+ "bin": {
+ "rimraf": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"playground": {
"name": "@blocknote/example-editor",
"version": "0.12.4",
"dependencies": {
+ "@blocknote/ariakit": "^0.12.4",
"@blocknote/core": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
"@blocknote/react": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"@liveblocks/client": "^1.10.0",
"@liveblocks/yjs": "^1.10.0",
"@mantine/core": "^7.7.1",
@@ -25980,8 +27071,11 @@
"react-dom": "^18.2.0"
},
"devDependencies": {
+ "@blocknote/ariakit": "^0.12.4",
"@blocknote/core": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
"@blocknote/react": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
"@playwright/experimental-ct-react": "^1.42.1",
"@playwright/test": "^1.42.1",
"eslint": "^8.10.0",
diff --git a/packages/ariakit/package.json b/packages/ariakit/package.json
new file mode 100644
index 0000000000..fb30ad5e98
--- /dev/null
+++ b/packages/ariakit/package.json
@@ -0,0 +1,83 @@
+{
+ "name": "@blocknote/ariakit",
+ "homepage": "https://github.com/TypeCellOS/BlockNote",
+ "private": false,
+ "license": "MPL-2.0",
+ "version": "0.12.4",
+ "files": [
+ "dist",
+ "types",
+ "src"
+ ],
+ "keywords": [
+ "react",
+ "javascript",
+ "editor",
+ "typescript",
+ "prosemirror",
+ "wysiwyg",
+ "rich-text-editor",
+ "notion",
+ "yjs",
+ "block-based",
+ "tiptap"
+ ],
+ "description": "A \"Notion-style\" block-based extensible text editor built on top of Prosemirror and Tiptap.",
+ "type": "module",
+ "source": "src/index.tsx",
+ "types": "./types/src/index.d.ts",
+ "main": "./dist/blocknote-ariakit.umd.cjs",
+ "module": "./dist/blocknote-ariakit.js",
+ "exports": {
+ ".": {
+ "types": "./types/src/index.d.ts",
+ "import": "./dist/blocknote-ariakit.js",
+ "require": "./dist/blocknote-ariakit.umd.cjs"
+ },
+ "./style.css": {
+ "import": "./dist/style.css",
+ "require": "./dist/style.css"
+ }
+ },
+ "scripts": {
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "build-bundled": "tsc && vite build --config vite.config.bundled.ts && git checkout tmp-releases && rm -rf ../../release && mv ../../release-tmp ../../release",
+ "preview": "vite preview",
+ "lint": "eslint src --max-warnings 0",
+ "clean": "rimraf dist && rimraf types"
+ },
+ "dependencies": {
+ "@ariakit/react": "^0.4.3",
+ "@blocknote/core": "0.12.4",
+ "@blocknote/react": "0.12.4",
+ "react": "^18",
+ "react-dom": "^18"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "prettier": "^2.7.1",
+ "rimraf": "^5.0.5",
+ "rollup-plugin-webpack-stats": "^0.2.2",
+ "typescript": "^5.3.3",
+ "vite": "^4.4.8",
+ "vite-plugin-eslint": "^1.8.1",
+ "vite-plugin-externalize-deps": "^0.7.0"
+ },
+ "peerDependencies": {
+ "react": "^18",
+ "react-dom": "^18"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../.eslintrc.js"
+ ]
+ },
+ "publishConfig": {
+ "access": "public",
+ "registry": "https://registry.npmjs.org/"
+ }
+}
diff --git a/packages/ariakit/src/ariakitStyles.css b/packages/ariakit/src/ariakitStyles.css
new file mode 100644
index 0000000000..9834c1510f
--- /dev/null
+++ b/packages/ariakit/src/ariakitStyles.css
@@ -0,0 +1,1005 @@
+/* This file contains styles copied directly from Ariakit's website, and is
+responsible for the majority of the styling. */
+
+/* https://ariakit.org/examples/menu-nested */
+.bn-ak-button {
+ --border: rgb(0 0 0/13%);
+ --highlight: rgb(255 255 255/20%);
+ --shadow: rgb(0 0 0/10%);
+ display: flex;
+ height: 2.5rem;
+ user-select: none;
+ align-items: center;
+ justify-content: center;
+ gap: 0.25rem;
+ white-space: nowrap;
+ border-radius: 0.5rem;
+ border-style: none;
+ background-color: hsl(204 20% 100%);
+ padding-left: 1rem;
+ padding-right: 1rem;
+ font-size: 1rem;
+ line-height: 1.5rem;
+ color: hsl(204 4% 0%);
+ text-decoration-line: none;
+ outline-width: 2px;
+ outline-offset: 2px;
+ outline-color: hsl(204 100% 40%);
+ box-shadow:
+ inset 0 0 0 1px var(--border),
+ inset 0 2px 0 var(--highlight),
+ inset 0 -1px 0 var(--shadow),
+ 0 1px 1px var(--shadow);
+ font-weight: 500;
+}
+
+.bn-ak-button:where(.dark, .dark *) {
+ --border: rgb(255 255 255/10%);
+ --highlight: rgb(255 255 255/5%);
+ --shadow: rgb(0 0 0/25%);
+ background-color: hsl(204 20% 100% / 0.05);
+ color: hsl(204 20% 100%);
+ box-shadow:
+ inset 0 0 0 1px var(--border),
+ inset 0 -1px 0 1px var(--shadow),
+ inset 0 1px 0 var(--highlight);
+}
+
+.bn-ak-button:not(:active):hover {
+ --border: rgb(0 0 0/33%);
+}
+
+.bn-ak-button:where(.dark, .dark *):not(:active):hover {
+ --border: rgb(255 255 255/25%);
+}
+
+.bn-ak-button[aria-disabled="true"] {
+ opacity: 0.5;
+}
+
+.bn-ak-button[data-focus-visible] {
+ outline-style: solid;
+}
+
+.bn-ak-button:active,
+.bn-ak-button[data-active] {
+ padding-top: 0.125rem;
+ box-shadow:
+ inset 0 0 0 1px var(--border),
+ inset 0 2px 0 var(--border);
+}
+
+@media (min-width: 640px) {
+ .bn-ak-button {
+ gap: 0.5rem;
+ }
+}
+
+.bn-ak-button:active:where(.dark, .dark *),
+.bn-ak-button[data-active]:where(.dark, .dark *) {
+ box-shadow:
+ inset 0 0 0 1px var(--border),
+ inset 0 1px 1px 1px var(--shadow);
+}
+
+.bn-ak-menu {
+ position: relative;
+ z-index: 50;
+ display: flex;
+ max-height: var(--popover-available-height);
+ min-width: 180px;
+ flex-direction: column;
+ overscroll-behavior: contain;
+ border-radius: 0.5rem;
+ border-width: 1px;
+ border-style: solid;
+ border-color: hsl(204 20% 88%);
+ background-color: hsl(204 20% 100%);
+ padding: 0.5rem;
+ color: hsl(204 4% 0%);
+ box-shadow:
+ 0 10px 15px -3px rgb(0 0 0 / 0.1),
+ 0 4px 6px -4px rgb(0 0 0 / 0.1);
+ outline: none !important;
+ overflow: visible;
+}
+
+.bn-ak-menu:where(.dark, .dark *) {
+ border-color: hsl(204 4% 24%);
+ background-color: hsl(204 4% 16%);
+ color: hsl(204 20% 100%);
+ box-shadow:
+ 0 10px 15px -3px rgb(0 0 0 / 0.25),
+ 0 4px 6px -4px rgb(0 0 0 / 0.1);
+}
+
+.bn-ak-menu-item {
+ display: flex;
+ cursor: default;
+ scroll-margin: 0.5rem;
+ align-items: center;
+ gap: 0.5rem;
+ border-radius: 0.25rem;
+ padding: 0.5rem;
+ outline: none !important;
+}
+
+.bn-ak-menu-item[aria-disabled="true"] {
+ opacity: 0.25;
+}
+
+.bn-ak-menu-item[data-active-item] {
+ background-color: hsl(204 100% 40%);
+ color: hsl(204 20% 100%);
+}
+
+.bn-ak-menu-item:active,
+.bn-ak-menu-item[data-active] {
+ background-color: hsl(204 100% 32%);
+ padding-top: 9px;
+ padding-bottom: 7px;
+}
+
+.bn-ak-menu:not(:focus) .bn-ak-menu-item:not(:focus)[aria-expanded="true"] {
+ background-color: hsl(204 4% 0% / 7.5%);
+ color: currentColor;
+}
+
+.bn-ak-menu:not(:focus)
+.bn-ak-menu-item:not(:focus)[aria-expanded="true"]:where(.dark, .dark *) {
+ background-color: hsl(204 20% 100% / 0.1);
+}
+
+.bn-ak-menu-item .label {
+ flex: 1 1 0%;
+}
+
+/* https://ariakit.org/examples/form-select */
+.bn-ak-button {
+ --border: rgb(0 0 0/13%);
+ --highlight: rgb(255 255 255/20%);
+ --shadow: rgb(0 0 0/10%);
+ display: flex;
+ height: 2.5rem;
+ user-select: none;
+ align-items: center;
+ gap: 0.25rem;
+ white-space: nowrap;
+ border-style: none;
+ background-color: hsl(204 20% 100%);
+ padding-left: 1rem;
+ padding-right: 1rem;
+ font-size: 1rem;
+ line-height: 1.5rem;
+ color: hsl(204 4% 0%);
+ text-decoration-line: none;
+ outline-width: 2px;
+ outline-offset: 2px;
+ outline-color: hsl(204 100% 40%);
+ box-shadow:
+ inset 0 0 0 1px var(--border),
+ inset 0 2px 0 var(--highlight),
+ inset 0 -1px 0 var(--shadow),
+ 0 1px 1px var(--shadow);
+ justify-content: space-between;
+ width: 100%;
+ border-radius: 0.375rem;
+}
+
+.bn-ak-button:where(.dark, .dark *) {
+ --border: rgb(255 255 255/10%);
+ --highlight: rgb(255 255 255/5%);
+ --shadow: rgb(0 0 0/25%);
+ background-color: hsl(204 20% 100% / 0.05);
+ color: hsl(204 20% 100%);
+ box-shadow:
+ inset 0 0 0 1px var(--border),
+ inset 0 -1px 0 1px var(--shadow),
+ inset 0 1px 0 var(--highlight);
+}
+
+.bn-ak-button:not(:active):hover {
+ --border: rgb(0 0 0/33%);
+}
+
+.bn-ak-button:where(.dark, .dark *):not(:active):hover {
+ --border: rgb(255 255 255/25%);
+}
+
+.bn-ak-primary {
+ --border: rgba(0, 0, 0, 0.15);
+ --highlight: rgba(255, 255, 255, 0.25);
+ --shadow: rgba(0, 0, 0, 0.15);
+ background-color: hsl(204 100% 40%);
+ color: hsl(204 20% 100%);
+ justify-content: center;
+}
+
+.bn-ak-primary:hover {
+ --border: rgba(0, 0, 0, 0.35);
+ background-color: hsl(204 100% 35%);
+}
+
+.bn-ak-primary:where(.dark, .dark *) {
+ --border: rgba(255, 255, 255, 0.25);
+ --highlight: rgba(255, 255, 255, 0.1);
+ --shadow: rgba(0, 0, 0, 0.25);
+ background-color: hsl(204 100% 35%);
+}
+
+.bn-ak-primary:hover:where(.dark, .dark *) {
+ --border: rgba(255, 255, 255, 0.45);
+ background-color: hsl(204 100% 40%);
+}
+
+.bn-ak-button[aria-disabled="true"] {
+ opacity: 0.5;
+}
+
+.bn-ak-button[data-focus-visible] {
+ outline-style: solid;
+}
+
+.bn-ak-button:active,
+.bn-ak-button[data-active] {
+ padding-top: 0.125rem;
+ box-shadow:
+ inset 0 0 0 1px var(--border),
+ inset 0 2px 0 var(--border);
+}
+
+@media (min-width: 640px) {
+ .bn-ak-button {
+ gap: 0.5rem;
+ }
+}
+
+.bn-ak-button:active:where(.dark, .dark *),
+.bn-ak-button[data-active]:where(.dark, .dark *) {
+ box-shadow:
+ inset 0 0 0 1px var(--border),
+ inset 0 1px 1px 1px var(--shadow);
+}
+
+.bn-ak-wrapper {
+ display: flex;
+ width: 320px;
+ max-width: 100%;
+ flex-direction: column;
+ gap: 1.5rem;
+ border-radius: 0.5rem;
+ background-color: hsl(204 20% 100%);
+ padding: 1rem;
+ box-shadow:
+ 0 1px 3px 0 rgb(0 0 0 / 0.1),
+ 0 1px 2px -1px rgb(0 0 0 / 0.1);
+}
+
+.bn-ak-label {
+ padding-left: 1rem;
+}
+
+.bn-ak-popover {
+ z-index: 50;
+ display: flex;
+ max-height: min(var(--popover-available-height, 300px), 300px);
+ flex-direction: column;
+ overflow: auto;
+ overscroll-behavior: contain;
+ border-radius: 0.5rem;
+ border-width: 1px;
+ border-style: solid;
+ border-color: hsl(204 20% 88%);
+ background-color: hsl(204 20% 100%);
+ padding: 0.5rem;
+ color: hsl(204 4% 0%);
+ box-shadow:
+ 0 10px 15px -3px rgb(0 0 0 / 0.1),
+ 0 4px 6px -4px rgb(0 0 0 / 0.1);
+}
+
+.bn-ak-popover:where(.dark, .dark *) {
+ border-color: hsl(204 4% 24%);
+ background-color: hsl(204 4% 16%);
+ color: hsl(204 20% 100%);
+ box-shadow:
+ 0 10px 15px -3px rgb(0 0 0 / 0.25),
+ 0 4px 6px -4px rgb(0 0 0 / 0.1);
+}
+
+.bn-ak-select-item {
+ display: flex;
+ cursor: default;
+ scroll-margin: 0.5rem;
+ align-items: center;
+ gap: 0.5rem;
+ border-radius: 0.25rem;
+ padding: 0.5rem;
+ outline: none !important;
+}
+
+.bn-ak-select-item[aria-disabled="true"] {
+ opacity: 0.5;
+}
+
+.bn-ak-select-item[data-active-item] {
+ background-color: hsl(204 100% 40%);
+ color: hsl(204 20% 100%);
+}
+
+.bn-ak-wrapper:where(.dark, .dark *) {
+ background-color: hsl(204 4% 16%);
+ box-shadow:
+ 0 1px 3px 0 rgb(0 0 0 / 0.25),
+ 0 1px 2px -1px rgb(0 0 0 / 0.1);
+}
+
+.bn-ak-field {
+ display: flex;
+ flex-direction: column;
+ gap: 0.5rem;
+}
+
+.bn-ak-input {
+ height: 2.5rem;
+ width: 100%;
+ border-radius: 0.375rem;
+ border-style: none;
+ background-color: hsl(204 20% 94% / 0.4);
+ padding-left: 1rem;
+ padding-right: 1rem;
+ font-size: 1rem;
+ line-height: 1.5rem;
+ color: hsl(204 4% 0%);
+ box-shadow:
+ inset 0 0 0 1px rgba(0 0 0 / 0.1),
+ inset 0 2px 5px 0 rgba(0 0 0 / 0.05);
+}
+
+.bn-ak-input::placeholder {
+ color: hsl(204 4% 0% / 0.6);
+}
+
+.bn-ak-input:hover {
+ background-color: hsl(204 20% 94%);
+}
+
+.bn-ak-popover:focus-visible,
+.bn-ak-popover[data-focus-visible],
+.bn-ak-input:focus-visible,
+.bn-ak-input[data-focus-visible] {
+ outline: 2px solid hsl(204 100% 40%);
+ outline-offset: -1px;
+}
+
+.bn-ak-input:where(.dark, .dark *) {
+ background-color: hsl(204 4% 10%);
+ color: hsl(204 20% 100%);
+ box-shadow:
+ inset 0 0 0 1px rgba(255 255 255 / 0.12),
+ inset 0 -1px 0 0 rgba(255 255 255 / 0.05),
+ inset 0 2px 5px 0 rgba(0 0 0 / 0.15);
+}
+
+.bn-ak-input:where(.dark, .dark *)::placeholder {
+ color: hsl(204 20% 100% / 46%);
+}
+
+.bn-ak-input:hover:where(.dark, .dark *) {
+ background-color: hsl(204 4% 8%);
+}
+
+.bn-ak-error {
+ width: fit-content;
+ border-radius: 0.375rem;
+ border-width: 1px;
+ border-color: hsl(357 56% 80%);
+ background-color: hsl(357 56% 80% / 0.4);
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ padding-left: 1rem;
+ padding-right: 1rem;
+ color: hsl(357 100% 30%);
+}
+
+.bn-ak-error:empty {
+ display: none;
+}
+
+.bn-ak-error:where(.dark, .dark *) {
+ border-color: hsl(357 56% 50% / 0.4);
+ background-color: hsl(357 56% 42% / 0.25);
+ color: hsl(357 100% 90%);
+}
+
+.bn-ak-buttons {
+ display: flex;
+ gap: 1rem;
+ padding-top: 1rem;
+}
+
+/* https://ariakit.org/components/menu */
+.bn-ak-button {
+ --border: rgb(0 0 0/13%);
+ --highlight: rgb(255 255 255/20%);
+ --shadow: rgb(0 0 0/10%);
+ display: flex;
+ height: 2.5rem;
+ user-select: none;
+ align-items: center;
+ justify-content: center;
+ gap: 0.25rem;
+ white-space: nowrap;
+ border-radius: 0.5rem;
+ border-style: none;
+ background-color: hsl(204 20% 100%);
+ padding-left: 1rem;
+ padding-right: 1rem;
+ font-size: 1rem;
+ line-height: 1.5rem;
+ color: hsl(204 4% 0%);
+ text-decoration-line: none;
+ outline-width: 2px;
+ outline-offset: 2px;
+ outline-color: hsl(204 100% 40%);
+ box-shadow:
+ inset 0 0 0 1px var(--border),
+ inset 0 2px 0 var(--highlight),
+ inset 0 -1px 0 var(--shadow),
+ 0 1px 1px var(--shadow);
+ font-weight: 500;
+}
+
+.bn-ak-button:where(.dark, .dark *) {
+ --border: rgb(255 255 255/10%);
+ --highlight: rgb(255 255 255/5%);
+ --shadow: rgb(0 0 0/25%);
+ background-color: hsl(204 20% 100% / 0.05);
+ color: hsl(204 20% 100%);
+ box-shadow:
+ inset 0 0 0 1px var(--border),
+ inset 0 -1px 0 1px var(--shadow),
+ inset 0 1px 0 var(--highlight);
+}
+
+.bn-ak-button:not(:active):hover {
+ --border: rgb(0 0 0/33%);
+}
+
+.bn-ak-button:where(.dark, .dark *):not(:active):hover {
+ --border: rgb(255 255 255/25%);
+}
+
+.bn-ak-button[aria-disabled="true"] {
+ opacity: 0.5;
+}
+
+.bn-ak-button[data-focus-visible] {
+ outline-style: solid;
+}
+
+.bn-ak-button:active,
+.bn-ak-button[data-active] {
+ padding-top: 0.125rem;
+ box-shadow:
+ inset 0 0 0 1px var(--border),
+ inset 0 2px 0 var(--border);
+}
+
+@media (min-width: 640px) {
+ .bn-ak-button {
+ gap: 0.5rem;
+ }
+}
+
+.bn-ak-button:active:where(.dark, .dark *),
+.bn-ak-button[data-active]:where(.dark, .dark *) {
+ box-shadow:
+ inset 0 0 0 1px var(--border),
+ inset 0 1px 1px 1px var(--shadow);
+}
+
+.bn-ak-separator {
+ margin-top: 0.5rem;
+ margin-bottom: 0.5rem;
+ height: 0px;
+ width: 100%;
+ border-top-width: 1px;
+ border-color: hsl(204 20% 88%);
+}
+
+.bn-ak-separator:where(.dark, .dark *) {
+ border-color: hsl(204 4% 28%);
+}
+
+.bn-ak-menu {
+ position: relative;
+ z-index: 50;
+ display: flex;
+ /*max-height: var(--popover-available-height);*/
+ min-width: 180px;
+ flex-direction: column;
+ /*overflow: auto;*/
+ overscroll-behavior: contain;
+ border-radius: 0.5rem;
+ border-width: 1px;
+ border-style: solid;
+ border-color: hsl(204 20% 88%);
+ background-color: hsl(204 20% 100%);
+ padding: 0.5rem;
+ color: hsl(204 4% 0%);
+ box-shadow:
+ 0 10px 15px -3px rgb(0 0 0 / 0.1),
+ 0 4px 6px -4px rgb(0 0 0 / 0.1);
+ outline: none !important;
+}
+
+.bn-ak-menu:where(.dark, .dark *) {
+ border-color: hsl(204 4% 24%);
+ background-color: hsl(204 4% 16%);
+ color: hsl(204 20% 100%);
+ box-shadow:
+ 0 10px 15px -3px rgb(0 0 0 / 0.25),
+ 0 4px 6px -4px rgb(0 0 0 / 0.1);
+}
+
+.bn-ak-menu-item {
+ display: flex;
+ cursor: default;
+ scroll-margin: 0.5rem;
+ align-items: center;
+ gap: 0.5rem;
+ border-radius: 0.25rem;
+ padding: 0.5rem;
+ outline: none !important;
+}
+
+.bn-ak-menu-item[aria-disabled="true"] {
+ opacity: 0.25;
+}
+
+.bn-ak-menu-item[data-active-item] {
+ background-color: hsl(204 100% 40%);
+ color: hsl(204 20% 100%);
+}
+
+.bn-ak-menu-item:active,
+.bn-ak-menu-item[data-active] {
+ background-color: hsl(204 100% 32%);
+ padding-top: 9px;
+ padding-bottom: 7px;
+}
+
+/* https://ariakit.org/examples/select-group */
+.bn-ak-button {
+ --border: rgb(0 0 0/13%);
+ --highlight: rgb(255 255 255/20%);
+ --shadow: rgb(0 0 0/10%);
+ display: flex;
+ height: 2.5rem;
+ user-select: none;
+ align-items: center;
+ gap: 0.25rem;
+ white-space: nowrap;
+ border-radius: 0.5rem;
+ border-style: none;
+ background-color: hsl(204 20% 100%);
+ padding-left: 1rem;
+ padding-right: 1rem;
+ font-size: 1rem;
+ line-height: 1.5rem;
+ color: hsl(204 4% 0%);
+ text-decoration-line: none;
+ outline-width: 2px;
+ outline-offset: 2px;
+ outline-color: hsl(204 100% 40%);
+ box-shadow:
+ inset 0 0 0 1px var(--border),
+ inset 0 2px 0 var(--highlight),
+ inset 0 -1px 0 var(--shadow),
+ 0 1px 1px var(--shadow);
+ width: 200px;
+ justify-content: space-between;
+}
+
+.bn-ak-button:where(.dark, .dark *) {
+ --border: rgb(255 255 255/10%);
+ --highlight: rgb(255 255 255/5%);
+ --shadow: rgb(0 0 0/25%);
+ background-color: hsl(204 20% 100% / 0.05);
+ color: hsl(204 20% 100%);
+ box-shadow:
+ inset 0 0 0 1px var(--border),
+ inset 0 -1px 0 1px var(--shadow),
+ inset 0 1px 0 var(--highlight);
+}
+
+.bn-ak-button:not(:active):hover {
+ --border: rgb(0 0 0/33%);
+}
+
+.bn-ak-button:where(.dark, .dark *):not(:active):hover {
+ --border: rgb(255 255 255/25%);
+}
+
+.bn-ak-button[aria-disabled="true"] {
+ opacity: 0.5;
+}
+
+.bn-ak-button[data-focus-visible] {
+ outline-style: solid;
+}
+
+.bn-ak-button:active,
+.bn-ak-button[data-active] {
+ padding-top: 0.125rem;
+ box-shadow:
+ inset 0 0 0 1px var(--border),
+ inset 0 2px 0 var(--border);
+}
+
+@media (min-width: 640px) {
+ .bn-ak-button {
+ gap: 0.5rem;
+ }
+}
+
+.bn-ak-button:active:where(.dark, .dark *),
+.bn-ak-button[data-active]:where(.dark, .dark *) {
+ box-shadow:
+ inset 0 0 0 1px var(--border),
+ inset 0 1px 1px 1px var(--shadow);
+}
+
+.bn-ak-wrapper {
+ display: flex;
+ flex-direction: column;
+ gap: 0.5rem;
+ padding: 1rem;
+}
+
+.bn-ak-popover {
+ z-index: 50;
+ display: flex;
+ max-height: min(var(--popover-available-height, 300px), 300px);
+ flex-direction: column;
+ overflow: auto;
+ overscroll-behavior: contain;
+ border-radius: 0.5rem;
+ border-width: 1px;
+ border-style: solid;
+ border-color: hsl(204 20% 88%);
+ background-color: hsl(204 20% 100%);
+ padding: 0.5rem;
+ color: hsl(204 4% 0%);
+ box-shadow:
+ 0 10px 15px -3px rgb(0 0 0 / 0.1),
+ 0 4px 6px -4px rgb(0 0 0 / 0.1);
+}
+
+.bn-ak-popover:focus-visible,
+.bn-ak-popover[data-focus-visible] {
+ outline: 2px solid hsl(204 100% 40%);
+ outline-offset: -1px;
+}
+
+.bn-ak-popover:where(.dark, .dark *) {
+ border-color: hsl(204 4% 24%);
+ background-color: hsl(204 4% 16%);
+ color: hsl(204 20% 100%);
+ box-shadow:
+ 0 10px 15px -3px rgb(0 0 0 / 0.25),
+ 0 4px 6px -4px rgb(0 0 0 / 0.1);
+}
+
+.bn-ak-select-item {
+ display: flex;
+ cursor: default;
+ scroll-margin: 0.5rem;
+ align-items: center;
+ gap: 0.5rem;
+ border-radius: 0.25rem;
+ padding: 0.5rem;
+ outline: none !important;
+}
+
+.bn-ak-select-item[aria-disabled="true"] {
+ opacity: 0.5;
+}
+
+.bn-ak-select-item[data-active-item] {
+ background-color: hsl(204 100% 40%);
+ color: hsl(204 20% 100%);
+}
+
+.bn-ak-separator {
+ margin-top: 0.5rem;
+ margin-bottom: 0.5rem;
+ height: 0px;
+ width: 100%;
+ border-top-width: 1px;
+ border-color: hsl(204 20% 88%);
+}
+
+.bn-ak-separator:where(.dark, .dark *) {
+ border-color: hsl(204 4% 28%);
+}
+
+.bn-ak-group-label {
+ cursor: default;
+ padding: 0.5rem;
+ font-size: 0.875rem;
+ line-height: 1.25rem;
+ font-weight: 500;
+ opacity: 0.6;
+}
+
+.bn-ak-group-label + * {
+ scroll-margin-top: 2.5rem;
+}
+
+/* https://ariakit.org/components/tab */
+.bn-ak-wrapper {
+ display: flex;
+ flex-direction: column;
+ gap: 0.5rem;
+ border-radius: 0.5rem;
+ background-color: hsl(204 20% 100%);
+ padding: 0.5rem;
+ box-shadow:
+ 0 1px 3px 0 rgb(0 0 0 / 0.1),
+ 0 1px 2px -1px rgb(0 0 0 / 0.1);
+}
+
+.bn-ak-wrapper:where(.dark, .dark *) {
+ background-color: hsl(204 4% 16%);
+ box-shadow:
+ 0 1px 3px 0 rgb(0 0 0 / 0.25),
+ 0 1px 2px -1px rgb(0 0 0 / 0.1);
+}
+
+.bn-ak-tab-list {
+ display: flex;
+ gap: 0.5rem;
+}
+
+.bn-ak-tab {
+ display: flex;
+ height: 2.5rem;
+ user-select: none;
+ align-items: center;
+ justify-content: center;
+ gap: 0.5rem;
+ white-space: nowrap;
+ border-radius: 0.25rem;
+ border-style: none;
+ padding-left: 1rem;
+ padding-right: 1rem;
+ font-size: 1rem;
+ line-height: 1.5rem;
+ text-decoration-line: none;
+ outline-width: 2px;
+ outline-offset: 2px;
+ outline-color: hsl(204 100% 40%);
+}
+
+.bn-ak-tab:hover {
+ background-color: hsl(204 4% 0% / 7.5%);
+}
+
+.bn-ak-tab[aria-disabled="true"] {
+ opacity: 0.5;
+}
+
+.bn-ak-tab[aria-selected="true"] {
+ background-color: hsl(204 100% 40%);
+ color: hsl(204 20% 100%);
+}
+
+.bn-ak-tab:hover[aria-selected="true"] {
+ background-color: hsl(204 100% 32%);
+}
+
+.bn-ak-tab[data-focus-visible] {
+ outline-style: solid;
+}
+
+.bn-ak-tab:active,
+.bn-ak-tab[data-active] {
+ padding-top: 0.125rem;
+}
+
+.bn-ak-tab:hover:where(.dark, .dark *) {
+ background-color: hsl(204 20% 100% / 0.1);
+}
+
+.bn-ak-tab[aria-selected="true"]:where(.dark, .dark *) {
+ background-color: hsl(204 100% 40%);
+ color: hsl(204 20% 100%);
+}
+
+.bn-ak-tab:hover[aria-selected="true"]:where(.dark, .dark *) {
+ background-color: hsl(204 100% 32%);
+}
+
+.bn-ak-panels {
+ padding: 0.5rem;
+}
+
+/* https://ariakit.org/components/toolbar */
+.bn-ak-button {
+ --border: rgb(0 0 0/13%);
+ --highlight: rgb(255 255 255/20%);
+ --shadow: rgb(0 0 0/10%);
+ display: flex;
+ height: 2.5rem;
+ user-select: none;
+ align-items: center;
+ justify-content: center;
+ white-space: nowrap;
+ border-style: none;
+ background-color: hsl(204 20% 100%);
+ padding-left: 1rem;
+ padding-right: 1rem;
+ font-size: 1rem;
+ line-height: 1.5rem;
+ color: hsl(204 4% 0%);
+ text-decoration-line: none;
+ outline-width: 2px;
+ outline-offset: 2px;
+ outline-color: hsl(204 100% 40%);
+ box-shadow:
+ inset 0 0 0 1px var(--border),
+ inset 0 2px 0 var(--highlight),
+ inset 0 -1px 0 var(--shadow),
+ 0 1px 1px var(--shadow);
+ scroll-margin-left: 0.25rem;
+ scroll-margin-right: 0.25rem;
+ gap: 0.5rem;
+ border-radius: 0.25rem;
+}
+
+.bn-ak-button:where(.dark, .dark *) {
+ --border: rgb(255 255 255/10%);
+ --highlight: rgb(255 255 255/5%);
+ --shadow: rgb(0 0 0/25%);
+ background-color: hsl(204 20% 100% / 0.05);
+ color: hsl(204 20% 100%);
+ box-shadow:
+ inset 0 0 0 1px var(--border),
+ inset 0 -1px 0 1px var(--shadow),
+ inset 0 1px 0 var(--highlight);
+}
+
+.bn-ak-button:not(:active):hover {
+ --border: rgb(0 0 0/33%);
+}
+
+.bn-ak-button:where(.dark, .dark *):not(:active):hover {
+ --border: rgb(255 255 255/25%);
+}
+
+.bn-ak-button[aria-disabled="true"] {
+ opacity: 0.5;
+}
+
+.bn-ak-button[data-focus-visible] {
+ outline-style: solid;
+}
+
+.bn-ak-button:active,
+.bn-ak-button[data-active] {
+ padding-top: 0.125rem;
+ box-shadow:
+ inset 0 0 0 1px var(--border),
+ inset 0 2px 0 var(--border);
+}
+
+@media (min-width: 640px) {
+ .bn-ak-button {
+ gap: 0.5rem;
+ }
+}
+
+.bn-ak-button:active:where(.dark, .dark *),
+.bn-ak-button[data-active]:where(.dark, .dark *) {
+ box-shadow:
+ inset 0 0 0 1px var(--border),
+ inset 0 1px 1px 1px var(--shadow);
+}
+
+.bn-ak-secondary {
+ background-color: transparent;
+ color: currentColor;
+ box-shadow: none;
+}
+
+.bn-ak-secondary:hover {
+ background-color: hsl(204 4% 0% / 0.05);
+}
+
+.bn-ak-secondary:where(.dark, .dark *) {
+ background-color: transparent;
+ box-shadow: none;
+}
+
+.bn-ak-secondary:hover:where(.dark, .dark *) {
+ background-color: hsl(204 20% 100% / 0.05);
+}
+
+.bn-ak-secondary:active:where(.dark, .dark *),
+.bn-ak-secondary[data-active]:where(.dark, .dark *) {
+ box-shadow: none;
+}
+
+.bn-ak-toolbar {
+ display: flex;
+ max-width: 100%;
+ align-items: center;
+ gap: 0.25rem;
+ overflow-x: auto;
+ border-radius: 0.5rem;
+ background-color: hsl(204 20% 100%);
+ padding: 0.25rem;
+ box-shadow:
+ 0 1px 3px 0 rgb(0 0 0 / 0.1),
+ 0 1px 2px -1px rgb(0 0 0 / 0.1);
+}
+
+.bn-ak-toolbar:where(.dark, .dark *) {
+ background-color: hsl(204 4% 16%);
+ box-shadow:
+ 0 1px 3px 0 rgb(0 0 0 / 0.25),
+ 0 1px 2px -1px rgb(0 0 0 / 0.1);
+}
+
+.bn-ak-separator {
+ height: 2rem;
+ border-right-width: 1px;
+ border-color: hsl(204 20% 88%);
+}
+
+.bn-ak-separator:where(.dark, .dark *) {
+ border-color: hsl(204 4% 28%);
+}
+
+/* https://ariakit.org/components/tooltip */
+.bn-ak-tooltip {
+ z-index: 50;
+ cursor: default;
+ border-radius: 0.375rem;
+ border-width: 1px;
+ border-color: hsl(204 20% 82%);
+ background-color: hsl(204 20% 94%);
+ padding-top: 0.25rem;
+ padding-bottom: 0.25rem;
+ padding-left: 0.5rem;
+ padding-right: 0.5rem;
+ font-size: 0.875rem;
+ line-height: 1.25rem;
+ color: black;
+ box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
+}
+
+.bn-ak-tooltip:where(.dark, .dark *) {
+ border-color: hsl(204 4% 24%);
+ background-color: hsl(204 4% 16%);
+ color: white;
+ box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.15);
+}
+
+.bn-ak-link {
+ font-weight: 500;
+ color: hsl(204 100% 35%);
+ text-decoration-line: underline;
+ text-decoration-thickness: 1px;
+ text-underline-offset: 0.25em;
+}
+
+.bn-ak-link:hover {
+ text-decoration-thickness: 3px;
+}
+
+.bn-ak-link:where(.dark, .dark *) {
+ color: hsl(204 100% 64%);
+}
\ No newline at end of file
diff --git a/packages/ariakit/src/index.tsx b/packages/ariakit/src/index.tsx
new file mode 100644
index 0000000000..e19cb08d4e
--- /dev/null
+++ b/packages/ariakit/src/index.tsx
@@ -0,0 +1,103 @@
+import { BlockSchema, InlineContentSchema, StyleSchema } from "@blocknote/core";
+import {
+ BlockNoteViewRaw,
+ Components,
+ ComponentsContext,
+} from "@blocknote/react";
+import { ComponentProps } from "react";
+
+import { Form } from "./input/Form";
+import { TextInput } from "./input/TextInput";
+import {
+ Menu,
+ MenuDivider,
+ MenuDropdown,
+ MenuItem,
+ MenuLabel,
+ MenuTrigger,
+} from "./menu/Menu";
+import { Panel } from "./panel/Panel";
+import { PanelButton } from "./panel/PanelButton";
+import { PanelFileInput } from "./panel/PanelFileInput";
+import { PanelTab } from "./panel/PanelTab";
+import { PanelTextInput } from "./panel/PanelTextInput";
+import { Popover, PopoverContent, PopoverTrigger } from "./popover/Popover";
+import { SideMenu } from "./sideMenu/SideMenu";
+import { SideMenuButton } from "./sideMenu/SideMenuButton";
+import { SuggestionMenu } from "./suggestionMenu/SuggestionMenu";
+import { SuggestionMenuItem } from "./suggestionMenu/SuggestionMenuItem";
+import { SuggestionMenuEmptyItem } from "./suggestionMenu/SuggestionMenuEmptyItem";
+import { SuggestionMenuLabel } from "./suggestionMenu/SuggestionMenuLabel";
+import { SuggestionMenuLoader } from "./suggestionMenu/SuggestionMenuLoader";
+import { TableHandle } from "./tableHandle/TableHandle";
+import { Toolbar } from "./toolbar/Toolbar";
+import { ToolbarButton } from "./toolbar/ToolbarButton";
+import { ToolbarSelect } from "./toolbar/ToolbarSelect";
+
+import "./style.css";
+
+export const components: Components = {
+ FormattingToolbar: {
+ Root: Toolbar,
+ Button: ToolbarButton,
+ Select: ToolbarSelect,
+ },
+ ImagePanel: {
+ Root: Panel,
+ Button: PanelButton,
+ FileInput: PanelFileInput,
+ TabPanel: PanelTab,
+ TextInput: PanelTextInput,
+ },
+ LinkToolbar: {
+ Root: Toolbar,
+ Button: ToolbarButton,
+ },
+ SideMenu: {
+ Root: SideMenu,
+ Button: SideMenuButton,
+ },
+ SuggestionMenu: {
+ Root: SuggestionMenu,
+ Item: SuggestionMenuItem,
+ EmptyItem: SuggestionMenuEmptyItem,
+ Label: SuggestionMenuLabel,
+ Loader: SuggestionMenuLoader,
+ },
+ TableHandle: {
+ Root: TableHandle,
+ },
+ Generic: {
+ Form: {
+ Root: Form,
+ TextInput: TextInput,
+ },
+ Menu: {
+ Root: Menu,
+ Trigger: MenuTrigger,
+ Dropdown: MenuDropdown,
+ Divider: MenuDivider,
+ Label: MenuLabel,
+ Item: MenuItem,
+ },
+ Popover: {
+ Root: Popover,
+ Trigger: PopoverTrigger,
+ Content: PopoverContent,
+ },
+ },
+};
+
+export const BlockNoteView = <
+ BSchema extends BlockSchema,
+ ISchema extends InlineContentSchema,
+ SSchema extends StyleSchema
+>(
+ props: ComponentProps>
+) => {
+ return (
+
+
+
+ );
+};
diff --git a/packages/ariakit/src/input/Form.tsx b/packages/ariakit/src/input/Form.tsx
new file mode 100644
index 0000000000..e12de4f09f
--- /dev/null
+++ b/packages/ariakit/src/input/Form.tsx
@@ -0,0 +1,9 @@
+import * as Ariakit from "@ariakit/react";
+
+import { ComponentProps } from "@blocknote/react";
+
+export const Form = (props: ComponentProps["Generic"]["Form"]["Root"]) => {
+ const { children } = props;
+
+ return {children} ;
+};
diff --git a/packages/ariakit/src/input/TextInput.tsx b/packages/ariakit/src/input/TextInput.tsx
new file mode 100644
index 0000000000..4bcb781049
--- /dev/null
+++ b/packages/ariakit/src/input/TextInput.tsx
@@ -0,0 +1,45 @@
+import * as Ariakit from "@ariakit/react";
+
+import { mergeCSSClasses } from "@blocknote/core";
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const TextInput = forwardRef<
+ HTMLInputElement,
+ ComponentProps["Generic"]["Form"]["TextInput"]
+>((props, ref) => {
+ const {
+ className,
+ name,
+ label,
+ icon,
+ value,
+ autoFocus,
+ placeholder,
+ onKeyDown,
+ onChange,
+ onSubmit,
+ } = props;
+
+ return (
+ <>
+ {props.label && (
+ {label}
+ )}
+
+ >
+ );
+});
diff --git a/packages/ariakit/src/menu/Menu.tsx b/packages/ariakit/src/menu/Menu.tsx
new file mode 100644
index 0000000000..cf2f9dcb83
--- /dev/null
+++ b/packages/ariakit/src/menu/Menu.tsx
@@ -0,0 +1,111 @@
+import * as Ariakit from "@ariakit/react";
+
+import { mergeCSSClasses } from "@blocknote/core";
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const Menu = (props: ComponentProps["Generic"]["Menu"]["Root"]) => {
+ const {
+ children,
+ onOpenChange,
+ position,
+ // sub
+ } = props;
+
+ return (
+
+ {children}
+
+ );
+};
+
+export const MenuDropdown = forwardRef<
+ HTMLDivElement,
+ ComponentProps["Generic"]["Menu"]["Dropdown"]
+>((props, ref) => {
+ const { className, children } = props;
+
+ return (
+
+ {children}
+
+ );
+});
+
+export const MenuItem = forwardRef<
+ HTMLDivElement,
+ ComponentProps["Generic"]["Menu"]["Item"]
+>((props, ref) => {
+ const { className, children, icon, checked, subTrigger, onClick } = props;
+
+ if (subTrigger) {
+ return (
+ }
+ className={mergeCSSClasses("bn-ak-menu-item", className || "")}
+ ref={ref}
+ onClick={onClick}>
+ {icon}
+ {children}
+
+ {checked !== undefined && }
+
+ );
+ }
+ return (
+
+ {icon}
+ {children}
+ {checked !== undefined && }
+
+ );
+});
+
+export const MenuLabel = forwardRef<
+ HTMLDivElement,
+ ComponentProps["Generic"]["Menu"]["Label"]
+>((props, ref) => {
+ const { className, children } = props;
+
+ return (
+
+ {children}
+
+ );
+});
+
+export const MenuTrigger = (
+ props: ComponentProps["Generic"]["Menu"]["Trigger"]
+) => {
+ const { children, sub } = props;
+
+ if (sub) {
+ return children;
+ }
+
+ return ;
+};
+
+export const MenuDivider = forwardRef<
+ HTMLHRElement,
+ ComponentProps["Generic"]["Menu"]["Divider"]
+>((props, ref) => {
+ const { className } = props;
+
+ return (
+
+ );
+});
diff --git a/packages/ariakit/src/panel/Panel.tsx b/packages/ariakit/src/panel/Panel.tsx
new file mode 100644
index 0000000000..553c7b6678
--- /dev/null
+++ b/packages/ariakit/src/panel/Panel.tsx
@@ -0,0 +1,53 @@
+import * as Ariakit from "@ariakit/react";
+
+import { mergeCSSClasses } from "@blocknote/core";
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const Panel = forwardRef<
+ HTMLDivElement,
+ ComponentProps["ImagePanel"]["Root"]
+>((props, ref) => {
+ const {
+ className,
+ tabs,
+ defaultOpenTab,
+ openTab,
+ setOpenTab,
+ // loading,
+ // setLoading,
+ } = props;
+
+ return (
+
+
{
+ if (activeId) {
+ setOpenTab(activeId);
+ }
+ }}>
+ {/*{loading && }*/}
+
+
+ {tabs.map((tab) => (
+
+ {tab.name}
+
+ ))}
+
+
+
+ {tabs.map((tab) => (
+
+ {tab.tabPanel}
+
+ ))}
+
+
+
+ );
+});
diff --git a/packages/ariakit/src/panel/PanelButton.tsx b/packages/ariakit/src/panel/PanelButton.tsx
new file mode 100644
index 0000000000..04c300c18d
--- /dev/null
+++ b/packages/ariakit/src/panel/PanelButton.tsx
@@ -0,0 +1,21 @@
+import * as Ariakit from "@ariakit/react";
+
+import { mergeCSSClasses } from "@blocknote/core";
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const PanelButton = forwardRef<
+ HTMLButtonElement,
+ ComponentProps["ImagePanel"]["Button"]
+>((props, ref) => {
+ const { className, children, onClick } = props;
+
+ return (
+
+ {children}
+
+ );
+});
diff --git a/packages/ariakit/src/panel/PanelFileInput.tsx b/packages/ariakit/src/panel/PanelFileInput.tsx
new file mode 100644
index 0000000000..36df131840
--- /dev/null
+++ b/packages/ariakit/src/panel/PanelFileInput.tsx
@@ -0,0 +1,25 @@
+import * as Ariakit from "@ariakit/react";
+
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const PanelFileInput = forwardRef<
+ HTMLInputElement,
+ ComponentProps["ImagePanel"]["FileInput"]
+>((props, ref) => {
+ const { className, value, placeholder, onChange } = props;
+
+ return (
+
+ onChange?.(e.target.files![0])}
+ placeholder={placeholder}
+ />
+
+ );
+});
diff --git a/packages/ariakit/src/panel/PanelTab.tsx b/packages/ariakit/src/panel/PanelTab.tsx
new file mode 100644
index 0000000000..58ed2aba46
--- /dev/null
+++ b/packages/ariakit/src/panel/PanelTab.tsx
@@ -0,0 +1,15 @@
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const PanelTab = forwardRef<
+ HTMLDivElement,
+ ComponentProps["ImagePanel"]["TabPanel"]
+>((props, ref) => {
+ const { className, children } = props;
+
+ return (
+
+ {children}
+
+ );
+});
diff --git a/packages/ariakit/src/panel/PanelTextInput.tsx b/packages/ariakit/src/panel/PanelTextInput.tsx
new file mode 100644
index 0000000000..3e7f9c2ac4
--- /dev/null
+++ b/packages/ariakit/src/panel/PanelTextInput.tsx
@@ -0,0 +1,27 @@
+import * as Ariakit from "@ariakit/react";
+
+import { mergeCSSClasses } from "@blocknote/core";
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const PanelTextInput = forwardRef<
+ HTMLInputElement,
+ ComponentProps["ImagePanel"]["TextInput"]
+>((props, ref) => {
+ const { className, value, placeholder, onKeyDown, onChange } = props;
+
+ return (
+
+
+
+ );
+});
diff --git a/packages/ariakit/src/popover/Popover.tsx b/packages/ariakit/src/popover/Popover.tsx
new file mode 100644
index 0000000000..71adb6f07f
--- /dev/null
+++ b/packages/ariakit/src/popover/Popover.tsx
@@ -0,0 +1,41 @@
+import * as Ariakit from "@ariakit/react";
+
+import { mergeCSSClasses } from "@blocknote/core";
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const PopoverTrigger = forwardRef<
+ HTMLButtonElement,
+ ComponentProps["Generic"]["Popover"]["Trigger"]
+>((props, ref) => {
+ const { children } = props;
+
+ return ;
+});
+
+export const PopoverContent = forwardRef<
+ HTMLDivElement,
+ ComponentProps["Generic"]["Popover"]["Content"]
+>((props, ref) => {
+ const { className, children } = props;
+
+ return (
+
+ {children}
+
+ );
+});
+
+export const Popover = (
+ props: ComponentProps["Generic"]["Popover"]["Root"]
+) => {
+ const { children, opened, position } = props;
+
+ return (
+
+ {children}
+
+ );
+};
diff --git a/packages/ariakit/src/sideMenu/SideMenu.tsx b/packages/ariakit/src/sideMenu/SideMenu.tsx
new file mode 100644
index 0000000000..742112d71c
--- /dev/null
+++ b/packages/ariakit/src/sideMenu/SideMenu.tsx
@@ -0,0 +1,17 @@
+import * as Ariakit from "@ariakit/react";
+
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const SideMenu = forwardRef<
+ HTMLDivElement,
+ ComponentProps["SideMenu"]["Root"]
+>((props, ref) => {
+ const { className, children } = props;
+
+ return (
+
+ {children}
+
+ );
+});
diff --git a/packages/ariakit/src/sideMenu/SideMenuButton.tsx b/packages/ariakit/src/sideMenu/SideMenuButton.tsx
new file mode 100644
index 0000000000..60ed1b7675
--- /dev/null
+++ b/packages/ariakit/src/sideMenu/SideMenuButton.tsx
@@ -0,0 +1,25 @@
+import * as Ariakit from "@ariakit/react";
+
+import { mergeCSSClasses } from "@blocknote/core";
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const SideMenuButton = forwardRef<
+ HTMLButtonElement,
+ ComponentProps["SideMenu"]["Button"]
+>((props, ref) => {
+ const { className, children, icon, onClick } = props;
+
+ return (
+
+ {icon}
+ {children}
+
+ );
+});
diff --git a/packages/ariakit/src/style.css b/packages/ariakit/src/style.css
new file mode 100644
index 0000000000..78b42d104c
--- /dev/null
+++ b/packages/ariakit/src/style.css
@@ -0,0 +1,135 @@
+@import url("@blocknote/react/style.css");
+
+/* This file contains BlockNote-specific fixes for the styles in
+ ariakitStyles.css. */
+
+@import "./ariakitStyles.css";
+
+.bn-ak-input-wrapper {
+ align-items: center;
+ display: flex;
+ gap: 0.5rem;
+}
+
+.bn-toolbar .bn-ak-button {
+ width: unset;
+}
+
+.bn-toolbar .bn-ak-button[data-selected] {
+ padding-top: 0.125rem;
+ box-shadow: inset 0 0 0 1px var(--border),
+ inset 0 2px 0 var(--border);
+}
+
+.bn-toolbar .bn-ak-button[data-selected]:where(.dark, .dark *) {
+ box-shadow: inset 0 0 0 1px var(--border),
+ inset 0 1px 1px 1px var(--shadow);
+}
+
+.bn-toolbar .bn-ak-popover {
+ gap: 0.5rem;
+}
+
+.bn-tab-panel {
+ align-items: center;
+ display: flex;
+ flex-direction: column;
+ gap: 0.5rem;
+}
+
+.bn-file-input {
+ max-width: 100%;
+}
+
+.bn-ak-button {
+ outline-style: none;
+}
+
+.bn-ak-menu-item[data-hovered] {
+ background-color: hsl(204 100% 40%);
+ color: hsl(204 20% 100%);
+}
+
+.bn-ak-menu-item {
+ display: flex;
+}
+
+.bn-dropdown {
+ overflow: visible;
+}
+
+.bn-suggestion-menu, .bn-color-picker-dropdown {
+ overflow: scroll;
+}
+
+.bn-ak-suggestion-menu-item-body {
+ flex: 1;
+}
+
+.bn-ak-suggestion-menu-item-subtitle {
+ font-size: 0.7rem;
+}
+
+.bn-ak-suggestion-menu-item-section[data-position="left"] {
+ padding: 8px;
+}
+
+.bn-ak-suggestion-menu-item-section[data-position="right"] {
+ --border: rgb(0 0 0/13%);
+ --highlight: rgb(255 255 255/20%);
+ --shadow: rgb(0 0 0/10%);
+ box-shadow: inset 0 0 0 1px var(--border),
+ inset 0 2px 0 var(--highlight),
+ inset 0 -1px 0 var(--shadow),
+ 0 1px 1px var(--shadow);
+ font-size: 0.7rem;
+ border-radius: 4px;
+ padding-inline: 4px;
+}
+
+.bn-side-menu {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+}
+
+.bn-side-menu .bn-ak-button {
+ height: fit-content;
+ padding: 0;
+ width: fit-content;
+}
+
+.bn-panel-popover {
+ background-color: transparent;
+ border: none;
+ box-shadow: none;
+}
+
+.bn-table-handle {
+ height: fit-content;
+ padding: 0;
+ width: fit-content;
+}
+
+.bn-side-menu, .bn-table-handle {
+ color: gray;
+}
+
+.bn-ak-button:where(.dark, .dark *) {
+ color: hsl(204 20% 100%);
+}
+
+.bn-ak-tab, .bn-file-input {
+ background-color: transparent;
+ color: black;
+}
+
+.bn-ak-tab:where(.dark, .dark *), .bn-file-input:where(.dark, .dark *) {
+ color: white;
+}
+
+.bn-ak-tooltip {
+ align-items: center;
+ display: flex;
+ flex-direction: column;
+}
\ No newline at end of file
diff --git a/packages/ariakit/src/suggestionMenu/SuggestionMenu.tsx b/packages/ariakit/src/suggestionMenu/SuggestionMenu.tsx
new file mode 100644
index 0000000000..4229250989
--- /dev/null
+++ b/packages/ariakit/src/suggestionMenu/SuggestionMenu.tsx
@@ -0,0 +1,20 @@
+import * as Ariakit from "@ariakit/react";
+
+import { mergeCSSClasses } from "@blocknote/core";
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const SuggestionMenu = forwardRef<
+ HTMLDivElement,
+ ComponentProps["SuggestionMenu"]["Root"]
+>((props, ref) => {
+ const { className, children } = props;
+
+ return (
+
+ {children}
+
+ );
+});
diff --git a/packages/ariakit/src/suggestionMenu/SuggestionMenuEmptyItem.tsx b/packages/ariakit/src/suggestionMenu/SuggestionMenuEmptyItem.tsx
new file mode 100644
index 0000000000..9729f0685b
--- /dev/null
+++ b/packages/ariakit/src/suggestionMenu/SuggestionMenuEmptyItem.tsx
@@ -0,0 +1,18 @@
+import { mergeCSSClasses } from "@blocknote/core";
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const SuggestionMenuEmptyItem = forwardRef<
+ HTMLDivElement,
+ ComponentProps["SuggestionMenu"]["EmptyItem"]
+>((props, ref) => {
+ const { className, children } = props;
+
+ return (
+
+ );
+});
diff --git a/packages/ariakit/src/suggestionMenu/SuggestionMenuItem.tsx b/packages/ariakit/src/suggestionMenu/SuggestionMenuItem.tsx
new file mode 100644
index 0000000000..a6cdee6b26
--- /dev/null
+++ b/packages/ariakit/src/suggestionMenu/SuggestionMenuItem.tsx
@@ -0,0 +1,61 @@
+import { mergeCSSClasses } from "@blocknote/core";
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef, useCallback } from "react";
+
+export const SuggestionMenuItem = forwardRef<
+ HTMLDivElement,
+ ComponentProps["SuggestionMenu"]["Item"]
+>((props, ref) => {
+ const {
+ className,
+ title,
+ subtext,
+ // group,
+ icon,
+ badge,
+ // aliases,
+ // onItemClick,
+ isSelected,
+ setSelected,
+ onClick,
+ } = props;
+
+ const handleMouseLeave = useCallback(() => {
+ setSelected?.(false);
+ }, [setSelected]);
+
+ const handleMouseEnter = useCallback(() => {
+ setSelected?.(true);
+ }, [setSelected]);
+
+ return (
+
+ {icon && (
+
+ {icon}
+
+ )}
+
+ {badge && (
+
+ )}
+
+ );
+});
diff --git a/packages/ariakit/src/suggestionMenu/SuggestionMenuLabel.tsx b/packages/ariakit/src/suggestionMenu/SuggestionMenuLabel.tsx
new file mode 100644
index 0000000000..63e77d2cab
--- /dev/null
+++ b/packages/ariakit/src/suggestionMenu/SuggestionMenuLabel.tsx
@@ -0,0 +1,18 @@
+import { mergeCSSClasses } from "@blocknote/core";
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const SuggestionMenuLabel = forwardRef<
+ HTMLDivElement,
+ ComponentProps["SuggestionMenu"]["Label"]
+>((props, ref) => {
+ const { className, children } = props;
+
+ return (
+
+ {children}
+
+ );
+});
diff --git a/packages/ariakit/src/suggestionMenu/SuggestionMenuLoader.tsx b/packages/ariakit/src/suggestionMenu/SuggestionMenuLoader.tsx
new file mode 100644
index 0000000000..044fbf6c45
--- /dev/null
+++ b/packages/ariakit/src/suggestionMenu/SuggestionMenuLoader.tsx
@@ -0,0 +1,15 @@
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const SuggestionMenuLoader = forwardRef<
+ HTMLDivElement,
+ ComponentProps["SuggestionMenu"]["Loader"]
+>((props, ref) => {
+ const { className, children } = props;
+
+ return (
+
+ {children}
+
+ );
+});
diff --git a/packages/ariakit/src/tableHandle/TableHandle.tsx b/packages/ariakit/src/tableHandle/TableHandle.tsx
new file mode 100644
index 0000000000..4c798d6637
--- /dev/null
+++ b/packages/ariakit/src/tableHandle/TableHandle.tsx
@@ -0,0 +1,36 @@
+import * as Ariakit from "@ariakit/react";
+
+import { mergeCSSClasses } from "@blocknote/core";
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const TableHandle = forwardRef<
+ HTMLButtonElement,
+ ComponentProps["TableHandle"]["Root"]
+>((props, ref) => {
+ const {
+ className,
+ children,
+ draggable,
+ onDragStart,
+ onDragEnd,
+ style,
+ ...rest
+ } = props;
+
+ return (
+
+ {children}
+
+ );
+});
diff --git a/packages/ariakit/src/toolbar/Toolbar.tsx b/packages/ariakit/src/toolbar/Toolbar.tsx
new file mode 100644
index 0000000000..c47874b0c9
--- /dev/null
+++ b/packages/ariakit/src/toolbar/Toolbar.tsx
@@ -0,0 +1,24 @@
+import * as Ariakit from "@ariakit/react";
+
+import { mergeCSSClasses } from "@blocknote/core";
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+type ToolbarProps = ComponentProps["FormattingToolbar"]["Root"] &
+ ComponentProps["LinkToolbar"]["Root"];
+
+export const Toolbar = forwardRef(
+ (props, ref) => {
+ const { className, children, onMouseEnter, onMouseLeave } = props;
+
+ return (
+
+ {children}
+
+ );
+ }
+);
diff --git a/packages/ariakit/src/toolbar/ToolbarButton.tsx b/packages/ariakit/src/toolbar/ToolbarButton.tsx
new file mode 100644
index 0000000000..5ba4f5baef
--- /dev/null
+++ b/packages/ariakit/src/toolbar/ToolbarButton.tsx
@@ -0,0 +1,66 @@
+import * as Ariakit from "@ariakit/react";
+
+import { isSafari, mergeCSSClasses } from "@blocknote/core";
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+type ToolbarButtonProps = ComponentProps["FormattingToolbar"]["Button"] &
+ ComponentProps["LinkToolbar"]["Button"];
+
+/**
+ * Helper for basic buttons that show in the formatting toolbar.
+ */
+export const ToolbarButton = forwardRef(
+ (props, ref) => {
+ const {
+ className,
+ children,
+ mainTooltip,
+ secondaryTooltip,
+ icon,
+ isSelected,
+ isDisabled,
+ onClick,
+ ...rest
+ } = props;
+
+ return (
+
+ {
+ if (isSafari()) {
+ (e.currentTarget as HTMLButtonElement).focus();
+ }
+ }}
+ onClick={onClick}
+ data-selected={isSelected ? "true" : undefined}
+ data-test={
+ props.mainTooltip.slice(0, 1).toLowerCase() +
+ props.mainTooltip.replace(/\s+/g, "").slice(1)
+ }
+ // size={"xs"}
+ disabled={isDisabled || false}
+ ref={ref}
+ {...rest}>
+ {icon}
+ {children}
+
+ }
+ />
+
+ {mainTooltip}
+ {secondaryTooltip}
+
+
+ );
+ }
+);
diff --git a/packages/ariakit/src/toolbar/ToolbarSelect.tsx b/packages/ariakit/src/toolbar/ToolbarSelect.tsx
new file mode 100644
index 0000000000..930a281380
--- /dev/null
+++ b/packages/ariakit/src/toolbar/ToolbarSelect.tsx
@@ -0,0 +1,45 @@
+import * as Ariakit from "@ariakit/react";
+
+import { ComponentProps } from "@blocknote/react";
+import { mergeCSSClasses } from "@blocknote/core";
+import { forwardRef } from "react";
+
+export const ToolbarSelect = forwardRef<
+ HTMLDivElement,
+ ComponentProps["FormattingToolbar"]["Select"]
+>((props, ref) => {
+ const { className, items, isDisabled } = props;
+
+ const selectedItem = props.items.filter((p) => p.isSelected)[0];
+
+ const setValue = (value: string) => {
+ items.find((item) => item.text === value)!.onClick?.();
+ };
+
+ return (
+
+ }>
+ {selectedItem.icon} {selectedItem.text}
+
+
+ {items.map((option) => (
+
+ {option.icon}
+ {option.text}
+ {option.text === selectedItem.text && }
+
+ ))}
+
+
+ );
+});
diff --git a/packages/ariakit/tsconfig.json b/packages/ariakit/tsconfig.json
new file mode 100644
index 0000000000..607ad93cfa
--- /dev/null
+++ b/packages/ariakit/tsconfig.json
@@ -0,0 +1,32 @@
+{
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "module": "ESNext",
+ "lib": ["ESNext", "DOM"],
+ "moduleResolution": "Node",
+ "jsx": "react-jsx",
+ "strict": true,
+ "sourceMap": true,
+ "resolveJsonModule": true,
+ "esModuleInterop": true,
+ "noEmit": false,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noImplicitReturns": true,
+ "outDir": "dist",
+ "declaration": true,
+ "declarationDir": "types",
+ "composite": true,
+ "skipLibCheck": true,
+ },
+ "include": ["src"],
+ "references": [
+ {
+ "path": "../core"
+ },
+ {
+ "path": "../react"
+ }
+ ]
+}
diff --git a/packages/ariakit/vite.config.ts b/packages/ariakit/vite.config.ts
new file mode 100644
index 0000000000..a50e2823d2
--- /dev/null
+++ b/packages/ariakit/vite.config.ts
@@ -0,0 +1,52 @@
+import react from "@vitejs/plugin-react";
+import * as path from "path";
+import { webpackStats } from "rollup-plugin-webpack-stats";
+import { defineConfig } from "vite";
+import pkg from "./package.json";
+// import eslintPlugin from "vite-plugin-eslint";
+
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ test: {
+ environment: "jsdom",
+ setupFiles: ["./vitestSetup.ts"],
+ },
+ plugins: [react(), webpackStats()],
+ // used so that vitest resolves the core package from the sources instead of the built version
+ resolve: {
+ alias:
+ conf.command === "build"
+ ? ({} as Record)
+ : ({
+ // load live from sources with live reload working
+ "@blocknote/core": path.resolve(__dirname, "../core/src/"),
+ "@blocknote/react": path.resolve(__dirname, "../react/src/"),
+ } as Record),
+ },
+ build: {
+ sourcemap: true,
+ lib: {
+ entry: path.resolve(__dirname, "src/index.tsx"),
+ name: "blocknote-ariakit",
+ fileName: "blocknote-ariakit",
+ },
+ rollupOptions: {
+ // make sure to externalize deps that shouldn't be bundled
+ // into your library
+ external: Object.keys({
+ ...pkg.dependencies,
+ ...pkg.peerDependencies,
+ ...pkg.devDependencies,
+ }),
+ output: {
+ // Provide global variables to use in the UMD build
+ // for externalized deps
+ globals: {
+ react: "React",
+ "react-dom": "ReactDOM",
+ },
+ interop: "compat", // https://rollupjs.org/migration/#changed-defaults
+ },
+ },
+ },
+}));
diff --git a/packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts b/packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts
index 21f8eeeb00..af1e444a99 100644
--- a/packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts
+++ b/packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts
@@ -76,7 +76,7 @@ export const renderImage = (
// Text for the add image button.
const addImageButtonText = document.createElement("p");
addImageButtonText.className = "bn-add-image-button-text";
- addImageButtonText.innerText = "Add Image";
+ addImageButtonText.innerText = editor.dictionary.image.add_button;
// Wrapper element for the image, resize handles and caption.
const imageAndCaptionWrapper = document.createElement("div");
diff --git a/packages/core/src/editor/BlockNoteEditor.ts b/packages/core/src/editor/BlockNoteEditor.ts
index 001782123b..e245a8b3b7 100644
--- a/packages/core/src/editor/BlockNoteEditor.ts
+++ b/packages/core/src/editor/BlockNoteEditor.ts
@@ -27,10 +27,10 @@ import {
PartialBlock,
} from "../blocks/defaultBlocks";
import { FormattingToolbarProsemirrorPlugin } from "../extensions/FormattingToolbar/FormattingToolbarPlugin";
+import { ImagePanelProsemirrorPlugin } from "../extensions/ImagePanel/ImageToolbarPlugin";
import { LinkToolbarProsemirrorPlugin } from "../extensions/LinkToolbar/LinkToolbarPlugin";
import { SideMenuProsemirrorPlugin } from "../extensions/SideMenu/SideMenuPlugin";
import { SuggestionMenuProseMirrorPlugin } from "../extensions/SuggestionMenu/SuggestionPlugin";
-import { ImagePanelProsemirrorPlugin } from "../extensions/ImagePanel/ImageToolbarPlugin";
import { TableHandlesProsemirrorPlugin } from "../extensions/TableHandles/TableHandlesPlugin";
import { UniqueID } from "../extensions/UniqueID/UniqueID";
import {
@@ -62,6 +62,9 @@ import {
} from "./BlockNoteTipTapEditor";
// CSS
+import { PlaceholderPlugin } from "../extensions/Placeholder/PlaceholderPlugin";
+import { Dictionary } from "../i18n/dictionary";
+import { en } from "../i18n/locales";
import "./Block.css";
import "./editor.css";
@@ -73,6 +76,14 @@ export type BlockNoteEditorOptions<
// TODO: Figure out if enableBlockNoteExtensions/disableHistoryExtension are needed and document them.
enableBlockNoteExtensions: boolean;
+ /**
+ * A dictionary object containing translations for the editor.
+ */
+ dictionary?: Dictionary;
+
+ /**
+ * @deprecated, provide placeholders via dictionary instead
+ */
placeholders: Record;
/**
@@ -150,6 +161,8 @@ export class BlockNoteEditor<
contentComponent: any;
};
public blockCache = new WeakMap>();
+ public readonly dictionary: Dictionary;
+
public readonly schema: BlockNoteSchema;
public readonly blockImplementations: BlockSpecs;
@@ -216,11 +229,17 @@ export class BlockNoteEditor<
);
}
+ this.dictionary = options.dictionary || en;
+
// apply defaults
const newOptions = {
defaultStyles: true,
schema: options.schema || BlockNoteSchema.create(),
...options,
+ placeholders: {
+ ...this.dictionary.placeholders,
+ ...options.placeholders,
+ },
};
// @ts-ignore
@@ -243,7 +262,6 @@ export class BlockNoteEditor<
const extensions = getBlockNoteExtensions({
editor: this,
- placeholders: newOptions.placeholders,
domAttributes: newOptions.domAttributes || {},
blockSchema: this.schema.blockSchema,
blockSpecs: this.schema.blockSpecs,
@@ -263,6 +281,7 @@ export class BlockNoteEditor<
this.suggestionMenus.plugin,
...(this.imagePanel ? [this.imagePanel.plugin] : []),
...(this.tableHandles ? [this.tableHandles.plugin] : []),
+ PlaceholderPlugin(this, newOptions.placeholders),
];
},
});
diff --git a/packages/core/src/editor/BlockNoteExtensions.ts b/packages/core/src/editor/BlockNoteExtensions.ts
index 2cf41f98f8..a408c00f3e 100644
--- a/packages/core/src/editor/BlockNoteExtensions.ts
+++ b/packages/core/src/editor/BlockNoteExtensions.ts
@@ -14,7 +14,6 @@ import * as Y from "yjs";
import { createCopyToClipboardExtension } from "../api/exporters/copyExtension";
import { createPasteFromClipboardExtension } from "../api/parsers/pasteExtension";
import { BackgroundColorExtension } from "../extensions/BackgroundColor/BackgroundColorExtension";
-import { Placeholder } from "../extensions/Placeholder/PlaceholderExtension";
import { TextAlignmentExtension } from "../extensions/TextAlignment/TextAlignmentExtension";
import { TextColorExtension } from "../extensions/TextColor/TextColorExtension";
import { TrailingNode } from "../extensions/TrailingNode/TrailingNodeExtension";
@@ -39,7 +38,6 @@ export const getBlockNoteExtensions = <
S extends StyleSchema
>(opts: {
editor: BlockNoteEditor;
- placeholders?: Record;
domAttributes: Partial;
blockSchema: BSchema;
blockSpecs: BlockSpecs;
@@ -66,12 +64,6 @@ export const getBlockNoteExtensions = <
Gapcursor,
// DropCursor,
- Placeholder.configure({
- // TODO: This shorthand is kind of ugly
- ...(opts.placeholders !== undefined
- ? { placeholders: opts.placeholders }
- : {}),
- }),
UniqueID.configure({
types: ["blockContainer"],
}),
diff --git a/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts b/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts
index a60f1cb398..b1b329081a 100644
--- a/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts
+++ b/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts
@@ -93,7 +93,10 @@ export class FormattingToolbarView {
event.relatedTarget &&
// Element is inside the editor.
(editorWrapper === (event.relatedTarget as Node) ||
- editorWrapper.contains(event.relatedTarget as Node))
+ editorWrapper.contains(event.relatedTarget as Node) ||
+ (event.relatedTarget as HTMLElement).matches(
+ ".bn-ui-container, .bn-ui-container *"
+ ))
) {
return;
}
diff --git a/packages/core/src/extensions/Placeholder/PlaceholderExtension.ts b/packages/core/src/extensions/Placeholder/PlaceholderExtension.ts
deleted file mode 100644
index b25e6d4c5a..0000000000
--- a/packages/core/src/extensions/Placeholder/PlaceholderExtension.ts
+++ /dev/null
@@ -1,124 +0,0 @@
-import { Extension } from "@tiptap/core";
-import { Plugin, PluginKey } from "prosemirror-state";
-import { Decoration, DecorationSet } from "prosemirror-view";
-
-const PLUGIN_KEY = new PluginKey(`blocknote-placeholder`);
-
-/**
- * This is a modified version of the tiptap
- * placeholder plugin, that also sets hasAnchorClass
- *
- * It does not set a data-placeholder (text is currently done in css)
- *
- */
-export interface PlaceholderOptions {
- placeholders: Record;
-}
-
-export const Placeholder = Extension.create({
- name: "placeholder",
-
- addOptions() {
- return {
- placeholders: {
- default: "Enter text or type '/' for commands",
- heading: "Heading",
- bulletListItem: "List",
- numberedListItem: "List",
- },
- };
- },
-
- addProseMirrorPlugins() {
- const placeholders = this.options.placeholders;
- return [
- new Plugin({
- key: PLUGIN_KEY,
- view: () => {
- const styleEl = document.createElement("style");
- document.head.appendChild(styleEl);
- const styleSheet = styleEl.sheet!;
-
- const getBaseSelector = (additionalSelectors = "") =>
- `.bn-block-content${additionalSelectors} .bn-inline-content:has(> .ProseMirror-trailingBreak):before`;
-
- const getSelector = (
- blockType: string | "default",
- mustBeFocused = true
- ) => {
- const mustBeFocusedSelector = mustBeFocused
- ? `[data-is-empty-and-focused]`
- : ``;
-
- if (blockType === "default") {
- return getBaseSelector(mustBeFocusedSelector);
- }
-
- const blockTypeSelector = `[data-content-type="${blockType}"]`;
- return getBaseSelector(mustBeFocusedSelector + blockTypeSelector);
- };
-
- for (const [blockType, placeholder] of Object.entries(placeholders)) {
- const mustBeFocused = blockType === "default";
-
- styleSheet.insertRule(
- `${getSelector(
- blockType,
- mustBeFocused
- )}{ content: ${JSON.stringify(placeholder)}; }`
- );
-
- // For some reason, the placeholders which show when the block is focused
- // take priority over ones which show depending on block type, so we need
- // to make sure the block specific ones are also used when the block is
- // focused.
- if (!mustBeFocused) {
- styleSheet.insertRule(
- `${getSelector(blockType, true)}{ content: ${JSON.stringify(
- placeholder
- )}; }`
- );
- }
- }
-
- return {
- destroy: () => {
- document.head.removeChild(styleEl);
- },
- };
- },
- props: {
- // TODO: maybe also add placeholder for empty document ("e.g.: start writing..")
- decorations: (state) => {
- const { doc, selection } = state;
-
- const active = this.editor.isEditable;
-
- if (!active) {
- return;
- }
-
- if (!selection.empty) {
- return;
- }
-
- const $pos = selection.$anchor;
- const node = $pos.parent;
-
- if (node.content.size > 0) {
- return null;
- }
-
- const before = $pos.before();
-
- const dec = Decoration.node(before, before + node.nodeSize, {
- "data-is-empty-and-focused": "true",
- });
-
- return DecorationSet.create(doc, [dec]);
- },
- },
- }),
- ];
- },
-});
diff --git a/packages/core/src/extensions/Placeholder/PlaceholderPlugin.ts b/packages/core/src/extensions/Placeholder/PlaceholderPlugin.ts
new file mode 100644
index 0000000000..aa7f423126
--- /dev/null
+++ b/packages/core/src/extensions/Placeholder/PlaceholderPlugin.ts
@@ -0,0 +1,95 @@
+import { Plugin, PluginKey } from "prosemirror-state";
+import { Decoration, DecorationSet } from "prosemirror-view";
+import type { BlockNoteEditor } from "../../editor/BlockNoteEditor";
+
+const PLUGIN_KEY = new PluginKey(`blocknote-placeholder`);
+
+export const PlaceholderPlugin = (
+ editor: BlockNoteEditor,
+ placeholders: Record
+) => {
+ return new Plugin({
+ key: PLUGIN_KEY,
+ view: () => {
+ const styleEl = document.createElement("style");
+ document.head.appendChild(styleEl);
+ const styleSheet = styleEl.sheet!;
+
+ const getBaseSelector = (additionalSelectors = "") =>
+ `.bn-block-content${additionalSelectors} .bn-inline-content:has(> .ProseMirror-trailingBreak):before`;
+
+ const getSelector = (
+ blockType: string | "default",
+ mustBeFocused = true
+ ) => {
+ const mustBeFocusedSelector = mustBeFocused
+ ? `[data-is-empty-and-focused]`
+ : ``;
+
+ if (blockType === "default") {
+ return getBaseSelector(mustBeFocusedSelector);
+ }
+
+ const blockTypeSelector = `[data-content-type="${blockType}"]`;
+ return getBaseSelector(mustBeFocusedSelector + blockTypeSelector);
+ };
+
+ for (const [blockType, placeholder] of Object.entries(placeholders)) {
+ const mustBeFocused = blockType === "default";
+
+ styleSheet.insertRule(
+ `${getSelector(blockType, mustBeFocused)}{ content: ${JSON.stringify(
+ placeholder
+ )}; }`
+ );
+
+ // For some reason, the placeholders which show when the block is focused
+ // take priority over ones which show depending on block type, so we need
+ // to make sure the block specific ones are also used when the block is
+ // focused.
+ if (!mustBeFocused) {
+ styleSheet.insertRule(
+ `${getSelector(blockType, true)}{ content: ${JSON.stringify(
+ placeholder
+ )}; }`
+ );
+ }
+ }
+
+ return {
+ destroy: () => {
+ document.head.removeChild(styleEl);
+ },
+ };
+ },
+ props: {
+ // TODO: maybe also add placeholder for empty document ("e.g.: start writing..")
+ decorations: (state) => {
+ const { doc, selection } = state;
+
+ if (!editor.isEditable) {
+ return;
+ }
+
+ if (!selection.empty) {
+ return;
+ }
+
+ const $pos = selection.$anchor;
+ const node = $pos.parent;
+
+ if (node.content.size > 0) {
+ return null;
+ }
+
+ const before = $pos.before();
+
+ const dec = Decoration.node(before, before + node.nodeSize, {
+ "data-is-empty-and-focused": "true",
+ });
+
+ return DecorationSet.create(doc, [dec]);
+ },
+ },
+ });
+};
diff --git a/packages/core/src/extensions/SuggestionMenu/DefaultSuggestionItem.ts b/packages/core/src/extensions/SuggestionMenu/DefaultSuggestionItem.ts
index 4505a3aaa9..874c7e318c 100644
--- a/packages/core/src/extensions/SuggestionMenu/DefaultSuggestionItem.ts
+++ b/packages/core/src/extensions/SuggestionMenu/DefaultSuggestionItem.ts
@@ -1,4 +1,7 @@
+import type { Dictionary } from "../../i18n/dictionary";
+
export type DefaultSuggestionItem = {
+ key: keyof Dictionary["slash_menu"];
title: string;
onItemClick: () => void;
subtext?: string;
diff --git a/packages/core/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.ts b/packages/core/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.ts
index a56363634e..8805c6a4d6 100644
--- a/packages/core/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.ts
+++ b/packages/core/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.ts
@@ -83,95 +83,82 @@ export function getDefaultSlashMenuItems<
if (checkDefaultBlockTypeInSchema("heading", editor)) {
items.push(
{
- title: "Heading 1",
onItemClick: () => {
insertOrUpdateBlock(editor, {
type: "heading",
props: { level: 1 },
});
},
- subtext: "Used for a top-level heading",
badge: formatKeyboardShortcut("Mod-Alt-1"),
- aliases: ["h", "heading1", "h1"],
- group: "Headings",
+ key: "heading",
+ ...editor.dictionary.slash_menu.heading,
},
{
- title: "Heading 2",
onItemClick: () => {
insertOrUpdateBlock(editor, {
type: "heading",
props: { level: 2 },
});
},
- subtext: "Used for key sections",
badge: formatKeyboardShortcut("Mod-Alt-2"),
- aliases: ["h2", "heading2", "subheading"],
- group: "Headings",
+ key: "heading_2",
+ ...editor.dictionary.slash_menu.heading_2,
},
{
- title: "Heading 3",
onItemClick: () => {
insertOrUpdateBlock(editor, {
type: "heading",
props: { level: 3 },
});
},
- subtext: "Used for subsections and group headings",
badge: formatKeyboardShortcut("Mod-Alt-3"),
- aliases: ["h3", "heading3", "subheading"],
- group: "Headings",
+ key: "heading_3",
+ ...editor.dictionary.slash_menu.heading_3,
}
);
}
if (checkDefaultBlockTypeInSchema("numberedListItem", editor)) {
items.push({
- title: "Numbered List",
onItemClick: () => {
insertOrUpdateBlock(editor, {
type: "numberedListItem",
});
},
- subtext: "Used to display a numbered list",
badge: formatKeyboardShortcut("Mod-Shift-7"),
- aliases: ["ol", "li", "list", "numberedlist", "numbered list"],
- group: "Basic blocks",
+ key: "numbered_list",
+ ...editor.dictionary.slash_menu.numbered_list,
});
}
if (checkDefaultBlockTypeInSchema("bulletListItem", editor)) {
items.push({
- title: "Bullet List",
onItemClick: () => {
insertOrUpdateBlock(editor, {
type: "bulletListItem",
});
},
- subtext: "Used to display an unordered list",
badge: formatKeyboardShortcut("Mod-Shift-8"),
- aliases: ["ul", "li", "list", "bulletlist", "bullet list"],
- group: "Basic blocks",
+ key: "bullet_list",
+ ...editor.dictionary.slash_menu.bullet_list,
});
}
if (checkDefaultBlockTypeInSchema("paragraph", editor)) {
items.push({
- title: "Paragraph",
onItemClick: () => {
insertOrUpdateBlock(editor, {
type: "paragraph",
});
},
- subtext: "Used for the body of your document",
badge: formatKeyboardShortcut("Mod-Alt-0"),
- aliases: ["p", "paragraph"],
- group: "Basic blocks",
+ key: "paragraph",
+ ...editor.dictionary.slash_menu.paragraph,
});
}
if (checkDefaultBlockTypeInSchema("table", editor)) {
items.push({
- title: "Table",
onItemClick: () => {
insertOrUpdateBlock(editor, {
type: "table",
@@ -188,16 +175,14 @@ export function getDefaultSlashMenuItems<
},
});
},
- subtext: "Used for for tables",
- aliases: ["table"],
- group: "Advanced",
badge: undefined,
+ key: "table",
+ ...editor.dictionary.slash_menu.table,
});
}
if (checkDefaultBlockTypeInSchema("image", editor)) {
items.push({
- title: "Image",
onItemClick: () => {
const insertedBlock = insertOrUpdateBlock(editor, {
type: "image",
@@ -210,19 +195,8 @@ export function getDefaultSlashMenuItems<
})
);
},
- subtext: "Insert an image",
- aliases: [
- "image",
- "imageUpload",
- "upload",
- "img",
- "picture",
- "media",
- "url",
- "drive",
- "dropbox",
- ],
- group: "Media",
+ key: "image",
+ ...editor.dictionary.slash_menu.image,
});
}
diff --git a/packages/core/src/extensions/TableHandles/TableHandlesPlugin.ts b/packages/core/src/extensions/TableHandles/TableHandlesPlugin.ts
index 8b1918d8e5..ac0be6cda9 100644
--- a/packages/core/src/extensions/TableHandles/TableHandlesPlugin.ts
+++ b/packages/core/src/extensions/TableHandles/TableHandlesPlugin.ts
@@ -350,7 +350,7 @@ export class TableHandlesView<
};
destroy() {
- this.pmView.dom.removeEventListener("mousedown", this.mouseMoveHandler);
+ this.pmView.dom.removeEventListener("mousemove", this.mouseMoveHandler);
document.removeEventListener("dragover", this.dragOverHandler);
document.removeEventListener("drop", this.dropHandler);
diff --git a/packages/core/src/i18n/dictionary.ts b/packages/core/src/i18n/dictionary.ts
new file mode 100644
index 0000000000..c93e6533c5
--- /dev/null
+++ b/packages/core/src/i18n/dictionary.ts
@@ -0,0 +1,17 @@
+// function scramble(dict: any) {
+// const newDict: any = {} as any;
+
+import type { en } from "./locales";
+
+// for (const key in dict) {
+// if (typeof dict[key] === "object") {
+// newDict[key] = scramble(dict[key]);
+// } else {
+// newDict[key] = dict[key].split("").reverse().join("");
+// }
+// }
+
+// return newDict;
+// }
+
+export type Dictionary = typeof en;
diff --git a/packages/core/src/i18n/locales/en.ts b/packages/core/src/i18n/locales/en.ts
new file mode 100644
index 0000000000..3efd049612
--- /dev/null
+++ b/packages/core/src/i18n/locales/en.ts
@@ -0,0 +1,192 @@
+export const en = {
+ slash_menu: {
+ heading: {
+ title: "Heading 1",
+ subtext: "Used for a top-level heading",
+ aliases: ["h", "heading1", "h1"],
+ group: "Headings",
+ },
+ heading_2: {
+ title: "Heading 2",
+ subtext: "Used for key sections",
+ aliases: ["h2", "heading2", "subheading"],
+ group: "Headings",
+ },
+ heading_3: {
+ title: "Heading 3",
+ subtext: "Used for subsections and group headings",
+ aliases: ["h3", "heading3", "subheading"],
+ group: "Headings",
+ },
+ numbered_list: {
+ title: "Numbered List",
+ subtext: "Used to display a numbered list",
+ aliases: ["ol", "li", "list", "numberedlist", "numbered list"],
+ group: "Basic blocks",
+ },
+ bullet_list: {
+ title: "Bullet List",
+ subtext: "Used to display an unordered list",
+ aliases: ["ul", "li", "list", "bulletlist", "bullet list"],
+ group: "Basic blocks",
+ },
+ paragraph: {
+ title: "Paragraph",
+ subtext: "Used for the body of your document",
+ aliases: ["p", "paragraph"],
+ group: "Basic blocks",
+ },
+ table: {
+ title: "Table",
+ subtext: "Used for for tables",
+ aliases: ["table"],
+ group: "Advanced",
+ },
+ image: {
+ title: "Image",
+ subtext: "Insert an image",
+ aliases: [
+ "image",
+ "imageUpload",
+ "upload",
+ "img",
+ "picture",
+ "media",
+ "url",
+ "drive",
+ "dropbox",
+ ],
+ group: "Media",
+ },
+ },
+ placeholders: {
+ default: "Enter text or type '/' for commands",
+ heading: "Heading",
+ bulletListItem: "List",
+ numberedListItem: "List",
+ },
+ image: {
+ add_button: "Add Image",
+ },
+ // from react package:
+ drag_handle: {
+ delete_menuitem: "Delete",
+ colors_menuitem: "Colors",
+ },
+ table_handle: {
+ delete_column_menuitem: "Delete column",
+ delete_row_menuitem: "Delete row",
+ add_left_menuitem: "Add column left",
+ add_right_menuitem: "Add column right",
+ add_above_menuitem: "Add row above",
+ add_below_menuitem: "Add row below",
+ },
+ suggestion_menu: {
+ no_items_title: "No items found",
+ loading: "Loading…",
+ },
+ color_picker: {
+ text_title: "Text",
+ background_title: "Background",
+ colors: {
+ default: "Default",
+ gray: "Gray",
+ brown: "Brown",
+ red: "Red",
+ orange: "Orange",
+ yellow: "Yellow",
+ green: "Green",
+ blue: "Blue",
+ purple: "Purple",
+ pink: "Pink",
+ },
+ },
+
+ formatting_toolbar: {
+ bold: {
+ tooltip: "Bold",
+ secondary_tooltip: "Mod+B",
+ },
+ italic: {
+ tooltip: "Italic",
+ secondary_tooltip: "Mod+I",
+ },
+ underline: {
+ tooltip: "Underline",
+ secondary_tooltip: "Mod+U",
+ },
+ strike: {
+ tooltip: "Strike",
+ secondary_tooltip: "Mod+Shift+X",
+ },
+ code: {
+ tooltip: "Code",
+ secondary_tooltip: "",
+ },
+ colors: {
+ tooltip: "Colors",
+ },
+ link: {
+ tooltip: "Create link",
+ secondary_tooltip: "Mod+K",
+ },
+ image_caption: {
+ tooltip: "Edit caption",
+ input_placeholder: "Edit caption",
+ },
+ image_replace: {
+ tooltip: "Replace image",
+ },
+ nest: {
+ tooltip: "Nest block",
+ secondary_tooltip: "Tab",
+ },
+ unnest: {
+ tooltip: "Unnest block",
+ secondary_tooltip: "Shift+Tab",
+ },
+ align_left: {
+ tooltip: "Align text left",
+ },
+ align_center: {
+ tooltip: "Align text center",
+ },
+ align_right: {
+ tooltip: "Align text right",
+ },
+ align_justify: {
+ tooltip: "Justify text",
+ },
+ },
+ image_panel: {
+ upload: {
+ title: "Upload",
+ file_placeholder: "Upload image",
+ upload_error: "Error: Upload failed",
+ },
+ embed: {
+ title: "Embed",
+ embed_button: "Embed image",
+ url_placeholder: "Enter URL",
+ },
+ },
+ link_toolbar: {
+ delete: {
+ tooltip: "Remove link",
+ },
+ edit: {
+ text: "Edit link",
+ tooltip: "Edit",
+ },
+ open: {
+ tooltip: "Open in new tab",
+ },
+ form: {
+ title_placeholder: "Edit title",
+ url_placeholder: "Edit URL",
+ },
+ },
+ generic: {
+ ctrl_shortcut: "Ctrl",
+ },
+};
diff --git a/packages/core/src/i18n/locales/index.ts b/packages/core/src/i18n/locales/index.ts
new file mode 100644
index 0000000000..e42aad308e
--- /dev/null
+++ b/packages/core/src/i18n/locales/index.ts
@@ -0,0 +1,2 @@
+export * from "./en";
+export * from "./nl";
diff --git a/packages/core/src/i18n/locales/nl.ts b/packages/core/src/i18n/locales/nl.ts
new file mode 100644
index 0000000000..be0cf48363
--- /dev/null
+++ b/packages/core/src/i18n/locales/nl.ts
@@ -0,0 +1,193 @@
+import type { Dictionary } from "../dictionary";
+
+export const nl: Dictionary = {
+ slash_menu: {
+ heading: {
+ title: "Kop 1",
+ subtext: "Gebruikt voor een hoofdkop",
+ aliases: ["h", "kop1", "h1"],
+ group: "Koppen",
+ },
+ heading_2: {
+ title: "Kop 2",
+ subtext: "Gebruikt voor belangrijke secties",
+ aliases: ["h2", "kop2", "subkop"],
+ group: "Koppen",
+ },
+ heading_3: {
+ title: "Kop 3",
+ subtext: "Gebruikt voor subsecties en groepskoppen",
+ aliases: ["h3", "kop3", "subkop"],
+ group: "Koppen",
+ },
+ numbered_list: {
+ title: "Genummerde Lijst",
+ subtext: "Gebruikt om een genummerde lijst weer te geven",
+ aliases: ["ol", "li", "lijst", "genummerdelijst", "genummerde lijst"],
+ group: "Basisblokken",
+ },
+ bullet_list: {
+ title: "Puntenlijst",
+ subtext: "Gebruikt om een ongeordende lijst weer te geven",
+ aliases: ["ul", "li", "lijst", "puntenlijst", "punten lijst"],
+ group: "Basisblokken",
+ },
+ paragraph: {
+ title: "Paragraaf",
+ subtext: "Gebruikt voor de hoofdtekst van uw document",
+ aliases: ["p", "paragraaf"],
+ group: "Basisblokken",
+ },
+ table: {
+ title: "Tabel",
+ subtext: "Gebruikt voor tabellen",
+ aliases: ["tabel"],
+ group: "Geavanceerd",
+ },
+ image: {
+ title: "Afbeelding",
+ subtext: "Voeg een afbeelding in",
+ aliases: [
+ "afbeelding",
+ "imageUpload",
+ "upload",
+ "img",
+ "foto",
+ "media",
+ "url",
+ "drive",
+ "dropbox",
+ ],
+ group: "Media",
+ },
+ },
+ placeholders: {
+ default: "Voer tekst in of type '/' voor commando's",
+ heading: "Kop",
+ bulletListItem: "Lijst",
+ numberedListItem: "Lijst",
+ },
+ image: {
+ add_button: "Afbeelding toevoegen",
+ },
+ // from react package:
+ drag_handle: {
+ delete_menuitem: "Verwijder",
+ colors_menuitem: "Kleuren",
+ },
+ table_handle: {
+ delete_column_menuitem: "Verwijder kolom",
+ delete_row_menuitem: "Verwijder rij",
+ add_left_menuitem: "Voeg kolom links toe",
+ add_right_menuitem: "Voeg kolom rechts toe",
+ add_above_menuitem: "Voeg rij boven toe",
+ add_below_menuitem: "Voeg rij onder toe",
+ },
+ suggestion_menu: {
+ no_items_title: "Geen items gevonden",
+ loading: "Laden…",
+ },
+ color_picker: {
+ text_title: "Tekst",
+ background_title: "Achtergrond",
+ colors: {
+ default: "Standaard",
+ gray: "Grijs",
+ brown: "Bruin",
+ red: "Rood",
+ orange: "Oranje",
+ yellow: "Geel",
+ green: "Groen",
+ blue: "Blauw",
+ purple: "Paars",
+ pink: "Roze",
+ },
+ },
+ formatting_toolbar: {
+ bold: {
+ tooltip: "Vet",
+ secondary_tooltip: "Mod+B",
+ },
+ italic: {
+ tooltip: "Cursief",
+ secondary_tooltip: "Mod+I",
+ },
+ underline: {
+ tooltip: "Onderstrepen",
+ secondary_tooltip: "Mod+U",
+ },
+ strike: {
+ tooltip: "Doorstrepen",
+ secondary_tooltip: "Mod+Shift+X",
+ },
+ code: {
+ tooltip: "Code",
+ secondary_tooltip: "",
+ },
+ colors: {
+ tooltip: "Kleuren",
+ },
+ link: {
+ tooltip: "Maak link",
+ secondary_tooltip: "Mod+K",
+ },
+ image_caption: {
+ tooltip: "Bewerk onderschrift",
+ input_placeholder: "Bewerk onderschrift",
+ },
+ image_replace: {
+ tooltip: "Vervang afbeelding",
+ },
+ nest: {
+ tooltip: "Nest blok",
+ secondary_tooltip: "Tab",
+ },
+ unnest: {
+ tooltip: "Ontnest blok",
+ secondary_tooltip: "Shift+Tab",
+ },
+ align_left: {
+ tooltip: "Tekst links uitlijnen",
+ },
+ align_center: {
+ tooltip: "Tekst centreren",
+ },
+ align_right: {
+ tooltip: "Tekst rechts uitlijnen",
+ },
+ align_justify: {
+ tooltip: "Tekst uitvullen",
+ },
+ },
+ image_panel: {
+ upload: {
+ title: "Upload",
+ file_placeholder: "Upload afbeelding",
+ upload_error: "Fout: Upload mislukt",
+ },
+ embed: {
+ title: "Insluiten",
+ embed_button: "Insluiten afbeelding",
+ url_placeholder: "Voer URL in",
+ },
+ },
+ link_toolbar: {
+ delete: {
+ tooltip: "Verwijder link",
+ },
+ edit: {
+ text: "Bewerk link",
+ tooltip: "Bewerk",
+ },
+ open: {
+ tooltip: "Open in nieuw tabblad",
+ },
+ form: {
+ title_placeholder: "Bewerk titel",
+ url_placeholder: "Bewerk URL",
+ },
+ },
+ generic: {
+ ctrl_shortcut: "Ctrl",
+ },
+};
diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts
index 5a202f72bd..1a70105d11 100644
--- a/packages/core/src/index.ts
+++ b/packages/core/src/index.ts
@@ -1,3 +1,4 @@
+import * as locales from "./i18n/locales";
export * from "./api/exporters/html/externalHTMLExporter";
export * from "./api/exporters/html/internalHTMLSerializer";
export * from "./api/testUtil";
@@ -25,4 +26,6 @@ export * from "./util/string";
export * from "./api/nodeConversions/nodeConversions";
export * from "./api/testUtil/partialBlockTestUtil";
export * from "./extensions/UniqueID/UniqueID";
+export * from "./i18n/dictionary";
export { UnreachableCaseError } from "./util/typescript";
+export { locales };
diff --git a/packages/core/src/util/browser.ts b/packages/core/src/util/browser.ts
index e5fcf8ac71..9ecdf3250d 100644
--- a/packages/core/src/util/browser.ts
+++ b/packages/core/src/util/browser.ts
@@ -4,11 +4,11 @@ export const isAppleOS = () =>
(/AppleWebKit/.test(navigator.userAgent) &&
/Mobile\/\w+/.test(navigator.userAgent)));
-export function formatKeyboardShortcut(shortcut: string) {
+export function formatKeyboardShortcut(shortcut: string, ctrlText = "Ctrl") {
if (isAppleOS()) {
return shortcut.replace("Mod", "⌘");
} else {
- return shortcut.replace("Mod", "Ctrl");
+ return shortcut.replace("Mod", ctrlText);
}
}
diff --git a/packages/dev-scripts/examples/template-react/package.json.template.tsx b/packages/dev-scripts/examples/template-react/package.json.template.tsx
index 5b391fab85..0f367b0b8c 100644
--- a/packages/dev-scripts/examples/template-react/package.json.template.tsx
+++ b/packages/dev-scripts/examples/template-react/package.json.template.tsx
@@ -4,7 +4,7 @@ const template = (project: Project) => ({
name: "@blocknote/example-" + project.projectSlug,
description: "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
private: true,
- version: "0.12.0",
+ version: "0.12.4",
scripts: {
start: "vite",
dev: "vite",
@@ -13,8 +13,11 @@ const template = (project: Project) => ({
lint: "eslint . --max-warnings 0",
},
dependencies: {
- "@blocknote/core": "^0.12.0",
- "@blocknote/react": "^0.12.0",
+ "@blocknote/core": "^0.12.4",
+ "@blocknote/react": "^0.12.4",
+ "@blocknote/ariakit": "^0.12.4",
+ "@blocknote/mantine": "^0.12.4",
+ "@blocknote/shadcn": "^0.12.4",
react: "^18.2.0",
"react-dom": "^18.2.0",
...(project.config?.dependencies || {}),
diff --git a/packages/dev-scripts/package.json b/packages/dev-scripts/package.json
index 9adcfef2af..c4664ffef8 100644
--- a/packages/dev-scripts/package.json
+++ b/packages/dev-scripts/package.json
@@ -3,7 +3,7 @@
"homepage": "https://github.com/TypeCellOS/BlockNote",
"private": true,
"license": "MPL-2.0",
- "version": "0.12.1",
+ "version": "0.12.4",
"description": "",
"type": "module",
"scripts": {
diff --git a/packages/mantine/package.json b/packages/mantine/package.json
new file mode 100644
index 0000000000..da8c10c5df
--- /dev/null
+++ b/packages/mantine/package.json
@@ -0,0 +1,87 @@
+{
+ "name": "@blocknote/mantine",
+ "homepage": "https://github.com/TypeCellOS/BlockNote",
+ "private": false,
+ "license": "MPL-2.0",
+ "version": "0.12.4",
+ "files": [
+ "dist",
+ "types",
+ "src"
+ ],
+ "keywords": [
+ "react",
+ "javascript",
+ "editor",
+ "typescript",
+ "prosemirror",
+ "wysiwyg",
+ "rich-text-editor",
+ "notion",
+ "yjs",
+ "block-based",
+ "tiptap"
+ ],
+ "description": "A \"Notion-style\" block-based extensible text editor built on top of Prosemirror and Tiptap.",
+ "type": "module",
+ "source": "src/index.tsx",
+ "types": "./types/src/index.d.ts",
+ "main": "./dist/blocknote-mantine.umd.cjs",
+ "module": "./dist/blocknote-mantine.js",
+ "exports": {
+ ".": {
+ "types": "./types/src/index.d.ts",
+ "import": "./dist/blocknote-mantine.js",
+ "require": "./dist/blocknote-mantine.umd.cjs"
+ },
+ "./style.css": {
+ "import": "./dist/style.css",
+ "require": "./dist/style.css"
+ }
+ },
+ "scripts": {
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "build-bundled": "tsc && vite build --config vite.config.bundled.ts && git checkout tmp-releases && rm -rf ../../release && mv ../../release-tmp ../../release",
+ "preview": "vite preview",
+ "lint": "eslint src --max-warnings 0",
+ "clean": "rimraf dist && rimraf types"
+ },
+ "dependencies": {
+ "@blocknote/core": "0.12.4",
+ "@blocknote/react": "0.12.4",
+ "@mantine/core": "^7.5.0",
+ "@mantine/hooks": "^7.5.0",
+ "@mantine/utils": "^6.0.21",
+ "react": "^18",
+ "react-dom": "^18",
+ "react-icons": "^4.3.1",
+ "use-prefers-color-scheme": "^1.1.3"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "prettier": "^2.7.1",
+ "rimraf": "^5.0.5",
+ "rollup-plugin-webpack-stats": "^0.2.2",
+ "typescript": "^5.3.3",
+ "vite": "^4.4.8",
+ "vite-plugin-eslint": "^1.8.1",
+ "vite-plugin-externalize-deps": "^0.7.0"
+ },
+ "peerDependencies": {
+ "react": "^18",
+ "react-dom": "^18"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../.eslintrc.js"
+ ]
+ },
+ "publishConfig": {
+ "access": "public",
+ "registry": "https://registry.npmjs.org/"
+ }
+}
diff --git a/packages/react/src/editor/BlockNoteTheme.ts b/packages/mantine/src/BlockNoteTheme.ts
similarity index 100%
rename from packages/react/src/editor/BlockNoteTheme.ts
rename to packages/mantine/src/BlockNoteTheme.ts
diff --git a/packages/react/src/editor/defaultThemes.ts b/packages/mantine/src/defaultThemes.ts
similarity index 100%
rename from packages/react/src/editor/defaultThemes.ts
rename to packages/mantine/src/defaultThemes.ts
diff --git a/packages/mantine/src/form/TextInput.tsx b/packages/mantine/src/form/TextInput.tsx
new file mode 100644
index 0000000000..db4a76a1c6
--- /dev/null
+++ b/packages/mantine/src/form/TextInput.tsx
@@ -0,0 +1,39 @@
+import * as Mantine from "@mantine/core";
+
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const TextInput = forwardRef<
+ HTMLInputElement,
+ ComponentProps["Generic"]["Form"]["TextInput"]
+>((props, ref) => {
+ const {
+ className,
+ name,
+ label,
+ icon,
+ value,
+ autoFocus,
+ placeholder,
+ onKeyDown,
+ onChange,
+ onSubmit,
+ } = props;
+
+ return (
+
+ );
+});
diff --git a/packages/mantine/src/index.tsx b/packages/mantine/src/index.tsx
new file mode 100644
index 0000000000..f0ade60fd2
--- /dev/null
+++ b/packages/mantine/src/index.tsx
@@ -0,0 +1,172 @@
+import { BlockSchema, InlineContentSchema, StyleSchema } from "@blocknote/core";
+import {
+ BlockNoteViewRaw,
+ Components,
+ ComponentsContext,
+ useBlockNoteContext,
+} from "@blocknote/react";
+import { MantineProvider } from "@mantine/core";
+import { ComponentProps, useCallback } from "react";
+import usePrefersColorScheme from "use-prefers-color-scheme";
+
+import {
+ Theme,
+ applyBlockNoteCSSVariablesFromTheme,
+ removeBlockNoteCSSVariables,
+} from "./BlockNoteTheme";
+import { TextInput } from "./form/TextInput";
+import {
+ Menu,
+ MenuDivider,
+ MenuDropdown,
+ MenuItem,
+ MenuLabel,
+ MenuTrigger,
+} from "./menu/Menu";
+import { Panel } from "./panel/Panel";
+import { PanelButton } from "./panel/PanelButton";
+import { PanelFileInput } from "./panel/PanelFileInput";
+import { PanelTab } from "./panel/PanelTab";
+import { PanelTextInput } from "./panel/PanelTextInput";
+import { Popover, PopoverContent, PopoverTrigger } from "./popover/Popover";
+import { SideMenu } from "./sideMenu/SideMenu";
+import { SideMenuButton } from "./sideMenu/SideMenuButton";
+import { SuggestionMenu } from "./suggestionMenu/SuggestionMenu";
+import { SuggestionMenuEmptyItem } from "./suggestionMenu/SuggestionMenuEmptyItem";
+import { SuggestionMenuItem } from "./suggestionMenu/SuggestionMenuItem";
+import { SuggestionMenuLabel } from "./suggestionMenu/SuggestionMenuLabel";
+import { SuggestionMenuLoader } from "./suggestionMenu/SuggestionMenuLoader";
+import { TableHandle } from "./tableHandle/TableHandle";
+import { Toolbar } from "./toolbar/Toolbar";
+import { ToolbarButton } from "./toolbar/ToolbarButton";
+import { ToolbarSelect } from "./toolbar/ToolbarSelect";
+
+import "./style.css";
+
+export * from "./BlockNoteTheme";
+export * from "./defaultThemes";
+
+export const components: Components = {
+ FormattingToolbar: {
+ Root: Toolbar,
+ Button: ToolbarButton,
+ Select: ToolbarSelect,
+ },
+ ImagePanel: {
+ Root: Panel,
+ Button: PanelButton,
+ FileInput: PanelFileInput,
+ TabPanel: PanelTab,
+ TextInput: PanelTextInput,
+ },
+ LinkToolbar: {
+ Root: Toolbar,
+ Button: ToolbarButton,
+ },
+ SideMenu: {
+ Root: SideMenu,
+ Button: SideMenuButton,
+ },
+ SuggestionMenu: {
+ Root: SuggestionMenu,
+ Item: SuggestionMenuItem,
+ EmptyItem: SuggestionMenuEmptyItem,
+ Label: SuggestionMenuLabel,
+ Loader: SuggestionMenuLoader,
+ },
+ TableHandle: {
+ Root: TableHandle,
+ },
+ Generic: {
+ Form: {
+ Root: (props) => {props.children}
,
+ TextInput: TextInput,
+ },
+ Menu: {
+ Root: Menu,
+ Trigger: MenuTrigger,
+ Dropdown: MenuDropdown,
+ Divider: MenuDivider,
+ Label: MenuLabel,
+ Item: MenuItem,
+ },
+ Popover: {
+ Root: Popover,
+ Trigger: PopoverTrigger,
+ Content: PopoverContent,
+ },
+ },
+};
+
+const mantineTheme = {
+ // Removes button press effect
+ activeClassName: "",
+};
+
+export const BlockNoteView = <
+ BSchema extends BlockSchema,
+ ISchema extends InlineContentSchema,
+ SSchema extends StyleSchema
+>(
+ props: Omit<
+ ComponentProps>,
+ "theme"
+ > & {
+ theme?:
+ | "light"
+ | "dark"
+ | Theme
+ | {
+ light: Theme;
+ dark: Theme;
+ };
+ }
+) => {
+ const { theme, ...rest } = props;
+
+ const existingContext = useBlockNoteContext();
+ const systemColorScheme = usePrefersColorScheme();
+ const defaultColorScheme =
+ existingContext?.colorSchemePreference || systemColorScheme;
+
+ const ref = useCallback(
+ (node: HTMLDivElement | null) => {
+ if (!node) {
+ // todo: clean variables?
+ return;
+ }
+
+ removeBlockNoteCSSVariables(node);
+
+ if (typeof theme === "object") {
+ if ("light" in theme && "dark" in theme) {
+ applyBlockNoteCSSVariablesFromTheme(
+ theme[defaultColorScheme === "dark" ? "dark" : "light"],
+ node
+ );
+ return;
+ }
+
+ applyBlockNoteCSSVariablesFromTheme(theme, node);
+ return;
+ }
+ },
+ [defaultColorScheme, theme]
+ );
+
+ return (
+
+ {/* `cssVariablesSelector` scopes Mantine CSS variables to only the editor, */}
+ {/* as proposed here: https://github.com/orgs/mantinedev/discussions/5685 */}
+
+
+
+
+ );
+};
diff --git a/packages/react/src/editor/mantineStyles.css b/packages/mantine/src/mantineStyles.css
similarity index 100%
rename from packages/react/src/editor/mantineStyles.css
rename to packages/mantine/src/mantineStyles.css
diff --git a/packages/mantine/src/menu/Menu.tsx b/packages/mantine/src/menu/Menu.tsx
new file mode 100644
index 0000000000..12a3d67cc5
--- /dev/null
+++ b/packages/mantine/src/menu/Menu.tsx
@@ -0,0 +1,245 @@
+import * as Mantine from "@mantine/core";
+
+import { ComponentProps } from "@blocknote/react";
+import {
+ createContext,
+ forwardRef,
+ useCallback,
+ useContext,
+ useRef,
+ useState,
+} from "react";
+import { HiChevronRight } from "react-icons/hi";
+
+const SubMenuContext = createContext<
+ | {
+ onTriggerMouseOver: () => void;
+ onTriggerMouseLeave: () => void;
+ onMenuMouseOver: () => void;
+ onMenuMouseLeave: () => void;
+ }
+ | undefined
+>(undefined);
+
+// https://github.com/orgs/mantinedev/discussions/2307
+// Mantine does not officially support sub menus, so we have to use a workaround
+// which uses an unconventional nesting structure:
+//
+// Conventional nesting structure (used by Ariakit/ShadCN):
+//
+//
+// Find
+//
+//
+// Undo
+// Redo
+//
+//
+// Find
+//
+//
+// Find Next
+// Find Previous
+//
+//
+//
+//
+//
+// Required structure for Mantine:
+//
+//
+// Find
+//
+//
+// Undo
+// Redo
+//
+//
+//
+// Find
+//
+//
+// Find Next
+// Find Previous
+//
+//
+//
+//
+//
+const SubMenu = forwardRef<
+ HTMLDivElement,
+ ComponentProps["Generic"]["Menu"]["Root"]
+>((props, ref) => {
+ const {
+ children,
+ onOpenChange,
+ position,
+ // sub
+ } = props;
+ const [opened, setOpened] = useState(false);
+
+ const menuCloseTimer = useRef | undefined>();
+
+ const mouseLeave = useCallback(() => {
+ if (menuCloseTimer.current) {
+ clearTimeout(menuCloseTimer.current);
+ }
+ menuCloseTimer.current = setTimeout(() => {
+ setOpened(false);
+ }, 250);
+ }, []);
+
+ const mouseOver = useCallback(() => {
+ if (menuCloseTimer.current) {
+ clearTimeout(menuCloseTimer.current);
+ }
+
+ setOpened(true);
+ }, []);
+
+ return (
+
+
+ onOpenChange?.(false)}
+ onOpen={() => onOpenChange?.(true)}
+ position={position}>
+ {children}
+
+
+
+ );
+});
+
+export const Menu = (props: ComponentProps["Generic"]["Menu"]["Root"]) => {
+ const { children, onOpenChange, position, sub } = props;
+
+ if (sub) {
+ return ;
+ }
+
+ return (
+ onOpenChange?.(false)}
+ onOpen={() => onOpenChange?.(true)}
+ position={position}>
+ {children}
+
+ );
+};
+
+export const MenuItem = forwardRef<
+ HTMLDivElement,
+ ComponentProps["Generic"]["Menu"]["Item"]
+>((props, ref) => {
+ const { className, children, icon, checked, subTrigger, onClick, ...rest } =
+ props;
+
+ const ctx = useContext(SubMenuContext);
+
+ if (subTrigger) {
+ return (
+
+ {children}
+
+
+ );
+ }
+
+ const onMouseLeave = subTrigger ? ctx!.onTriggerMouseLeave : undefined;
+ const onMouseOver = subTrigger ? ctx!.onTriggerMouseOver : undefined;
+
+ return (
+
+ ) : checked === false ? (
+
+ ) : null
+ }
+ onMouseOver={onMouseOver}
+ onMouseLeave={onMouseLeave}
+ onClick={onClick}
+ {...rest}>
+ {children}
+
+ );
+});
+
+export const MenuTrigger = (
+ props: ComponentProps["Generic"]["Menu"]["Trigger"]
+) => {
+ const {
+ children,
+ // sub
+ } = props;
+
+ return {children} ;
+};
+
+export const MenuDropdown = forwardRef<
+ HTMLDivElement,
+ ComponentProps["Generic"]["Menu"]["Dropdown"]
+>((props, ref) => {
+ const {
+ className,
+ children,
+ // sub
+ } = props;
+
+ const ctx = useContext(SubMenuContext);
+
+ return (
+
+ {children}
+
+ );
+});
+
+export const MenuDivider = forwardRef<
+ HTMLDivElement,
+ ComponentProps["Generic"]["Menu"]["Divider"]
+>((props, ref) => {
+ const { className } = props;
+
+ return ;
+});
+
+export const MenuLabel = forwardRef<
+ HTMLDivElement,
+ ComponentProps["Generic"]["Menu"]["Label"]
+>((props, ref) => {
+ const { className, children } = props;
+
+ return (
+
+ {children}
+
+ );
+});
diff --git a/packages/mantine/src/panel/Panel.tsx b/packages/mantine/src/panel/Panel.tsx
new file mode 100644
index 0000000000..78a29f6231
--- /dev/null
+++ b/packages/mantine/src/panel/Panel.tsx
@@ -0,0 +1,47 @@
+import * as Mantine from "@mantine/core";
+
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const Panel = forwardRef<
+ HTMLDivElement,
+ ComponentProps["ImagePanel"]["Root"]
+>((props, ref) => {
+ const {
+ className,
+ tabs,
+ defaultOpenTab,
+ openTab,
+ setOpenTab,
+ loading,
+ // setLoading,
+ } = props;
+
+ return (
+
+
+ {loading && }
+
+
+ {tabs.map((tab) => (
+
+ {tab.name}
+
+ ))}
+
+
+ {tabs.map((tab) => (
+
+ {tab.tabPanel}
+
+ ))}
+
+
+ );
+});
diff --git a/packages/mantine/src/panel/PanelButton.tsx b/packages/mantine/src/panel/PanelButton.tsx
new file mode 100644
index 0000000000..37909ce62a
--- /dev/null
+++ b/packages/mantine/src/panel/PanelButton.tsx
@@ -0,0 +1,22 @@
+import * as Mantine from "@mantine/core";
+
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const PanelButton = forwardRef<
+ HTMLButtonElement,
+ ComponentProps["ImagePanel"]["Button"]
+>((props, ref) => {
+ const { className, children, onClick, ...rest } = props;
+
+ return (
+
+ {children}
+
+ );
+});
diff --git a/packages/mantine/src/panel/PanelFileInput.tsx b/packages/mantine/src/panel/PanelFileInput.tsx
new file mode 100644
index 0000000000..5c38c138a4
--- /dev/null
+++ b/packages/mantine/src/panel/PanelFileInput.tsx
@@ -0,0 +1,23 @@
+import * as Mantine from "@mantine/core";
+
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const PanelFileInput = forwardRef<
+ HTMLButtonElement,
+ ComponentProps["ImagePanel"]["FileInput"]
+>((props, ref) => {
+ const { className, value, placeholder, onChange, ...rest } = props;
+
+ return (
+
+ );
+});
diff --git a/packages/mantine/src/panel/PanelTab.tsx b/packages/mantine/src/panel/PanelTab.tsx
new file mode 100644
index 0000000000..58ed2aba46
--- /dev/null
+++ b/packages/mantine/src/panel/PanelTab.tsx
@@ -0,0 +1,15 @@
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const PanelTab = forwardRef<
+ HTMLDivElement,
+ ComponentProps["ImagePanel"]["TabPanel"]
+>((props, ref) => {
+ const { className, children } = props;
+
+ return (
+
+ {children}
+
+ );
+});
diff --git a/packages/mantine/src/panel/PanelTextInput.tsx b/packages/mantine/src/panel/PanelTextInput.tsx
new file mode 100644
index 0000000000..59f6f9b884
--- /dev/null
+++ b/packages/mantine/src/panel/PanelTextInput.tsx
@@ -0,0 +1,24 @@
+import * as Mantine from "@mantine/core";
+
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const PanelTextInput = forwardRef<
+ HTMLInputElement,
+ ComponentProps["ImagePanel"]["TextInput"]
+>((props, ref) => {
+ const { className, value, placeholder, onKeyDown, onChange } = props;
+
+ return (
+
+ );
+});
diff --git a/packages/mantine/src/popover/Popover.tsx b/packages/mantine/src/popover/Popover.tsx
new file mode 100644
index 0000000000..ccc1a74aeb
--- /dev/null
+++ b/packages/mantine/src/popover/Popover.tsx
@@ -0,0 +1,41 @@
+import * as Mantine from "@mantine/core";
+
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const Popover = (
+ props: ComponentProps["Generic"]["Popover"]["Root"]
+) => {
+ const { children, opened, position } = props;
+
+ return (
+
+ {children}
+
+ );
+};
+
+export const PopoverTrigger = (
+ props: ComponentProps["Generic"]["Popover"]["Trigger"]
+) => {
+ const { children } = props;
+
+ return {children} ;
+};
+
+export const PopoverContent = forwardRef<
+ HTMLDivElement,
+ ComponentProps["Generic"]["Popover"]["Content"]
+>((props, ref) => {
+ const { className, children } = props;
+
+ return (
+
+ {children}
+
+ );
+});
diff --git a/packages/mantine/src/sideMenu/SideMenu.tsx b/packages/mantine/src/sideMenu/SideMenu.tsx
new file mode 100644
index 0000000000..7a233730d8
--- /dev/null
+++ b/packages/mantine/src/sideMenu/SideMenu.tsx
@@ -0,0 +1,17 @@
+import * as Mantine from "@mantine/core";
+
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const SideMenu = forwardRef<
+ HTMLDivElement,
+ ComponentProps["SideMenu"]["Root"]
+>((props, ref) => {
+ const { className, children } = props;
+
+ return (
+
+ {children}
+
+ );
+});
diff --git a/packages/mantine/src/sideMenu/SideMenuButton.tsx b/packages/mantine/src/sideMenu/SideMenuButton.tsx
new file mode 100644
index 0000000000..329f0baf4f
--- /dev/null
+++ b/packages/mantine/src/sideMenu/SideMenuButton.tsx
@@ -0,0 +1,30 @@
+import * as Mantine from "@mantine/core";
+
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const SideMenuButton = forwardRef<
+ HTMLButtonElement,
+ ComponentProps["SideMenu"]["Button"]
+>((props, ref) => {
+ const { className, children, icon, onClick, ...rest } = props;
+
+ if (icon) {
+ return (
+
+ {icon}
+
+ );
+ }
+
+ return (
+
+ {children}
+
+ );
+});
diff --git a/packages/mantine/src/style.css b/packages/mantine/src/style.css
new file mode 100644
index 0000000000..dd22c7f316
--- /dev/null
+++ b/packages/mantine/src/style.css
@@ -0,0 +1,488 @@
+@import url("@blocknote/react/style.css");
+@import url("./mantineStyles.css");
+
+/* Mantine base styles*/
+
+/* Mantine Badge component base styles */
+.bn-container .mantine-Badge-root {
+ background-color: var(--bn-colors-tooltip-background);
+ color: var(--bn-colors-tooltip-text);
+}
+
+/* Mantine FileInput component base styles */
+.bn-container .mantine-FileInput-input {
+ align-items: center;
+ background-color: var(--bn-colors-menu-background);
+ border: none;
+ border-radius: 4px;
+ color: var(--bn-colors-menu-text);
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+}
+
+.bn-container .mantine-FileInput-input:hover {
+ background-color: var(--bn-colors-hovered-background);
+}
+
+.bn-container .mantine-FileInput-wrapper {
+ border: solid var(--bn-colors-border) 1px;
+ border-radius: 4px;
+}
+
+.bn-container .mantine-InputPlaceholder-placeholder {
+ color: var(--bn-colors-menu-text);
+ font-weight: 600;
+}
+
+/* Mantine Menu component base styles */
+.bn-container .mantine-Menu-dropdown {
+ background-color: var(--bn-colors-menu-background);
+ border: var(--bn-border);
+ border-radius: var(--bn-border-radius-medium);
+ box-shadow: var(--bn-shadow-medium);
+ box-sizing: border-box;
+ color: var(--bn-colors-menu-text);
+ padding: 2px;
+ overflow: auto;
+}
+
+.bn-container .mantine-Menu-label {
+ background-color: var(--bn-colors-menu-background);
+ color: var(--bn-colors-menu-text);
+}
+
+.bn-container .mantine-Menu-item {
+ background-color: var(--bn-colors-menu-background);
+ border: none;
+ border-radius: var(--bn-border-radius-small);
+ color: var(--bn-colors-menu-text);
+}
+
+.bn-container .mantine-Menu-item[data-hovered] {
+ background-color: var(--bn-colors-hovered-background);
+ border: none;
+ color: var(--bn-colors-hovered-text);
+}
+
+/* Mantine Popover component base styles */
+.bn-container .mantine-Popover-dropdown {
+ background-color: transparent;
+ border: none;
+ border-radius: 0;
+ box-shadow: none;
+ padding: 0;
+}
+
+/* Mantine Tabs component base styles */
+.bn-container .mantine-Tabs-root {
+ width: 100%;
+ background-color: var(--bn-colors-menu-background);
+}
+
+.bn-container .mantine-Tabs-list:before {
+ border-color: var(--bn-colors-hovered-background);
+}
+
+.bn-container .mantine-Tabs-tab {
+ color: var(--bn-colors-menu-text);
+ border-color: var(--bn-colors-hovered-background);
+}
+
+.bn-container .mantine-Tabs-tab:hover {
+ background-color: var(--bn-colors-hovered-background);
+ border-color: var(--bn-colors-hovered-background);
+ color: var(--bn-colors-hovered-text);
+}
+
+.bn-container .mantine-Tabs-tab[data-active],
+.bn-container .mantine-Tabs-tab[data-active]:hover {
+ border-color: var(--bn-colors-menu-text);
+ color: var(--bn-colors-menu-text);
+}
+
+.bn-container .mantine-Tabs-panel {
+ padding: 8px;
+}
+
+/* Mantine TextInput component base styles */
+.bn-container .mantine-TextInput-input {
+ background-color: var(--bn-colors-menu-background);
+ border: solid var(--bn-colors-border) 1px;
+ border-radius: 4px;
+ color: var(--bn-colors-menu-text);
+ height: 32px;
+}
+
+/* Mantine Tooltip component base styles */
+.bn-container .mantine-Tooltip-tooltip {
+ background-color: transparent;
+ border: none;
+ border-radius: 0;
+ box-shadow: none;
+ padding: 0;
+}
+
+/* UI element styling */
+
+/* Select styling */
+.bn-select {
+ overflow: auto;
+}
+
+/* Toolbar styling */
+.bn-toolbar {
+ background-color: var(--bn-colors-menu-background);
+ border: var(--bn-border);
+ border-radius: var(--bn-border-radius-medium);
+ box-shadow: var(--bn-shadow-medium);
+ flex-wrap: nowrap;
+ gap: 2px;
+ padding: 2px;
+ width: fit-content;
+}
+
+.bn-toolbar:empty {
+ display: none;
+}
+
+.bn-toolbar .mantine-Button-root,
+.bn-toolbar .mantine-ActionIcon-root {
+ background-color: var(--bn-colors-menu-background);
+ border: none;
+ border-radius: var(--bn-border-radius-small);
+ color: var(--bn-colors-menu-text);
+}
+
+.bn-toolbar .mantine-Button-root:hover,
+.bn-toolbar .mantine-ActionIcon-root:hover {
+ background-color: var(--bn-colors-hovered-background);
+ border: none;
+ color: var(--bn-colors-hovered-text);
+}
+
+.bn-toolbar .mantine-Button-root[data-selected],
+.bn-toolbar .mantine-ActionIcon-root[data-selected] {
+ background-color: var(--bn-colors-selected-background);
+ border: none;
+ color: var(--bn-colors-selected-text);
+}
+
+.bn-toolbar .mantine-Button-root[data-disabled],
+.bn-toolbar .mantine-ActionIcon-root[data-disabled] {
+ background-color: var(--bn-colors-disabled-background);
+ border: none;
+ color: var(--bn-colors-disabled-text);
+}
+
+.bn-toolbar .mantine-Menu-item {
+ font-size: 12px;
+ height: 30px;
+}
+
+.bn-toolbar .mantine-Menu-item:hover {
+ background-color: var(--bn-colors-hovered-background);
+}
+
+.bn-container .bn-form-popover {
+ background-color: var(--bn-colors-menu-background);
+ border: var(--bn-border);
+ border-radius: var(--bn-border-radius-medium);
+ box-shadow: var(--bn-shadow-medium);
+ color: var(--bn-colors-menu-text);
+ gap: 4px;
+ min-width: 145px;
+ padding: 2px;
+}
+
+.bn-form-popover .mantine-TextInput-root,
+.bn-form-popover .mantine-FileInput-root {
+ width: 300px;
+}
+
+.bn-form-popover .mantine-TextInput-wrapper,
+.bn-form-popover .mantine-FileInput-wrapper {
+ padding: 0;
+ border-radius: 4px;
+}
+
+.bn-form-popover .mantine-TextInput-wrapper:hover {
+ background-color: var(--bn-colors-hovered-background);
+}
+
+.bn-form-popover .mantine-TextInput-input,
+.bn-form-popover .mantine-FileInput-input {
+ border: none;
+ font-size: 12px;
+}
+
+.bn-form-popover .mantine-FileInput-input:hover {
+ background-color: var(--bn-colors-hovered-background);
+}
+
+.bn-form-popover .mantine-FileInput-section[data-position="left"] {
+ color: var(--bn-colors-menu-text);
+}
+
+.bn-form-popover .mantine-FileInput-placeholder {
+ color: var(--bn-colors-menu-text);
+}
+
+/* Suggestion Menu styling*/
+
+/* Base styles for Suggestion Menus, copied from the Mantine Menu component. */
+/* Unfortunately necessary, as we can't use a Menu.Dropdown component on its
+ own. */
+/* https://github.com/mantinedev/mantine/blob/e3e3bb834de1f2f75a27dbc757dc0a2fc6a6cba8/packages/%40mantine/core/src/components/Menu/Menu.module.css */
+.bn-suggestion-menu {
+ max-height: 100%;
+ position: relative;
+ box-shadow: var(--mantine-shadow-md);
+ border: calc(0.0625rem * var(--mantine-scale)) solid
+ var(--mantine-color-gray-2);
+ border-radius: var(--mantine-radius-default);
+ padding: 4px;
+}
+
+.bn-suggestion-menu-label {
+ color: var(--mantine-color-dimmed);
+ font-weight: 500;
+ font-size: var(--mantine-font-size-xs);
+ padding: calc(var(--mantine-spacing-xs) / 2) var(--mantine-spacing-sm);
+ cursor: default;
+}
+
+.bn-suggestion-menu-item {
+ font-size: var(--mantine-font-size-sm);
+ width: 100%;
+ padding: calc(var(--mantine-spacing-xs) / 1.5) var(--mantine-spacing-sm);
+ border-radius: var(--popover-radius, var(--mantine-radius-default));
+ color: var(--menu-item-color, var(--mantine-color-text));
+ display: flex;
+ align-items: center;
+ user-select: none;
+
+ &:where([data-disabled], :disabled) {
+ color: var(--mantine-color-dimmed);
+ opacity: 0.6;
+ pointer-events: none;
+ }
+
+ &:where([data-hovered]) {
+ }
+}
+
+/* Additional Suggestion Menu styling*/
+.bn-mt-suggestion-menu-item-body {
+ flex: 1;
+}
+
+.bn-mt-suggestion-menu-item-section {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+ &:where([data-position="left"]) {
+ margin-inline-end: var(--mantine-spacing-xs);
+ }
+
+ &:where([data-position="right"]) {
+ margin-inline-start: var(--mantine-spacing-xs);
+ }
+}
+
+.bn-suggestion-menu {
+ background-color: var(--bn-colors-menu-background);
+ border: var(--bn-border);
+ border-radius: var(--bn-border-radius-medium);
+ box-shadow: var(--bn-shadow-medium);
+ box-sizing: border-box;
+ color: var(--bn-colors-menu-text);
+ overflow-y: auto;
+ padding: 2px;
+}
+
+.bn-suggestion-menu-item {
+ cursor: pointer;
+ height: 52px;
+}
+
+.bn-suggestion-menu-item[data-hovered] {
+ background-color: var(--bn-colors-hovered-background);
+}
+
+.bn-mt-suggestion-menu-item-section {
+ color: var(--bn-colors-tooltip-text);
+}
+
+.bn-mt-suggestion-menu-item-section[data-position="left"] {
+ background-color: var(--bn-colors-tooltip-background);
+ border-radius: var(--bn-border-radius-small);
+ padding: 8px;
+}
+
+.bn-mt-suggestion-menu-item-body {
+ align-items: stretch;
+ color: var(--bn-colors-menu-text);
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ justify-content: flex-start;
+ padding-right: 16px;
+}
+
+.bn-mt-suggestion-menu-item-title {
+ line-height: 20px;
+ font-weight: 500;
+ font-size: 14px;
+ margin: 0;
+ padding: 0;
+}
+
+.bn-mt-suggestion-menu-item-subtitle {
+ line-height: 16px;
+ font-size: 10px;
+ margin: 0;
+ padding: 0;
+}
+
+.bn-suggestion-menu-label {
+ color: var(--bn-colors-hovered-text);
+}
+
+.bn-suggestion-menu-loader {
+ height: 20px;
+ width: 100%;
+}
+
+.bn-suggestion-menu-loader span {
+ background-color: var(--bn-colors-side-menu);
+}
+
+/* Side Menu styling */
+.bn-side-menu {
+ background-color: transparent;
+ overflow: visible;
+}
+
+.bn-side-menu .mantine-Menu-item, .bn-table-handle-menu .mantine-Menu-item {
+ font-size: 12px;
+ height: 30px;
+}
+
+.bn-side-menu .mantine-UnstyledButton-root:not(.mantine-Menu-item) {
+ background-color: transparent;
+}
+
+.bn-side-menu .mantine-UnstyledButton-root:hover {
+ background-color: var(--bn-colors-hovered-background);
+}
+
+.bn-side-menu .mantine-UnstyledButton-root:not(.mantine-Menu-item) svg {
+ background-color: transparent;
+ color: var(--bn-colors-side-menu);
+ height: 22px;
+ width: 22px;
+}
+
+.bn-side-menu > [draggable="true"] {
+ display: flex;
+}
+
+.bn-side-menu .mantine-Menu-dropdown {
+ min-width: 100px;
+ padding: 2px;
+ position: absolute;
+}
+
+/* Image Panel styling*/
+.bn-panel {
+ background-color: var(--bn-colors-menu-background);
+ border: var(--bn-border);
+ border-radius: var(--bn-border-radius-medium);
+ box-shadow: var(--bn-shadow-medium);
+ padding: 2px;
+ width: 500px;
+}
+
+.bn-panel .bn-tab-panel {
+ align-items: center;
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+ width: 100%;
+}
+
+.bn-panel .mantine-TextInput-root,
+.bn-panel .mantine-FileInput-root {
+ width: 100%;
+}
+
+.bn-panel .mantine-Button-root {
+ background-color: var(--bn-colors-menu-background);
+ border: solid var(--bn-colors-border) 1px;
+ border-radius: var(--bn-border-radius-small);
+ color: var(--bn-colors-menu-text);
+ height: 32px;
+ width: 60%;
+}
+
+.bn-panel .mantine-Button-root:hover {
+ background-color: var(--bn-colors-hovered-background);
+}
+
+.bn-panel.mantine-Text-root {
+ text-align: center;
+}
+
+/* Table Handle styling */
+.bn-table-handle {
+ align-items: center;
+ background-color: var(--bn-colors-menu-background);
+ border: var(--bn-border);
+ border-radius: var(--bn-border-radius-small);
+ box-shadow: var(--bn-shadow-light);
+ color: var(--bn-colors-side-menu);
+ cursor: pointer;
+ display: flex;
+ justify-content: center;
+ overflow: visible;
+ padding: 0;
+}
+
+.bn-table-handle svg {
+ margin-inline: -4px;
+}
+
+.bn-table-handle:hover,
+.bn-table-handle-dragging {
+ background-color: var(--bn-colors-hovered-background);
+}
+
+/* Drag Handle & Table Handle Menu styling */
+.bn-container .bn-drag-handle-menu {
+ overflow: visible;
+}
+
+/* Tooltip styling */
+.bn-tooltip {
+ background-color: var(--bn-colors-tooltip-background);
+ border: var(--bn-border);
+ border-radius: var(--bn-border-radius-medium);
+ box-shadow: var(--bn-shadow-medium);
+ color: var(--bn-colors-tooltip-text);
+ padding: 4px 10px;
+ text-align: center;
+}
+
+/* Additional menu styles */
+.bn-tick-space {
+ padding: 0;
+ width: 20px;
+}
+
+.bn-mt-sub-menu-item > .mantine-Menu-itemLabel > div:not(.mantine-Menu-dropdown) {
+ align-items: center;
+ display: flex;
+ justify-content: space-between;
+}
diff --git a/packages/mantine/src/suggestionMenu/SuggestionMenu.tsx b/packages/mantine/src/suggestionMenu/SuggestionMenu.tsx
new file mode 100644
index 0000000000..4c0e5a6db7
--- /dev/null
+++ b/packages/mantine/src/suggestionMenu/SuggestionMenu.tsx
@@ -0,0 +1,17 @@
+import * as Mantine from "@mantine/core";
+
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const SuggestionMenu = forwardRef<
+ HTMLDivElement,
+ ComponentProps["SuggestionMenu"]["Root"]
+>((props, ref) => {
+ const { className, children } = props;
+
+ return (
+
+ {children}
+
+ );
+});
diff --git a/packages/mantine/src/suggestionMenu/SuggestionMenuEmptyItem.tsx b/packages/mantine/src/suggestionMenu/SuggestionMenuEmptyItem.tsx
new file mode 100644
index 0000000000..3e88792d86
--- /dev/null
+++ b/packages/mantine/src/suggestionMenu/SuggestionMenuEmptyItem.tsx
@@ -0,0 +1,19 @@
+import * as Mantine from "@mantine/core";
+
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const SuggestionMenuEmptyItem = forwardRef<
+ HTMLDivElement,
+ ComponentProps["SuggestionMenu"]["EmptyItem"]
+>((props, ref) => {
+ const { className, children } = props;
+
+ return (
+
+
+ {children}
+
+
+ );
+});
diff --git a/packages/mantine/src/suggestionMenu/SuggestionMenuItem.tsx b/packages/mantine/src/suggestionMenu/SuggestionMenuItem.tsx
new file mode 100644
index 0000000000..bc622bb073
--- /dev/null
+++ b/packages/mantine/src/suggestionMenu/SuggestionMenuItem.tsx
@@ -0,0 +1,67 @@
+import * as Mantine from "@mantine/core";
+
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef, useCallback } from "react";
+
+export const SuggestionMenuItem = forwardRef<
+ HTMLDivElement,
+ ComponentProps["SuggestionMenu"]["Item"]
+>((props, ref) => {
+ const {
+ className,
+ title,
+ subtext,
+ // group,
+ icon,
+ badge,
+ // aliases,
+ // onItemClick,
+ isSelected,
+ setSelected,
+ onClick,
+ } = props;
+
+ const handleMouseLeave = useCallback(() => {
+ setSelected?.(false);
+ }, [setSelected]);
+
+ const handleMouseEnter = useCallback(() => {
+ setSelected?.(true);
+ }, [setSelected]);
+
+ return (
+
+ {icon && (
+
+ {icon}
+
+ )}
+
+
+ {title}
+
+
+ {subtext}
+
+
+ {badge && (
+
+ {badge}
+
+ )}
+
+ );
+});
diff --git a/packages/mantine/src/suggestionMenu/SuggestionMenuLabel.tsx b/packages/mantine/src/suggestionMenu/SuggestionMenuLabel.tsx
new file mode 100644
index 0000000000..9c7178cc9b
--- /dev/null
+++ b/packages/mantine/src/suggestionMenu/SuggestionMenuLabel.tsx
@@ -0,0 +1,17 @@
+import * as Mantine from "@mantine/core";
+
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const SuggestionMenuLabel = forwardRef<
+ HTMLDivElement,
+ ComponentProps["SuggestionMenu"]["Label"]
+>((props, ref) => {
+ const { className, children } = props;
+
+ return (
+
+ {children}
+
+ );
+});
diff --git a/packages/mantine/src/suggestionMenu/SuggestionMenuLoader.tsx b/packages/mantine/src/suggestionMenu/SuggestionMenuLoader.tsx
new file mode 100644
index 0000000000..252a2682db
--- /dev/null
+++ b/packages/mantine/src/suggestionMenu/SuggestionMenuLoader.tsx
@@ -0,0 +1,16 @@
+import * as Mantine from "@mantine/core";
+
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const SuggestionMenuLoader = forwardRef<
+ HTMLDivElement,
+ ComponentProps["SuggestionMenu"]["Loader"]
+>((props, ref) => {
+ const {
+ className,
+ // children
+ } = props;
+
+ return ;
+});
diff --git a/packages/mantine/src/tableHandle/TableHandle.tsx b/packages/mantine/src/tableHandle/TableHandle.tsx
new file mode 100644
index 0000000000..08ed50271e
--- /dev/null
+++ b/packages/mantine/src/tableHandle/TableHandle.tsx
@@ -0,0 +1,30 @@
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const TableHandle = forwardRef<
+ HTMLButtonElement,
+ ComponentProps["TableHandle"]["Root"]
+>((props, ref) => {
+ const {
+ className,
+ children,
+ draggable,
+ onDragStart,
+ onDragEnd,
+ style,
+ ...rest
+ } = props;
+
+ return (
+
+ {children}
+
+ );
+});
diff --git a/packages/mantine/src/toolbar/Toolbar.tsx b/packages/mantine/src/toolbar/Toolbar.tsx
new file mode 100644
index 0000000000..1ab8f33a64
--- /dev/null
+++ b/packages/mantine/src/toolbar/Toolbar.tsx
@@ -0,0 +1,23 @@
+import * as Mantine from "@mantine/core";
+
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+type ToolbarProps = ComponentProps["FormattingToolbar"]["Root"] &
+ ComponentProps["LinkToolbar"]["Root"];
+
+export const Toolbar = forwardRef(
+ (props, ref) => {
+ const { className, children, onMouseEnter, onMouseLeave } = props;
+
+ return (
+
+ {children}
+
+ );
+ }
+);
diff --git a/packages/mantine/src/toolbar/ToolbarButton.tsx b/packages/mantine/src/toolbar/ToolbarButton.tsx
new file mode 100644
index 0000000000..d6a6ccfe5d
--- /dev/null
+++ b/packages/mantine/src/toolbar/ToolbarButton.tsx
@@ -0,0 +1,97 @@
+import * as Mantine from "@mantine/core";
+
+import { isSafari } from "@blocknote/core";
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+
+export const TooltipContent = (props: {
+ mainTooltip: string;
+ secondaryTooltip?: string;
+}) => (
+
+ {props.mainTooltip}
+ {props.secondaryTooltip && (
+ {props.secondaryTooltip}
+ )}
+
+);
+
+type ToolbarButtonProps = ComponentProps["FormattingToolbar"]["Button"] &
+ ComponentProps["LinkToolbar"]["Button"];
+
+/**
+ * Helper for basic buttons that show in the formatting toolbar.
+ */
+export const ToolbarButton = forwardRef(
+ (props, ref) => {
+ const {
+ className,
+ children,
+ mainTooltip,
+ secondaryTooltip,
+ icon,
+ isSelected,
+ isDisabled,
+ onClick,
+ ...rest
+ } = props;
+
+ return (
+
+ }>
+ {/*Creates an ActionIcon instead of a Button if only an icon is provided as content.*/}
+ {children ? (
+ {
+ if (isSafari()) {
+ (e.currentTarget as HTMLButtonElement).focus();
+ }
+ }}
+ onClick={onClick}
+ data-selected={isSelected ? "true" : undefined}
+ data-test={
+ mainTooltip.slice(0, 1).toLowerCase() +
+ mainTooltip.replace(/\s+/g, "").slice(1)
+ }
+ size={"xs"}
+ disabled={isDisabled || false}
+ ref={ref}
+ {...rest}>
+ {children}
+
+ ) : (
+ {
+ if (isSafari()) {
+ (e.currentTarget as HTMLButtonElement).focus();
+ }
+ }}
+ onClick={onClick}
+ data-selected={isSelected ? "true" : undefined}
+ data-test={
+ mainTooltip.slice(0, 1).toLowerCase() +
+ mainTooltip.replace(/\s+/g, "").slice(1)
+ }
+ size={30}
+ disabled={isDisabled || false}
+ ref={ref}
+ {...rest}>
+ {icon}
+
+ )}
+
+ );
+ }
+);
diff --git a/packages/mantine/src/toolbar/ToolbarSelect.tsx b/packages/mantine/src/toolbar/ToolbarSelect.tsx
new file mode 100644
index 0000000000..968decb9ab
--- /dev/null
+++ b/packages/mantine/src/toolbar/ToolbarSelect.tsx
@@ -0,0 +1,67 @@
+import * as Mantine from "@mantine/core";
+
+import { isSafari } from "@blocknote/core";
+import { ComponentProps } from "@blocknote/react";
+import { forwardRef } from "react";
+import { HiChevronDown } from "react-icons/hi";
+
+// TODO: Turn into select?
+export const ToolbarSelect = forwardRef<
+ HTMLDivElement,
+ ComponentProps["FormattingToolbar"]["Select"]
+>((props, ref) => {
+ const { className, items, isDisabled } = props;
+
+ const selectedItem = items.filter((p) => p.isSelected)[0];
+
+ if (!selectedItem) {
+ return null;
+ }
+
+ return (
+
+
+ {
+ if (isSafari()) {
+ (e.currentTarget as HTMLButtonElement).focus();
+ }
+ }}
+ leftSection={selectedItem.icon}
+ rightSection={ }
+ size={"xs"}
+ variant={"subtle"}
+ disabled={isDisabled}>
+ {selectedItem.text}
+
+
+
+ {items.map((item) => (
+
+ ) : (
+ // Ensures space for tick even if item isn't currently selected.
+
+ )
+ }
+ disabled={item.isDisabled}>
+ {item.text}
+
+ ))}
+
+
+ );
+});
diff --git a/packages/mantine/tsconfig.json b/packages/mantine/tsconfig.json
new file mode 100644
index 0000000000..607ad93cfa
--- /dev/null
+++ b/packages/mantine/tsconfig.json
@@ -0,0 +1,32 @@
+{
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "module": "ESNext",
+ "lib": ["ESNext", "DOM"],
+ "moduleResolution": "Node",
+ "jsx": "react-jsx",
+ "strict": true,
+ "sourceMap": true,
+ "resolveJsonModule": true,
+ "esModuleInterop": true,
+ "noEmit": false,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noImplicitReturns": true,
+ "outDir": "dist",
+ "declaration": true,
+ "declarationDir": "types",
+ "composite": true,
+ "skipLibCheck": true,
+ },
+ "include": ["src"],
+ "references": [
+ {
+ "path": "../core"
+ },
+ {
+ "path": "../react"
+ }
+ ]
+}
diff --git a/packages/mantine/vite.config.ts b/packages/mantine/vite.config.ts
new file mode 100644
index 0000000000..0e9e1ed2f5
--- /dev/null
+++ b/packages/mantine/vite.config.ts
@@ -0,0 +1,52 @@
+import react from "@vitejs/plugin-react";
+import * as path from "path";
+import { webpackStats } from "rollup-plugin-webpack-stats";
+import { defineConfig } from "vite";
+import pkg from "./package.json";
+// import eslintPlugin from "vite-plugin-eslint";
+
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ test: {
+ environment: "jsdom",
+ setupFiles: ["./vitestSetup.ts"],
+ },
+ plugins: [react(), webpackStats()],
+ // used so that vitest resolves the core package from the sources instead of the built version
+ resolve: {
+ alias:
+ conf.command === "build"
+ ? ({} as Record)
+ : ({
+ // load live from sources with live reload working
+ "@blocknote/core": path.resolve(__dirname, "../core/src/"),
+ "@blocknote/react": path.resolve(__dirname, "../react/src/"),
+ } as Record),
+ },
+ build: {
+ sourcemap: true,
+ lib: {
+ entry: path.resolve(__dirname, "src/index.tsx"),
+ name: "blocknote-mantine",
+ fileName: "blocknote-mantine",
+ },
+ rollupOptions: {
+ // make sure to externalize deps that shouldn't be bundled
+ // into your library
+ external: Object.keys({
+ ...pkg.dependencies,
+ ...pkg.peerDependencies,
+ ...pkg.devDependencies,
+ }),
+ output: {
+ // Provide global variables to use in the UMD build
+ // for externalized deps
+ globals: {
+ react: "React",
+ "react-dom": "ReactDOM",
+ },
+ interop: "compat", // https://rollupjs.org/migration/#changed-defaults
+ },
+ },
+ },
+}));
diff --git a/packages/react/package.json b/packages/react/package.json
index 09442665d3..001e68e5a6 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -50,6 +50,7 @@
"clean": "rimraf dist && rimraf types"
},
"dependencies": {
+ "@ariakit/react": "^0.4.3",
"@blocknote/core": "^0.12.4",
"@floating-ui/react": "^0.26.4",
"@mantine/core": "^7.7.1",
@@ -59,7 +60,7 @@
"@tiptap/react": "^2.0.3",
"lodash.merge": "^4.6.2",
"react": "^18",
- "react-dom": "^18.2.0",
+ "react-dom": "^18",
"react-icons": "^4.3.1",
"use-prefers-color-scheme": "^1.1.3"
},
diff --git a/packages/react/src/components/mantine-shared/ColorPicker/ColorIcon.tsx b/packages/react/src/components/ColorPicker/ColorIcon.tsx
similarity index 59%
rename from packages/react/src/components/mantine-shared/ColorPicker/ColorIcon.tsx
rename to packages/react/src/components/ColorPicker/ColorIcon.tsx
index 725bd17b33..05eaaf7616 100644
--- a/packages/react/src/components/mantine-shared/ColorPicker/ColorIcon.tsx
+++ b/packages/react/src/components/ColorPicker/ColorIcon.tsx
@@ -1,4 +1,3 @@
-import { Box, MantineStyleProp } from "@mantine/core";
import { useMemo } from "react";
export const ColorIcon = (
@@ -12,25 +11,26 @@ export const ColorIcon = (
const backgroundColor = props.backgroundColor || "default";
const size = props.size || 16;
- const style: MantineStyleProp = useMemo(
- () => ({
- pointerEvents: "none",
- fontSize: (size * 0.75).toString() + "px",
- height: size.toString() + "px",
- lineHeight: size.toString() + "px",
- textAlign: "center",
- width: size.toString() + "px",
- }),
+ const style = useMemo(
+ () =>
+ ({
+ pointerEvents: "none",
+ fontSize: (size * 0.75).toString() + "px",
+ height: size.toString() + "px",
+ lineHeight: size.toString() + "px",
+ textAlign: "center",
+ width: size.toString() + "px",
+ } as const),
[size]
);
return (
-
A
-
+
);
};
diff --git a/packages/react/src/components/ColorPicker/ColorPicker.tsx b/packages/react/src/components/ColorPicker/ColorPicker.tsx
new file mode 100644
index 0000000000..51d3e33534
--- /dev/null
+++ b/packages/react/src/components/ColorPicker/ColorPicker.tsx
@@ -0,0 +1,82 @@
+import { useComponentsContext } from "../../editor/ComponentsContext";
+import { useDictionary } from "../../i18n/dictionary";
+import { ColorIcon } from "./ColorIcon";
+
+const colors = [
+ "default",
+ "gray",
+ "brown",
+ "red",
+ "orange",
+ "yellow",
+ "green",
+ "blue",
+ "purple",
+ "pink",
+] as const;
+
+export const ColorPicker = (props: {
+ onClick?: () => void;
+ iconSize?: number;
+ text?: {
+ color: string;
+ setColor: (color: string) => void;
+ };
+ background?: {
+ color: string;
+ setColor: (color: string) => void;
+ };
+}) => {
+ const Components = useComponentsContext()!;
+ const dict = useDictionary();
+ const TextColorSection = () =>
+ props.text ? (
+ <>
+
+ {dict.color_picker.text_title}
+
+ {colors.map((color) => (
+ {
+ props.onClick && props.onClick();
+ props.text!.setColor(color);
+ }}
+ data-test={"text-color-" + color}
+ icon={ }
+ checked={props.text!.color === color}
+ key={"text-color-" + color}>
+ {dict.color_picker.colors[color]}
+
+ ))}
+ >
+ ) : null;
+
+ const BackgroundColorSection = () =>
+ props.background ? (
+ <>
+
+ {dict.color_picker.background_title}
+
+ {colors.map((color) => (
+ {
+ props.onClick && props.onClick();
+ props.background!.setColor(color);
+ }}
+ data-test={"background-color-" + color}
+ icon={ }
+ key={"background-color-" + color}
+ checked={props.background!.color === color}>
+ {dict.color_picker.colors[color]}
+
+ ))}
+ >
+ ) : null;
+
+ return (
+ <>
+
+
+ >
+ );
+};
diff --git a/packages/react/src/components/FormattingToolbar/mantine/DefaultButtons/BasicTextStyleButton.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/BasicTextStyleButton.tsx
similarity index 71%
rename from packages/react/src/components/FormattingToolbar/mantine/DefaultButtons/BasicTextStyleButton.tsx
rename to packages/react/src/components/FormattingToolbar/DefaultButtons/BasicTextStyleButton.tsx
index 1f5d58bd93..82896ea036 100644
--- a/packages/react/src/components/FormattingToolbar/mantine/DefaultButtons/BasicTextStyleButton.tsx
+++ b/packages/react/src/components/FormattingToolbar/DefaultButtons/BasicTextStyleButton.tsx
@@ -15,10 +15,11 @@ import {
RiUnderline,
} from "react-icons/ri";
-import { useBlockNoteEditor } from "../../../../hooks/useBlockNoteEditor";
-import { useEditorContentOrSelectionChange } from "../../../../hooks/useEditorContentOrSelectionChange";
-import { useSelectedBlocks } from "../../../../hooks/useSelectedBlocks";
-import { ToolbarButton } from "../../../mantine-shared/Toolbar/ToolbarButton";
+import { useComponentsContext } from "../../../editor/ComponentsContext";
+import { useBlockNoteEditor } from "../../../hooks/useBlockNoteEditor";
+import { useEditorContentOrSelectionChange } from "../../../hooks/useEditorContentOrSelectionChange";
+import { useSelectedBlocks } from "../../../hooks/useSelectedBlocks";
+import { useDictionary } from "../../../i18n/dictionary";
type BasicTextStyle = "bold" | "italic" | "underline" | "strike" | "code";
@@ -30,17 +31,9 @@ const icons = {
code: RiCodeFill,
} satisfies Record;
-const shortcuts = {
- bold: "Mod+B",
- italic: "Mod+I",
- underline: "Mod+U",
- strike: "Mod+Shift+X",
- code: "",
-} satisfies Record;
-
function checkBasicTextStyleInSchema