diff --git a/packages/code-block/package.json b/packages/code-block/package.json index 9b4301ffa4..ef4f712466 100644 --- a/packages/code-block/package.json +++ b/packages/code-block/package.json @@ -49,11 +49,12 @@ "test-watch": "vitest watch" }, "dependencies": { - "@blocknote/core": "0.51.3", "@shikijs/core": "^4", "@shikijs/engine-javascript": "^4", "@shikijs/langs-precompiled": "^4", - "@shikijs/themes": "^4", + "@shikijs/themes": "^4" + }, + "optionalDependencies": { "@shikijs/types": "^4" }, "devDependencies": { diff --git a/packages/core/package.json b/packages/core/package.json index 9713075085..05f41057d1 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -97,9 +97,7 @@ "@tiptap/core": "^3.13.0", "@tiptap/extension-bold": "^3.13.0", "@tiptap/extension-code": "^3.13.0", - "@tiptap/extension-horizontal-rule": "^3.13.0", "@tiptap/extension-italic": "^3.13.0", - "@tiptap/extension-paragraph": "^3.13.0", "@tiptap/extension-strike": "^3.13.0", "@tiptap/extension-text": "^3.13.0", "@tiptap/extension-underline": "^3.13.0", @@ -107,7 +105,6 @@ "@tiptap/pm": "^3.13.0", "emoji-mart": "^5.6.0", "fast-deep-equal": "^3.1.3", - "lib0": "^0.2.99", "prosemirror-highlight": "^0.15.1", "prosemirror-model": "^1.25.4", "prosemirror-state": "^1.4.4", diff --git a/packages/core/src/comments/threadstore/yjs/YjsThreadStore.test.ts b/packages/core/src/comments/threadstore/yjs/YjsThreadStore.test.ts index b73b7c1ec8..c7be2f203c 100644 --- a/packages/core/src/comments/threadstore/yjs/YjsThreadStore.test.ts +++ b/packages/core/src/comments/threadstore/yjs/YjsThreadStore.test.ts @@ -1,15 +1,18 @@ -import { beforeEach, describe, expect, it, vi } from "vitest"; +import { afterAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as Y from "yjs"; import { CommentBody } from "../../types.js"; import { DefaultThreadStoreAuth } from "../DefaultThreadStoreAuth.js"; import { YjsThreadStore } from "./YjsThreadStore.js"; -// Mock UUID to generate sequential IDs +// Mock crypto.randomUUID to generate sequential IDs let mockUuidCounter = 0; -vi.mock("lib0/random", async (importOriginal) => ({ - ...(await importOriginal()), - uuidv4: () => `mocked-uuid-${++mockUuidCounter}`, -})); +const randomUUIDSpy = vi.spyOn(crypto, "randomUUID").mockImplementation( + () => `mocked-uuid-${++mockUuidCounter}` as `${string}-${string}-${string}-${string}-${string}`, +); + +afterAll(() => { + randomUUIDSpy.mockRestore(); +}); describe("YjsThreadStore", () => { let store: YjsThreadStore; diff --git a/packages/core/src/comments/threadstore/yjs/YjsThreadStore.ts b/packages/core/src/comments/threadstore/yjs/YjsThreadStore.ts index f9754c6063..6d7a18fd1f 100644 --- a/packages/core/src/comments/threadstore/yjs/YjsThreadStore.ts +++ b/packages/core/src/comments/threadstore/yjs/YjsThreadStore.ts @@ -1,4 +1,3 @@ -import { uuidv4 } from "lib0/random"; import * as Y from "yjs"; import { CommentBody, CommentData, ThreadData } from "../../types.js"; import { ThreadStoreAuth } from "../ThreadStoreAuth.js"; @@ -57,7 +56,7 @@ export class YjsThreadStore extends YjsThreadStoreBase { const comment: CommentData = { type: "comment", - id: uuidv4(), + id: crypto.randomUUID(), userId: this.userId, createdAt: date, updatedAt: date, @@ -68,7 +67,7 @@ export class YjsThreadStore extends YjsThreadStoreBase { const thread: ThreadData = { type: "thread", - id: uuidv4(), + id: crypto.randomUUID(), createdAt: date, updatedAt: date, comments: [comment], @@ -105,7 +104,7 @@ export class YjsThreadStore extends YjsThreadStoreBase { const date = new Date(); const comment: CommentData = { type: "comment", - id: uuidv4(), + id: crypto.randomUUID(), userId: this.userId, createdAt: date, updatedAt: date, diff --git a/packages/core/src/extensions/Placeholder/Placeholder.ts b/packages/core/src/extensions/Placeholder/Placeholder.ts index b8ff2e14ed..37556e5ecd 100644 --- a/packages/core/src/extensions/Placeholder/Placeholder.ts +++ b/packages/core/src/extensions/Placeholder/Placeholder.ts @@ -1,6 +1,6 @@ import { Plugin, PluginKey } from "prosemirror-state"; import { Decoration, DecorationSet } from "prosemirror-view"; -import { uuidv4 } from "lib0/random"; + import { createExtension, ExtensionOptions, @@ -23,7 +23,7 @@ export const PlaceholderExtension = createExtension( new Plugin({ key: PLUGIN_KEY, view: (view) => { - const uniqueEditorSelector = `placeholder-selector-${uuidv4()}`; + const uniqueEditorSelector = `placeholder-selector-${crypto.randomUUID()}`; view.dom.classList.add(uniqueEditorSelector); const styleEl = document.createElement("style"); diff --git a/packages/core/src/extensions/tiptap-extensions/UniqueID/UniqueID.ts b/packages/core/src/extensions/tiptap-extensions/UniqueID/UniqueID.ts index a3ce6f3828..2088870098 100644 --- a/packages/core/src/extensions/tiptap-extensions/UniqueID/UniqueID.ts +++ b/packages/core/src/extensions/tiptap-extensions/UniqueID/UniqueID.ts @@ -6,7 +6,7 @@ import { } from "@tiptap/core"; import { Fragment, Slice } from "prosemirror-model"; import { Plugin, PluginKey } from "prosemirror-state"; -import { uuidv4 } from "lib0/random"; + /** * Code from Tiptap UniqueID extension (https://tiptap.dev/api/extensions/unique-id) @@ -65,7 +65,7 @@ const UniqueID = Extension.create({ return testOptions.mockID.toString() as string; } - return uuidv4(); + return crypto.randomUUID(); }, filterTransaction: null, }; diff --git a/packages/mantine/package.json b/packages/mantine/package.json index db7dbdce23..7f10fa38f3 100644 --- a/packages/mantine/package.json +++ b/packages/mantine/package.json @@ -62,10 +62,10 @@ }, "dependencies": { "@blocknote/core": "0.51.3", - "@blocknote/react": "0.51.3", - "react-icons": "^5.5.0" + "@blocknote/react": "0.51.3" }, "devDependencies": { + "react-icons": "^5.5.0", "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", diff --git a/packages/mantine/vite.config.ts b/packages/mantine/vite.config.ts index db1342b975..6a44bf5424 100644 --- a/packages/mantine/vite.config.ts +++ b/packages/mantine/vite.config.ts @@ -45,6 +45,16 @@ export default defineConfig((conf) => ({ // make sure to externalize deps that shouldn't be bundled // into your library external: (source) => { + // Bundle react-icons into the output (tree-shaken) so consumers + // don't need to install it as a peer/runtime dependency. + const bundledDeps = ["react-icons"]; + if ( + bundledDeps.some( + (dep) => source === dep || source.startsWith(dep + "/") + ) + ) { + return false; + } if ( Object.keys({ ...pkg.dependencies, diff --git a/packages/react/package.json b/packages/react/package.json index 2903e18c55..53fb808a96 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -61,22 +61,18 @@ "@blocknote/core": "0.51.3", "@emoji-mart/data": "^1.2.1", "@floating-ui/react": "^0.27.18", - "@floating-ui/utils": "^0.2.10", "@tanstack/react-store": "0.7.7", "@tiptap/core": "^3.13.0", "@tiptap/pm": "^3.13.0", "@tiptap/react": "^3.13.0", - "@types/use-sync-external-store": "1.5.0", "emoji-mart": "^5.6.0", "fast-deep-equal": "^3.1.3", - "lodash.merge": "^4.6.2", - "react-icons": "^5.5.0", "use-sync-external-store": "1.6.0" }, "devDependencies": { "@types/lodash.foreach": "^4.5.9", "@types/lodash.groupby": "^4.6.9", - "@types/lodash.merge": "^4.6.9", + "react-icons": "^5.5.0", "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", @@ -91,6 +87,9 @@ "vite-plugin-externalize-deps": "^0.10.0", "vitest": "^4.1.2" }, + "optionalDependencies": { + "@types/use-sync-external-store": "1.5.0" + }, "peerDependencies": { "react": "^18.0 || ^19.0 || >= 19.0.0-rc", "react-dom": "^18.0 || ^19.0 || >= 19.0.0-rc" diff --git a/packages/react/src/components/FormattingToolbar/DefaultButtons/BasicTextStyleButton.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/BasicTextStyleButton.tsx index f2ae1e9ac6..66de89fe49 100644 --- a/packages/react/src/components/FormattingToolbar/DefaultButtons/BasicTextStyleButton.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultButtons/BasicTextStyleButton.tsx @@ -6,7 +6,7 @@ import { formatKeyboardShortcut, } from "@blocknote/core"; import { useCallback } from "react"; -import { IconType } from "react-icons"; +import type { IconType } from "../../../icons.js"; import { RiBold, RiCodeFill, diff --git a/packages/react/src/components/FormattingToolbar/DefaultButtons/TextAlignButton.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/TextAlignButton.tsx index a21f1006cb..dde40e4d9c 100644 --- a/packages/react/src/components/FormattingToolbar/DefaultButtons/TextAlignButton.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultButtons/TextAlignButton.tsx @@ -11,7 +11,7 @@ import { } from "@blocknote/core"; import { TableHandlesExtension } from "@blocknote/core/extensions"; import { useCallback } from "react"; -import { IconType } from "react-icons"; +import type { IconType } from "../../../icons.js"; import { RiAlignCenter, RiAlignJustify, diff --git a/packages/react/src/components/FormattingToolbar/DefaultSelects/BlockTypeSelect.tsx b/packages/react/src/components/FormattingToolbar/DefaultSelects/BlockTypeSelect.tsx index d9bb12a00a..77a929271d 100644 --- a/packages/react/src/components/FormattingToolbar/DefaultSelects/BlockTypeSelect.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultSelects/BlockTypeSelect.tsx @@ -6,7 +6,7 @@ import { StyleSchema, } from "@blocknote/core"; import { useMemo } from "react"; -import type { IconType } from "react-icons"; +import type { IconType } from "../../../icons.js"; import { RiH1, RiH2, diff --git a/packages/react/src/components/SuggestionMenu/getDefaultReactSlashMenuItems.tsx b/packages/react/src/components/SuggestionMenu/getDefaultReactSlashMenuItems.tsx index 0c62e30f23..722edcb613 100644 --- a/packages/react/src/components/SuggestionMenu/getDefaultReactSlashMenuItems.tsx +++ b/packages/react/src/components/SuggestionMenu/getDefaultReactSlashMenuItems.tsx @@ -28,7 +28,7 @@ import { RiVolumeUpFill, } from "react-icons/ri"; -import { IconType } from "react-icons"; +import type { IconType } from "../../icons.js"; import { DefaultReactSuggestionItem } from "./types.js"; const icons: Record = { diff --git a/packages/react/src/icons.ts b/packages/react/src/icons.ts new file mode 100644 index 0000000000..055f23a560 --- /dev/null +++ b/packages/react/src/icons.ts @@ -0,0 +1,12 @@ +/** + * Compatible replacement for `IconType` from react-icons. + * Defined locally so consumers don't need react-icons installed for + * type-checking. + */ +export type IconType = ( + props: React.SVGAttributes & { + size?: string | number; + color?: string; + title?: string; + } +) => React.ReactNode; diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts index 6ed745a789..6beb5a7082 100644 --- a/packages/react/src/index.ts +++ b/packages/react/src/index.ts @@ -133,6 +133,8 @@ export * from "./schema/ReactBlockSpec.js"; export * from "./schema/ReactInlineContentSpec.js"; export * from "./schema/ReactStyleSpec.js"; +export * from "./icons.js"; + export * from "./util/elementOverflow.js"; export * from "./util/mergeRefs.js"; diff --git a/packages/react/vite.config.ts b/packages/react/vite.config.ts index dde82555a5..abbbfb3dc9 100644 --- a/packages/react/vite.config.ts +++ b/packages/react/vite.config.ts @@ -44,6 +44,16 @@ export default defineConfig((conf) => ({ // make sure to externalize deps that shouldn't be bundled // into your library external: (source) => { + // Bundle react-icons into the output (tree-shaken) so consumers + // don't need to install it as a peer/runtime dependency. + const bundledDeps = ["react-icons"]; + if ( + bundledDeps.some( + (dep) => source === dep || source.startsWith(dep + "/") + ) + ) { + return false; + } if ( Object.keys({ ...pkg.dependencies, diff --git a/packages/server-util/package.json b/packages/server-util/package.json index 11c03e1e8b..ee3435f3e2 100644 --- a/packages/server-util/package.json +++ b/packages/server-util/package.json @@ -58,15 +58,14 @@ "dependencies": { "@blocknote/core": "0.51.3", "@blocknote/react": "0.51.3", - "@tiptap/core": "^3.13.0", "@tiptap/pm": "^3.13.0", "jsdom": "^25.0.1", - "y-prosemirror": "^1.3.7", - "y-protocols": "^1.0.6", "yjs": "^13.6.27" }, "devDependencies": { "@types/jsdom": "^21.1.7", + "y-prosemirror": "^1.3.7", + "y-protocols": "^1.0.6", "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "eslint": "^8.57.1", diff --git a/packages/shadcn/package.json b/packages/shadcn/package.json index 557c261ec4..8623e331e4 100644 --- a/packages/shadcn/package.json +++ b/packages/shadcn/package.json @@ -67,7 +67,6 @@ "@radix-ui/react-tabs": "^1.1.13", "@radix-ui/react-toggle": "^1.1.10", "@radix-ui/react-tooltip": "^1.2.8", - "autoprefixer": "^10.4.21", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "lucide-react": "^0.525.0", diff --git a/packages/xl-ai/package.json b/packages/xl-ai/package.json index 12bd5dea77..6794a1da75 100644 --- a/packages/xl-ai/package.json +++ b/packages/xl-ai/package.json @@ -73,11 +73,9 @@ "@ai-sdk/provider-utils": "^4.0.2", "@ai-sdk/react": "^3.0.5", "@blocknote/core": "0.51.3", - "@blocknote/mantine": "0.51.3", "@blocknote/react": "0.51.3", "@floating-ui/react": "^0.27.18", "@handlewithcare/prosemirror-suggest-changes": "^0.1.8", - "@tiptap/core": "^3.13.0", "ai": "^6.0.5", "lodash.isequal": "^4.5.0", "lodash.merge": "^4.6.2", @@ -87,12 +85,10 @@ "prosemirror-tables": "^1.8.3", "prosemirror-transform": "^1.11.0", "prosemirror-view": "^1.41.4", - "react": "^19.2.5", - "react-dom": "^19.2.5", - "react-icons": "^5.5.0", "y-prosemirror": "^1.3.7" }, "devDependencies": { + "react-icons": "^5.5.0", "@ai-sdk/anthropic": "^3.0.2", "@ai-sdk/google": "^3.0.2", "@ai-sdk/groq": "^3.0.2", diff --git a/packages/xl-ai/vite.config.ts b/packages/xl-ai/vite.config.ts index 2c56391772..d8b37eb6fb 100644 --- a/packages/xl-ai/vite.config.ts +++ b/packages/xl-ai/vite.config.ts @@ -51,6 +51,16 @@ export default defineConfig((conf) => ({ // make sure to externalize deps that shouldn't be bundled // into your library external: (source) => { + // Bundle react-icons into the output (tree-shaken) so consumers + // don't need to install it as a peer/runtime dependency. + const bundledDeps = ["react-icons"]; + if ( + bundledDeps.some( + (dep) => source === dep || source.startsWith(dep + "/") + ) + ) { + return false; + } if ( Object.keys({ ...pkg.dependencies, diff --git a/packages/xl-email-exporter/package.json b/packages/xl-email-exporter/package.json index eca57501c1..3d7dfb6770 100644 --- a/packages/xl-email-exporter/package.json +++ b/packages/xl-email-exporter/package.json @@ -55,17 +55,15 @@ }, "dependencies": { "@blocknote/core": "0.51.3", - "@blocknote/react": "0.51.3", "@react-email/components": "^1.0.5", "@react-email/render": "^2.0.4", - "buffer": "^6.0.3", - "react": "^19.2.5", - "react-dom": "^19.2.5", - "react-email": "^5.2.5", "web-streams-polyfill": "^4.2.0" }, "devDependencies": { "@types/jsdom": "^21.1.7", + "react": "^19.2.5", + "react-dom": "^19.2.5", + "react-email": "^5.2.5", "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "eslint": "^8.57.1", diff --git a/packages/xl-multi-column/package.json b/packages/xl-multi-column/package.json index ae8784430f..02bd1f51f2 100644 --- a/packages/xl-multi-column/package.json +++ b/packages/xl-multi-column/package.json @@ -56,12 +56,10 @@ "@tiptap/core": "^3.13.0", "prosemirror-model": "^1.25.4", "prosemirror-state": "^1.4.4", - "prosemirror-tables": "^1.8.3", - "prosemirror-transform": "^1.11.0", - "prosemirror-view": "^1.41.4", - "react-icons": "^5.5.0" + "prosemirror-view": "^1.41.4" }, "devDependencies": { + "react-icons": "^5.5.0", "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "eslint": "^8.57.1", diff --git a/packages/xl-multi-column/vite.config.ts b/packages/xl-multi-column/vite.config.ts index 67d5f30b4d..645c3d60c6 100644 --- a/packages/xl-multi-column/vite.config.ts +++ b/packages/xl-multi-column/vite.config.ts @@ -38,6 +38,16 @@ export default defineConfig((conf) => ({ // make sure to externalize deps that shouldn't be bundled // into your library external: (source) => { + // Bundle react-icons into the output (tree-shaken) so consumers + // don't need to install it as a peer/runtime dependency. + const bundledDeps = ["react-icons"]; + if ( + bundledDeps.some( + (dep) => source === dep || source.startsWith(dep + "/") + ) + ) { + return false; + } if ( Object.keys({ ...pkg.dependencies, diff --git a/packages/xl-odt-exporter/package.json b/packages/xl-odt-exporter/package.json index 6e47dd09ef..c1f104e27d 100644 --- a/packages/xl-odt-exporter/package.json +++ b/packages/xl-odt-exporter/package.json @@ -60,7 +60,6 @@ "@blocknote/core": "0.51.3", "@blocknote/xl-multi-column": "0.51.3", "@zip.js/zip.js": "^2.8.8", - "buffer": "^6.0.3", "image-meta": "^0.2.2" }, "devDependencies": { diff --git a/packages/xl-pdf-exporter/package.json b/packages/xl-pdf-exporter/package.json index f46320cdc9..182fbc15e5 100644 --- a/packages/xl-pdf-exporter/package.json +++ b/packages/xl-pdf-exporter/package.json @@ -57,11 +57,8 @@ }, "dependencies": { "@blocknote/core": "0.51.3", - "@blocknote/react": "0.51.3", "@blocknote/xl-multi-column": "0.51.3", - "@react-pdf/renderer": "^4.3.0", - "buffer": "^6.0.3", - "docx": "^9.5.1" + "@react-pdf/renderer": "^4.3.0" }, "devDependencies": { "@testing-library/react": "^16.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dfc4d65cde..120771f0a2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4590,9 +4590,6 @@ importers: '@shikijs/themes': specifier: ^4 version: 4.0.2 - '@shikijs/types': - specifier: ^4 - version: 4.0.2 devDependencies: eslint: specifier: ^8.57.1 @@ -4612,6 +4609,10 @@ importers: vitest: specifier: 4.1.2 version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.9.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.9.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.9.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.3)) + optionalDependencies: + '@shikijs/types': + specifier: ^4 + version: 4.0.2 packages/core: dependencies: @@ -4636,15 +4637,9 @@ importers: '@tiptap/extension-code': specifier: ^3.13.0 version: 3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4)) - '@tiptap/extension-horizontal-rule': - specifier: ^3.13.0 - version: 3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4) '@tiptap/extension-italic': specifier: ^3.13.0 version: 3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4)) - '@tiptap/extension-paragraph': - specifier: ^3.13.0 - version: 3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4)) '@tiptap/extension-strike': specifier: ^3.13.0 version: 3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4)) @@ -4666,9 +4661,6 @@ importers: fast-deep-equal: specifier: ^3.1.3 version: 3.1.3 - lib0: - specifier: ^0.2.99 - version: 0.2.117 prosemirror-highlight: specifier: ^0.15.1 version: 0.15.1(@shikijs/types@4.0.2)(@types/hast@3.0.4)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-transform@1.12.0)(prosemirror-view@1.41.8) @@ -4770,9 +4762,6 @@ importers: '@mantine/hooks': specifier: ^8.3.11 || ^9.0.2 version: 9.1.1(react@19.2.5) - react-icons: - specifier: ^5.5.0 - version: 5.6.0(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -4792,6 +4781,9 @@ importers: react-dom: specifier: ^19.2.5 version: 19.2.5(react@19.2.5) + react-icons: + specifier: ^5.5.0 + version: 5.6.0(react@19.2.5) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -4822,9 +4814,6 @@ importers: '@floating-ui/react': specifier: ^0.27.18 version: 0.27.19(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@floating-ui/utils': - specifier: ^0.2.10 - version: 0.2.11 '@tanstack/react-store': specifier: 0.7.7 version: 0.7.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5) @@ -4837,21 +4826,12 @@ importers: '@tiptap/react': specifier: ^3.13.0 version: 3.22.4(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@types/use-sync-external-store': - specifier: 1.5.0 - version: 1.5.0 emoji-mart: specifier: ^5.6.0 version: 5.6.0 fast-deep-equal: specifier: ^3.1.3 version: 3.1.3 - lodash.merge: - specifier: ^4.6.2 - version: 4.6.2 - react-icons: - specifier: ^5.5.0 - version: 5.6.0(react@19.2.5) use-sync-external-store: specifier: 1.6.0 version: 1.6.0(react@19.2.5) @@ -4862,9 +4842,6 @@ importers: '@types/lodash.groupby': specifier: ^4.6.9 version: 4.6.9 - '@types/lodash.merge': - specifier: ^4.6.9 - version: 4.6.9 '@types/react': specifier: ^19.2.3 version: 19.2.14 @@ -4883,6 +4860,9 @@ importers: react-dom: specifier: ^19.2.5 version: 19.2.5(react@19.2.5) + react-icons: + specifier: ^5.5.0 + version: 5.6.0(react@19.2.5) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -4904,6 +4884,10 @@ importers: vitest: specifier: 4.1.2 version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.9.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.9.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.9.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.3)) + optionalDependencies: + '@types/use-sync-external-store': + specifier: 1.5.0 + version: 1.5.0 packages/server-util: dependencies: @@ -4913,21 +4897,12 @@ importers: '@blocknote/react': specifier: 0.51.3 version: link:../react - '@tiptap/core': - specifier: ^3.0.0 - version: 3.22.4(@tiptap/pm@3.22.4) '@tiptap/pm': specifier: ^3.0.0 version: 3.22.4 jsdom: specifier: ^25.0.1 version: 25.0.1(canvas@2.11.2) - y-prosemirror: - specifier: ^1.3.7 - version: 1.3.7(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) - y-protocols: - specifier: ^1.0.6 - version: 1.0.7(yjs@13.6.30) yjs: specifier: ^13.6.27 version: 13.6.30 @@ -4965,6 +4940,12 @@ importers: vitest: specifier: 4.1.2 version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.9.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.9.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.9.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.47.1)(tsx@4.21.0)(yaml@2.8.3)) + y-prosemirror: + specifier: ^1.3.7 + version: 1.3.7(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) + y-protocols: + specifier: ^1.0.6 + version: 1.0.7(yjs@13.6.30) packages/shadcn: dependencies: @@ -5001,9 +4982,6 @@ importers: '@radix-ui/react-tooltip': specifier: ^1.2.8 version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - autoprefixer: - specifier: ^10.4.21 - version: 10.4.21(postcss@8.5.14) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -5077,9 +5055,6 @@ importers: '@blocknote/core': specifier: 0.51.3 version: link:../core - '@blocknote/mantine': - specifier: 0.51.3 - version: link:../mantine '@blocknote/react': specifier: 0.51.3 version: link:../react @@ -5089,9 +5064,6 @@ importers: '@handlewithcare/prosemirror-suggest-changes': specifier: ^0.1.8 version: 0.1.8(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-transform@1.12.0)(prosemirror-view@1.41.8) - '@tiptap/core': - specifier: ^3.0.0 - version: 3.22.4(@tiptap/pm@3.22.4) ai: specifier: ^6.0.5 version: 6.0.5(zod@4.3.6) @@ -5120,14 +5092,11 @@ importers: specifier: ^1.41.4 version: 1.41.8 react: - specifier: ^19.2.5 + specifier: ^18.0 || ^19.0 || >= 19.0.0-rc version: 19.2.5 react-dom: - specifier: ^19.2.5 + specifier: ^18.0 || ^19.0 || >= 19.0.0-rc version: 19.2.5(react@19.2.5) - react-icons: - specifier: ^5.5.0 - version: 5.6.0(react@19.2.5) y-prosemirror: specifier: ^1.3.7 version: 1.3.7(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) @@ -5198,6 +5167,9 @@ importers: msw-snapshot: specifier: ^5.3.0 version: 5.3.0(msw@2.11.5(@types/node@25.9.0)(typescript@5.9.3)) + react-icons: + specifier: ^5.5.0 + version: 5.6.0(react@19.2.5) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -5347,30 +5319,15 @@ importers: '@blocknote/core': specifier: 0.51.3 version: link:../core - '@blocknote/react': - specifier: 0.51.3 - version: link:../react '@react-email/components': specifier: ^1.0.5 version: 1.0.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@react-email/render': specifier: ^2.0.4 version: 2.0.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - buffer: - specifier: ^6.0.3 - version: 6.0.3 - react: - specifier: ^19.2.5 - version: 19.2.5 - react-dom: - specifier: ^19.2.5 - version: 19.2.5(react@19.2.5) - react-email: - specifier: ^5.2.5 - version: 5.2.10 web-streams-polyfill: specifier: ^4.2.0 - version: 4.2.0 + version: 4.3.0 devDependencies: '@types/jsdom': specifier: ^21.1.7 @@ -5384,6 +5341,15 @@ importers: eslint: specifier: ^8.57.1 version: 8.57.1 + react: + specifier: ^19.2.5 + version: 19.2.5 + react-dom: + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) + react-email: + specifier: ^5.2.5 + version: 5.2.10 rollup-plugin-webpack-stats: specifier: ^0.2.6 version: 0.2.6(rollup@4.60.1) @@ -5417,18 +5383,9 @@ importers: prosemirror-state: specifier: ^1.4.4 version: 1.4.4 - prosemirror-tables: - specifier: ^1.8.3 - version: 1.8.5 - prosemirror-transform: - specifier: ^1.11.0 - version: 1.12.0 prosemirror-view: specifier: ^1.41.4 version: 1.41.8 - react-icons: - specifier: ^5.5.0 - version: 5.6.0(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -5448,6 +5405,9 @@ importers: react-dom: specifier: ^19.2.5 version: 19.2.5(react@19.2.5) + react-icons: + specifier: ^5.5.0 + version: 5.6.0(react@19.2.5) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -5478,9 +5438,6 @@ importers: '@zip.js/zip.js': specifier: ^2.8.8 version: 2.8.26 - buffer: - specifier: ^6.0.3 - version: 6.0.3 image-meta: specifier: ^0.2.2 version: 0.2.2 @@ -5527,21 +5484,12 @@ importers: '@blocknote/core': specifier: 0.51.3 version: link:../core - '@blocknote/react': - specifier: 0.51.3 - version: link:../react '@blocknote/xl-multi-column': specifier: 0.51.3 version: link:../xl-multi-column '@react-pdf/renderer': specifier: ^4.3.0 version: 4.3.2(react@19.2.5) - buffer: - specifier: ^6.0.3 - version: 6.0.3 - docx: - specifier: ^9.5.1 - version: 9.5.1 devDependencies: '@testing-library/react': specifier: ^16.3.0 @@ -10401,22 +10349,11 @@ packages: '@tiptap/core': ^3.0.0 '@tiptap/pm': ^3.0.0 - '@tiptap/extension-horizontal-rule@3.22.4': - resolution: {integrity: sha512-cCI1HekGQwhY/MbgaKQ0R/7HcH5ZM1oFAyI/J72QGLC0XnF403S/OXoHMuBWr1mCu8hNiQWCzeNRJUty0iytNw==} - peerDependencies: - '@tiptap/core': ^3.0.0 - '@tiptap/pm': ^3.0.0 - '@tiptap/extension-italic@3.22.4': resolution: {integrity: sha512-fVSDx5AYXgDI3v2zZIqb7V8EewthwM2NJ/ZCX+XaxRsqNEpnjVhgHs7UlvDqK1wj2OJ6zmUNjPtVlAFRxwT+HQ==} peerDependencies: '@tiptap/core': ^3.0.0 - '@tiptap/extension-paragraph@3.22.4': - resolution: {integrity: sha512-de6dFkIhigiENESY6rNJ3yTVS/337ybfP30dNPudTwGe9oAu9ZCS+04j6QCvXSjhlI3ULiv7wiSHqrP26Gd+Hw==} - peerDependencies: - '@tiptap/core': ^3.0.0 - '@tiptap/extension-strike@3.22.4': resolution: {integrity: sha512-aRHWQj42HiailXSC9LkKYM3jWMcSeGwOjbqM4PiuxQZmHVDRFmeHkfJItOdn2cSHaO0vuEVK+TvrWUWsBFi3pg==} peerDependencies: @@ -16243,8 +16180,8 @@ packages: wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - web-streams-polyfill@4.2.0: - resolution: {integrity: sha512-0rYDzGOh9EZpig92umN5g5D/9A1Kff7k0/mzPSSCY8jEQeYkgRMoY7LhbXtUCWzLCMX0TUE9aoHkjFNB7D9pfA==} + web-streams-polyfill@4.3.0: + resolution: {integrity: sha512-/Gnggvj9oSrEvJbDyyPtAnxBt5fGQM2iWOKQNu7ie1OxDgK40iZpyV3TKaRiEzVj1oA1UxKnEy9XPXh6PW3eVw==} engines: {node: '>= 8'} webidl-conversions@3.0.1: @@ -21664,19 +21601,10 @@ snapshots: '@tiptap/pm': 3.22.4 optional: true - '@tiptap/extension-horizontal-rule@3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)': - dependencies: - '@tiptap/core': 3.22.4(@tiptap/pm@3.22.4) - '@tiptap/pm': 3.22.4 - '@tiptap/extension-italic@3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))': dependencies: '@tiptap/core': 3.22.4(@tiptap/pm@3.22.4) - '@tiptap/extension-paragraph@3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))': - dependencies: - '@tiptap/core': 3.22.4(@tiptap/pm@3.22.4) - '@tiptap/extension-strike@3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))': dependencies: '@tiptap/core': 3.22.4(@tiptap/pm@3.22.4) @@ -21998,7 +21926,8 @@ snapshots: '@types/use-sync-external-store@0.0.6': {} - '@types/use-sync-external-store@1.5.0': {} + '@types/use-sync-external-store@1.5.0': + optional: true '@types/ws@8.18.1': dependencies: @@ -28725,7 +28654,7 @@ snapshots: dependencies: defaults: 1.0.4 - web-streams-polyfill@4.2.0: {} + web-streams-polyfill@4.3.0: {} webidl-conversions@3.0.1: {}