diff --git a/src/frontend/Dockerfile b/src/frontend/Dockerfile
index 2772dafdf0..fa13192161 100644
--- a/src/frontend/Dockerfile
+++ b/src/frontend/Dockerfile
@@ -11,12 +11,14 @@ COPY ./src/frontend/package.json ./package.json
 COPY ./src/frontend/yarn.lock ./yarn.lock
 COPY ./src/frontend/apps/impress/package.json ./apps/impress/package.json
 COPY ./src/frontend/packages/eslint-config-impress/package.json ./packages/eslint-config-impress/package.json
+COPY ./src/frontend/packages/common/package.json ./packages/common/package.json
 
 RUN yarn install --frozen-lockfile
 
 COPY .dockerignore ./.dockerignore
 COPY ./src/frontend/.prettierrc.js ./.prettierrc.js
 COPY ./src/frontend/packages/eslint-config-impress ./packages/eslint-config-impress
+COPY ./src/frontend/packages/common ./packages/common
 COPY ./src/frontend/apps/impress ./apps/impress
 
 ### ---- Front-end builder image ----
diff --git a/src/frontend/apps/impress/next.config.js b/src/frontend/apps/impress/next.config.js
index 862b4fafcb..a57dae2744 100644
--- a/src/frontend/apps/impress/next.config.js
+++ b/src/frontend/apps/impress/next.config.js
@@ -8,6 +8,7 @@ const buildId = crypto.randomBytes(256).toString('hex').slice(0, 8);
 const nextConfig = {
   output: 'export',
   trailingSlash: true,
+  transpilePackages: ['package-docs'],
   images: {
     unoptimized: true,
   },
diff --git a/src/frontend/apps/impress/package.json b/src/frontend/apps/impress/package.json
index b30b808515..88a28db4aa 100644
--- a/src/frontend/apps/impress/package.json
+++ b/src/frontend/apps/impress/package.json
@@ -47,6 +47,7 @@
     "lodash": "4.17.21",
     "luxon": "3.7.1",
     "next": "15.4.6",
+    "package-docs": "*",
     "posthog-js": "1.258.6",
     "react": "*",
     "react-aria-components": "1.11.0",
diff --git a/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteEditor.tsx b/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteEditor.tsx
index 6b7b77a483..12d9d1f1a4 100644
--- a/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteEditor.tsx
+++ b/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteEditor.tsx
@@ -11,6 +11,7 @@ import { BlockNoteView } from '@blocknote/mantine';
 import '@blocknote/mantine/style.css';
 import { useCreateBlockNote } from '@blocknote/react';
 import { HocuspocusProvider } from '@hocuspocus/provider';
+import { createDividerBlock } from 'package-docs';
 import { useEffect } from 'react';
 import { useTranslation } from 'react-i18next';
 import * as Y from 'yjs';
@@ -33,7 +34,7 @@ import { randomColor } from '../utils';
 
 import { BlockNoteSuggestionMenu } from './BlockNoteSuggestionMenu';
 import { BlockNoteToolbar } from './BlockNoteToolBar/BlockNoteToolbar';
-import { CalloutBlock, DividerBlock } from './custom-blocks';
+import { CalloutBlock } from './custom-blocks';
 import {
   InterlinkingLinkInlineContent,
   InterlinkingSearchInlineContent,
@@ -49,7 +50,9 @@ const baseBlockNoteSchema = withPageBreak(
     blockSpecs: {
       ...defaultBlockSpecs,
       callout: CalloutBlock,
-      divider: DividerBlock,
+      divider: createDividerBlock({
+        color: 'var(--c--theme--colors--greyscale-300)',
+      }),
     },
     inlineContentSpecs: {
       ...defaultInlineContentSpecs,
diff --git a/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteSuggestionMenu.tsx b/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteSuggestionMenu.tsx
index 4e8c6e3091..3a2151b46d 100644
--- a/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteSuggestionMenu.tsx
+++ b/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteSuggestionMenu.tsx
@@ -6,19 +6,19 @@ import {
   useBlockNoteEditor,
   useDictionary,
 } from '@blocknote/react';
+import { getDividerReactSlashMenuItems } from 'package-docs';
 import React, { useMemo } from 'react';
 import { useTranslation } from 'react-i18next';
 
+import { Icon } from '@/components';
+
 import {
   DocsBlockSchema,
   DocsInlineContentSchema,
   DocsStyleSchema,
 } from '../types';
 
-import {
-  getCalloutReactSlashMenuItems,
-  getDividerReactSlashMenuItems,
-} from './custom-blocks';
+import { getCalloutReactSlashMenuItems } from './custom-blocks';
 import { useGetInterlinkingMenuItems } from './custom-inline-content';
 import XLMultiColumn from './xl-multi-column';
 
@@ -55,7 +55,12 @@ export const BlockNoteSuggestionMenu = () => {
             getCalloutReactSlashMenuItems(editor, t, basicBlocksName),
             getMultiColumnSlashMenuItems?.(editor) || [],
             getPageBreakReactSlashMenuItems(editor),
-            getDividerReactSlashMenuItems(editor, t, basicBlocksName),
+            getDividerReactSlashMenuItems(
+              editor,
+              t,
+              basicBlocksName,
+              ,
+            ),
           ),
           query,
         ),
diff --git a/src/frontend/apps/impress/src/features/docs/doc-editor/components/custom-blocks/DividerBlock.tsx b/src/frontend/apps/impress/src/features/docs/doc-editor/components/custom-blocks/DividerBlock.tsx
deleted file mode 100644
index 9d402a8234..0000000000
--- a/src/frontend/apps/impress/src/features/docs/doc-editor/components/custom-blocks/DividerBlock.tsx
+++ /dev/null
@@ -1,51 +0,0 @@
-import { insertOrUpdateBlock } from '@blocknote/core';
-import { createReactBlockSpec } from '@blocknote/react';
-import { TFunction } from 'i18next';
-
-import { Box, Icon } from '@/components';
-import { useCunninghamTheme } from '@/cunningham';
-
-import { DocsBlockNoteEditor } from '../../types';
-
-export const DividerBlock = createReactBlockSpec(
-  {
-    type: 'divider',
-    propSchema: {},
-    content: 'none',
-  },
-  {
-    render: () => {
-      // eslint-disable-next-line react-hooks/rules-of-hooks
-      const { colorsTokens } = useCunninghamTheme();
-
-      return (
-        
-      );
-    },
-  },
-);
-
-export const getDividerReactSlashMenuItems = (
-  editor: DocsBlockNoteEditor,
-  t: TFunction<'translation', undefined>,
-  group: string,
-) => [
-  {
-    title: t('Divider'),
-    onItemClick: () => {
-      insertOrUpdateBlock(editor, {
-        type: 'divider',
-      });
-    },
-    aliases: ['divider', 'hr', 'horizontal rule', 'line', 'separator'],
-    group,
-    icon: ,
-    subtext: t('Add a horizontal line'),
-  },
-];
diff --git a/src/frontend/apps/impress/src/features/docs/doc-editor/components/custom-blocks/index.ts b/src/frontend/apps/impress/src/features/docs/doc-editor/components/custom-blocks/index.ts
index 34a8c459cb..b11869bcea 100644
--- a/src/frontend/apps/impress/src/features/docs/doc-editor/components/custom-blocks/index.ts
+++ b/src/frontend/apps/impress/src/features/docs/doc-editor/components/custom-blocks/index.ts
@@ -1,2 +1 @@
 export * from './CalloutBlock';
-export * from './DividerBlock';
diff --git a/src/frontend/package.json b/src/frontend/package.json
index 6c5ce1fae2..eade8f6617 100644
--- a/src/frontend/package.json
+++ b/src/frontend/package.json
@@ -13,6 +13,7 @@
     "APP_IMPRESS": "yarn workspace app-impress",
     "APP_E2E": "yarn workspace app-e2e",
     "I18N": "yarn workspace packages-i18n",
+    "COMMON": "yarn workspace package-docs",
     "COLLABORATION_SERVER": "yarn workspace server-y-provider",
     "app:dev": "yarn APP_IMPRESS run dev",
     "app:start": "yarn APP_IMPRESS run start",
@@ -20,7 +21,7 @@
     "app:test": "yarn APP_IMPRESS run test",
     "ci:build": "yarn APP_IMPRESS run build:ci",
     "e2e:test": "yarn APP_E2E run test",
-    "lint": "yarn APP_IMPRESS run lint && yarn APP_E2E run lint && yarn workspace eslint-config-impress run lint && yarn I18N run lint && yarn COLLABORATION_SERVER run lint",
+    "lint": "yarn APP_IMPRESS run lint && yarn APP_E2E run lint && yarn workspace eslint-config-impress run lint && yarn I18N run lint && yarn COMMON run lint && yarn COLLABORATION_SERVER run lint",
     "i18n:extract": "yarn I18N run extract-translation",
     "i18n:deploy": "yarn I18N run format-deploy && yarn APP_IMPRESS prettier",
     "i18n:test": "yarn I18N run test",
diff --git a/src/frontend/packages/common/.eslintrc.js b/src/frontend/packages/common/.eslintrc.js
new file mode 100644
index 0000000000..b73567212c
--- /dev/null
+++ b/src/frontend/packages/common/.eslintrc.js
@@ -0,0 +1,14 @@
+module.exports = {
+  root: true,
+  extends: ['impress/next'],
+  parserOptions: {
+    sourceType: 'module',
+    ecmaVersion: 'latest',
+    tsconfigRootDir: __dirname,
+    project: ['./tsconfig.json'],
+  },
+  rules: {
+    '@next/next/no-html-link-for-pages': 'off',
+  },
+  ignorePatterns: ['node_modules'],
+};
diff --git a/src/frontend/packages/common/package.json b/src/frontend/packages/common/package.json
new file mode 100644
index 0000000000..3669c57242
--- /dev/null
+++ b/src/frontend/packages/common/package.json
@@ -0,0 +1,20 @@
+{
+  "name": "package-docs",
+  "version": "3.5.0",
+  "license": "MIT",
+  "main": "src/index.ts",
+  "types": "src/index.ts",
+  "scripts": {
+    "lint": "eslint --ext .ts,.tsx src/"
+  },
+  "peerDependencies": {
+    "@blocknote/core": "0.35.0",
+    "@blocknote/react": "0.35.0",
+    "react": "19.1.0",
+    "react-dom": "19.1.0"
+  },
+  "devDependencies": {
+    "eslint-config-impress": "*",
+    "typescript": "*"
+  }
+}
diff --git a/src/frontend/packages/common/src/custom-blocks/DividerBlock.tsx b/src/frontend/packages/common/src/custom-blocks/DividerBlock.tsx
new file mode 100644
index 0000000000..d4331c95ee
--- /dev/null
+++ b/src/frontend/packages/common/src/custom-blocks/DividerBlock.tsx
@@ -0,0 +1,52 @@
+import { BlockNoteEditor, insertOrUpdateBlock } from '@blocknote/core';
+import { createReactBlockSpec } from '@blocknote/react';
+import { TFunction } from 'i18next';
+
+interface DividerBlockProps {
+  color?: string;
+}
+
+export const createDividerBlock = ({ color }: DividerBlockProps) => {
+  return createReactBlockSpec(
+    {
+      type: 'divider',
+      propSchema: {},
+      content: 'none',
+    },
+    {
+      render: () => {
+        return (
+          
+        );
+      },
+    },
+  );
+};
+
+export const getDividerReactSlashMenuItems = (
+  // eslint-disable-next-line @typescript-eslint/no-explicit-any
+  editor: BlockNoteEditor,
+  t: TFunction<'translation', undefined>,
+  group: string,
+  icon: React.ReactNode,
+) => [
+  {
+    title: t('Divider'),
+    onItemClick: () => {
+      insertOrUpdateBlock(editor, {
+        type: 'divider',
+      });
+    },
+    aliases: ['divider', 'hr', 'horizontal rule', 'line', 'separator'],
+    group,
+    icon,
+    subtext: t('Add a horizontal line'),
+  },
+];
diff --git a/src/frontend/packages/common/src/custom-blocks/index.ts b/src/frontend/packages/common/src/custom-blocks/index.ts
new file mode 100644
index 0000000000..70bc3faef6
--- /dev/null
+++ b/src/frontend/packages/common/src/custom-blocks/index.ts
@@ -0,0 +1 @@
+export * from './DividerBlock';
diff --git a/src/frontend/packages/common/src/index.ts b/src/frontend/packages/common/src/index.ts
new file mode 100644
index 0000000000..973611def9
--- /dev/null
+++ b/src/frontend/packages/common/src/index.ts
@@ -0,0 +1 @@
+export * from './custom-blocks/';
diff --git a/src/frontend/packages/common/tsconfig.json b/src/frontend/packages/common/tsconfig.json
new file mode 100644
index 0000000000..e25920c069
--- /dev/null
+++ b/src/frontend/packages/common/tsconfig.json
@@ -0,0 +1,28 @@
+{
+  "compilerOptions": {
+    "target": "es5",
+    "lib": ["dom", "dom.iterable", "esnext"],
+    "allowJs": true,
+    "skipLibCheck": true,
+    "strict": true,
+    "noEmit": true,
+    "esModuleInterop": true,
+    "module": "esnext",
+    "moduleResolution": "bundler",
+    "resolveJsonModule": true,
+    "isolatedModules": true,
+    "jsx": "preserve",
+    "incremental": true,
+    "baseUrl": ".",
+    "paths": {
+      "@/*": ["./src/*"]
+    }
+  },
+  "include": [
+    "src/**/*"
+  ],
+  "exclude": [
+    "node_modules",
+    "dist"
+  ]
+}
diff --git a/src/frontend/yarn.lock b/src/frontend/yarn.lock
index 82d9ed4b33..6461855827 100644
--- a/src/frontend/yarn.lock
+++ b/src/frontend/yarn.lock
@@ -15113,3 +15113,5 @@ zwitch@^2.0.0, zwitch@^2.0.4:
   version "2.0.4"
   resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7"
   integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==
+
+# Force cache refresh for packages/common-package workspace linking