mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-02-24 23:48:13 -05:00
Updated AdminX CodeMirror styles to work better in dark mode (#18701)
refs https://github.com/TryGhost/Product/issues/3831 --- ### <samp>🤖 Generated by Copilot at ea48006</samp> Refactored the `CodeEditor` component to use Tailwind CSS and added a `className` prop for custom styling. Applied the `className` prop to the `CodeEditor` instances in the `CodeInjection` component to improve the layout.
This commit is contained in:
parent
489fae98eb
commit
678ee99e87
2 changed files with 19 additions and 15 deletions
|
@ -3,7 +3,6 @@ import Heading from '../Heading';
|
|||
import Hint from '../Hint';
|
||||
import React, {FocusEventHandler, forwardRef, useEffect, useId, useRef, useState} from 'react';
|
||||
import clsx from 'clsx';
|
||||
import {EditorView} from '@codemirror/view';
|
||||
import {Extension} from '@codemirror/state';
|
||||
import {useFocusContext} from '../../providers/DesignSystemProvider';
|
||||
|
||||
|
@ -18,15 +17,18 @@ export interface CodeEditorProps extends Omit<ReactCodeMirrorProps, 'value' | 'o
|
|||
onChange?: (value: string) => void;
|
||||
}
|
||||
|
||||
const theme = EditorView.theme({
|
||||
'& .cm-scroller': {
|
||||
fontFamily: 'Consolas, Liberation Mono, Menlo, Courier, monospace'
|
||||
},
|
||||
|
||||
'& .cm-activeLine, & .cm-activeLineGutter': {
|
||||
backgroundColor: 'transparent'
|
||||
}
|
||||
});
|
||||
const codeMirrorClasses = [
|
||||
'[&_.cm-editor]:bg-transparent',
|
||||
'[&_.cm-editor]:border-transparent',
|
||||
'[&_.cm-scroller]:font-mono',
|
||||
'[&_.cm-scroller]:border-transparent',
|
||||
'[&_.cm-activeLine]:bg-transparent',
|
||||
'[&_.cm-activeLineGutter]:bg-transparent',
|
||||
'[&_.cm-gutters]:bg-grey-75 dark:[&_.cm-gutters]:bg-grey-950',
|
||||
'[&_.cm-gutters]:text-grey-600 dark:[&_.cm-gutters]:text-grey-500',
|
||||
'[&_.cm-gutters]:border-grey-500 dark:[&_.cm-gutters]:border-grey-800',
|
||||
'[&_.cm-cursor]:border-grey-900 dark:[&_.cm-cursor]:border-grey-75'
|
||||
].join(' ');
|
||||
|
||||
// Meant to be imported asynchronously to avoid including CodeMirror in the main bundle
|
||||
const CodeEditorView = forwardRef<ReactCodeMirrorRef, CodeEditorProps>(function CodeEditorView({
|
||||
|
@ -40,6 +42,7 @@ const CodeEditorView = forwardRef<ReactCodeMirrorRef, CodeEditorProps>(function
|
|||
onChange,
|
||||
onFocus,
|
||||
onBlur,
|
||||
className,
|
||||
...props
|
||||
}, ref) {
|
||||
const id = useId();
|
||||
|
@ -75,9 +78,11 @@ const CodeEditorView = forwardRef<ReactCodeMirrorRef, CodeEditorProps>(function
|
|||
let styles = clsx(
|
||||
'peer order-2 w-full max-w-full overflow-hidden rounded-sm border',
|
||||
clearBg ? 'bg-transparent' : 'bg-grey-75',
|
||||
error ? 'border-red' : 'border-grey-500 hover:border-grey-700 focus:border-grey-800',
|
||||
error ? 'border-red' : 'border-grey-500 dark:border-grey-800',
|
||||
title && 'mt-2',
|
||||
height === 'full' && 'h-full'
|
||||
height === 'full' && 'h-full',
|
||||
codeMirrorClasses,
|
||||
className
|
||||
);
|
||||
|
||||
return <>
|
||||
|
@ -88,7 +93,6 @@ const CodeEditorView = forwardRef<ReactCodeMirrorRef, CodeEditorProps>(function
|
|||
className={styles}
|
||||
extensions={resolvedExtensions}
|
||||
height={height === 'full' ? '100%' : height}
|
||||
theme={theme}
|
||||
value={value}
|
||||
onBlur={handleBlur}
|
||||
onChange={onChange}
|
||||
|
|
|
@ -48,12 +48,12 @@ const CodeInjection: React.FC<{ keywords: string[] }> = ({keywords}) => {
|
|||
{
|
||||
id: 'header',
|
||||
title: 'Site header',
|
||||
contents: (<CodeEditor {...headerProps} ref={headerEditorRef} data-testid='header-code' autoFocus />)
|
||||
contents: (<CodeEditor {...headerProps} ref={headerEditorRef} className='mt-2' data-testid='header-code' autoFocus />)
|
||||
},
|
||||
{
|
||||
id: 'footer',
|
||||
title: 'Site footer',
|
||||
contents: (<CodeEditor {...footerProps} ref={footerEditorRef} data-testid='footer-code' />)
|
||||
contents: (<CodeEditor {...footerProps} ref={footerEditorRef} className='mt-2' data-testid='footer-code' />)
|
||||
}
|
||||
] as const;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue