'use client' import { useRef, useEffect } from 'react' import CodeMirror from '@uiw/react-codemirror' import { html } from '@codemirror/lang-html' import { css } from '@codemirror/lang-css' import { javascript } from '@codemirror/lang-javascript' import { EditorView } from '@codemirror/view' import { EditorState } from '@codemirror/state' interface CodeEditorProps { value: string onChange: (value: string) => void language: 'html' | 'css' | 'js' } export function CodeEditor({ value, onChange, language }: CodeEditorProps) { const editorRef = useRef(null) const extensions = [ EditorView.lineWrapping, EditorView.theme({ '&': { height: '100%', fontSize: '14px', }, '.cm-content': { padding: '12px', }, '.cm-gutters': { backgroundColor: '#1e293b', border: 'none', }, '.cm-lineNumbers .cm-gutterElement': { color: '#64748b', padding: '0 8px', }, }), EditorState.tabSize.of(2), ] const getExtensions = () => { const baseExtensions = [...extensions] if (language === 'html') baseExtensions.push(html()) if (language === 'css') baseExtensions.push(css()) if (language === 'js') baseExtensions.push(javascript()) return baseExtensions } return (
) }