diff --git a/docusaurus.config.js b/docusaurus.config.js
index 3288ffc7371..69c8864bda8 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -371,6 +371,12 @@ module.exports = {
versions: VERSIONS_JSON,
},
],
+ [
+ 'docusaurus-plugin-copy-page-button',
+ {
+ injectButton: false,
+ },
+ ],
],
customFields: {},
themes: [],
diff --git a/package-lock.json b/package-lock.json
index 1f0faeaf2c9..dff1b185d42 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -21,6 +21,7 @@
"clsx": "^1.1.1",
"concurrently": "^6.2.0",
"crowdin": "^3.5.0",
+ "docusaurus-plugin-copy-page-button": "^0.6.1",
"docusaurus-plugin-module-alias": "^0.0.2",
"docusaurus-plugin-sass": "^0.2.6",
"fs-extra": "^9.1.0",
@@ -8031,6 +8032,19 @@
"node": ">=6"
}
},
+ "node_modules/docusaurus-plugin-copy-page-button": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/docusaurus-plugin-copy-page-button/-/docusaurus-plugin-copy-page-button-0.6.1.tgz",
+ "integrity": "sha512-84LUG23owdGlUx5rgg7lcyuuxFZ+84u9u+adYjFZ1E5lM+g6bkduOGcZXLUqbI0R2Ve2RjG0OPv2KaL01tGW4w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "@docusaurus/core": "^3.0.0",
+ "react": "^18.0.0 || ^19.0.0"
+ }
+ },
"node_modules/docusaurus-plugin-module-alias": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/docusaurus-plugin-module-alias/-/docusaurus-plugin-module-alias-0.0.2.tgz",
diff --git a/package.json b/package.json
index 6fd279bd2af..e66666b70e9 100644
--- a/package.json
+++ b/package.json
@@ -50,6 +50,7 @@
"clsx": "^1.1.1",
"concurrently": "^6.2.0",
"crowdin": "^3.5.0",
+ "docusaurus-plugin-copy-page-button": "^0.6.1",
"docusaurus-plugin-module-alias": "^0.0.2",
"docusaurus-plugin-sass": "^0.2.6",
"fs-extra": "^9.1.0",
diff --git a/src/theme/DocItem/Layout/index.tsx b/src/theme/DocItem/Layout/index.tsx
index 218f71d0fc6..5962da2e4db 100644
--- a/src/theme/DocItem/Layout/index.tsx
+++ b/src/theme/DocItem/Layout/index.tsx
@@ -13,6 +13,7 @@ import React from 'react';
import clsx from 'clsx';
import {useWindowSize} from '@docusaurus/theme-common';
import {useDoc} from '@docusaurus/plugin-content-docs/client';
+import CopyPageButton from 'docusaurus-plugin-copy-page-button/react';
import DocItemPaginator from '@theme/DocItem/Paginator';
import DocVersionBanner from '@theme/DocVersionBanner';
import DocVersionBadge from '@theme/DocVersionBadge';
@@ -23,6 +24,7 @@ import DocItemContent from '@theme/DocItem/Content';
import ContentVisibility from '@theme/ContentVisibility';
import type {Props} from '@theme/DocItem/Layout';
import styles from '@docusaurus/theme-classic/lib/theme/DocItem/Layout/styles.module.css';
+import copyPageStyles from './styles.module.css';
// CUSTOM CODE
import DocDemo from '@components/global/DocDemo';
@@ -86,6 +88,15 @@ export default function DocItemLayout({children, ...props}: Props): JSX.Element