Skip to content

Commit 49d6e53

Browse files
committed
feat: change header style
1 parent 9822c50 commit 49d6e53

File tree

5 files changed

+359
-183
lines changed

5 files changed

+359
-183
lines changed

packages/markdown-editor/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
"@codemirror/autocomplete": "^6.16.0",
4141
"@codemirror/commands": "^6.5.0",
4242
"@codemirror/lang-markdown": "^6.2.5",
43+
"@codemirror/language": "^6.10.2",
4344
"@codemirror/language-data": "^6.5.1",
4445
"@codemirror/state": "^6.4.1",
4546
"@codemirror/theme-one-dark": "^6.1.2",
@@ -49,6 +50,7 @@
4950
"@dnd-kit/sortable": "^8.0.0",
5051
"@dnd-kit/utilities": "^3.2.2",
5152
"@headlessui/react": "^1.7.17",
53+
"@lezer/highlight": "^1.2.0",
5254
"@mdx-js/mdx": "3.0.1",
5355
"@mdx-js/react": "2.3.0",
5456
"@popperjs/core": "^2.11.8",

packages/markdown-editor/src/components/markdown-editor/hooks/useCodemirror.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,11 @@ export const useCodemirror = (container: RefObject<HTMLElement>, config: Config
6666
scrollbarGutter: 'stable',
6767
'overflow-x': 'hidden',
6868
},
69+
'.cm-heading1': { fontSize: '24px' },
70+
'.cm-heading2': { fontSize: '20px' },
71+
'.cm-heading3': { fontSize: '18px' },
72+
'.cm-heading4': { fontSize: '16px' },
73+
'.cm-heading5': { fontSize: '14px' },
6974
})
7075

7176
const updateListener = EditorView.updateListener.of((viewUpdate: ViewUpdate) => {

packages/markdown-editor/src/components/markdown-editor/lib/getDefaultExtensions.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { EditorState, Extension } from '@codemirror/state'
22
import { EditorView, keymap, placeholder } from '@codemirror/view'
33
import { indentWithTab } from '@codemirror/commands'
4+
import { tags } from '@lezer/highlight'
5+
import { HighlightStyle, syntaxHighlighting } from '@codemirror/language'
46
import { darkTheme, lightTheme } from './theme'
57
import { basicSetup, type BasicSetupOptions } from '@uiw/codemirror-extensions-basic-setup'
68
import { codeKeymap } from '../toolbar/commands/code'
@@ -18,6 +20,7 @@ export type ExtensionOptions = {
1820
theme?: 'light' | 'dark' | 'none' | Extension
1921
readOnly?: boolean
2022
editable?: boolean
23+
defaultSyntax?: boolean
2124
}
2225

2326
export const getDefaultExtensions = (options: ExtensionOptions) => {
@@ -28,6 +31,7 @@ export const getDefaultExtensions = (options: ExtensionOptions) => {
2831
theme = 'light',
2932
placeholder: placeholderStr = '',
3033
basicSetup: defaultBasicSetup = true,
34+
defaultSyntax = true,
3135
} = options
3236

3337
const getExtensions: Extension[] = []
@@ -79,5 +83,17 @@ export const getDefaultExtensions = (options: ExtensionOptions) => {
7983
getExtensions.push(EditorState.readOnly.of(true))
8084
}
8185

86+
if (defaultSyntax) {
87+
const headHighlightStyle = HighlightStyle.define([
88+
{ tag: tags.heading1, class: 'cm-heading1' },
89+
{ tag: tags.heading2, class: 'cm-heading2' },
90+
{ tag: tags.heading3, class: 'cm-heading3' },
91+
{ tag: tags.heading4, class: 'cm-heading4' },
92+
{ tag: tags.heading5, class: 'cm-heading5' },
93+
])
94+
95+
getExtensions.push(syntaxHighlighting(headHighlightStyle))
96+
}
97+
8298
return [...getExtensions]
8399
}

packages/markdown-editor/src/mdx-components.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ function HeadingLink({
5555
: cn(
5656
'nx-font-semibold nx-tracking-tight nx-text-slate-900 dark:nx-text-slate-100',
5757
{
58-
h2: 'nx-mt-10 nx-border-b nx-pb-1 nx-text-3xl nx-border-neutral-200/70 contrast-more:nx-border-neutral-400 dark:nx-border-primary-100/10 contrast-more:dark:nx-border-neutral-400',
58+
h2: 'nx-mt-10 nx-border-neutral-200/70 nx-pb-1 nx-text-3xl contrast-more:nx-border-neutral-400 dark:nx-border-primary-100/10 contrast-more:dark:nx-border-neutral-400',
5959
h3: 'nx-mt-8 nx-text-2xl',
6060
h4: 'nx-mt-8 nx-text-xl',
6161
h5: 'nx-mt-8 nx-text-lg',
@@ -145,8 +145,8 @@ const Summary = (props: ComponentProps<'summary'>): ReactElement => {
145145
return (
146146
<summary
147147
className={cn(
148-
'nx-flex nx-items-center nx-cursor-pointer nx-list-none nx-p-1 nx-transition-colors hover:nx-bg-gray-100 dark:hover:nx-bg-neutral-800',
149-
"before:nx-mr-1 before:nx-inline-block before:nx-transition-transform before:nx-content-[''] dark:before:nx-invert before:nx-shrink-0",
148+
'nx-flex nx-cursor-pointer nx-list-none nx-items-center nx-p-1 nx-transition-colors hover:nx-bg-gray-100 dark:hover:nx-bg-neutral-800',
149+
"before:nx-mr-1 before:nx-inline-block before:nx-shrink-0 before:nx-transition-transform before:nx-content-[''] dark:before:nx-invert",
150150
'rtl:before:nx-rotate-180 [[data-expanded]>&]:before:nx-rotate-90',
151151
)}
152152
{...props}

0 commit comments

Comments
 (0)