diff --git a/canon-docs/package.json b/canon-docs/package.json
index 824a645f99..af440bf9d5 100644
--- a/canon-docs/package.json
+++ b/canon-docs/package.json
@@ -9,11 +9,13 @@
"watch-css": "node scripts/watch-css.js"
},
"dependencies": {
+ "@codemirror/lang-sass": "^6.0.2",
"@mdx-js/loader": "^3.1.0",
"@mdx-js/react": "^3.1.0",
"@next/mdx": "^15.1.4",
"@storybook/react": "^8.4.7",
"@types/mdx": "^2.0.13",
+ "@uiw/react-codemirror": "^4.23.7",
"next": "14.2.23",
"react": "^18",
"react-dom": "^18",
diff --git a/canon-docs/src/app/globals.css b/canon-docs/src/app/globals.css
index 4b39735a22..e9710c6576 100644
--- a/canon-docs/src/app/globals.css
+++ b/canon-docs/src/app/globals.css
@@ -35,3 +35,37 @@ iframe {
font-weight: var(--shiki-dark-font-weight) !important;
text-decoration: var(--shiki-dark-text-decoration) !important;
}
+
+.ͼ2 .cm-gutters {
+ background-color: var(--canon-surface-2);
+ border-right: 1px solid var(--canon-border-base);
+ transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out;
+}
+
+.ͼ1 .cm-lineNumbers .cm-gutterElement {
+ padding-right: 8px;
+ padding-left: 8px;
+ font-size: 0.875rem;
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+}
+
+.cm-line {
+ font-size: 0.875rem;
+}
+
+.ͼ1 .cm-line {
+ padding-left: 12px;
+ padding-top: 1px;
+ padding-bottom: 1px;
+}
+
+.cm-focused {
+ outline: none !important;
+}
+
+.cm-editor {
+ background-color: var(--canon-surface-1);
+ transition: background-color 0.2s ease-in-out;
+}
diff --git a/canon-docs/src/app/layout.tsx b/canon-docs/src/app/layout.tsx
index 6eb1856a1d..90cd6a9d0d 100644
--- a/canon-docs/src/app/layout.tsx
+++ b/canon-docs/src/app/layout.tsx
@@ -2,7 +2,7 @@ import type { Metadata } from 'next';
import { Sidebar } from '../components/Sidebar';
import { Toolbar } from '@/components/Toolbar';
import { Providers } from './providers';
-
+import { CustomTheme } from '@/components/CustomTheme';
import styles from './page.module.css';
import './globals.css';
@@ -35,6 +35,7 @@ export default function RootLayout({
{children}
+