"use client"; import { useEffect, useRef, useState } from "react"; import CodeMirror from "@uiw/react-codemirror"; import { css } from "@codemirror/lang-css"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { ExternalLink } from "lucide-react"; interface CssEditorProps { value?: string; onChange?: (value: string) => void; username: string; } export function CssEditor({ value = "", onChange, username }: CssEditorProps) { const iframeRef = useRef(null); const [iframeReady, setIframeReady] = useState(false); useEffect(() => { if (!iframeReady) return; const iframe = iframeRef.current; if (!iframe) return; const timer = setTimeout(() => { iframe.contentWindow?.postMessage( { type: "css-preview", css: value }, window.location.origin ); }, 150); return () => clearTimeout(timer); }, [value, iframeReady]); return (
{/* Header */}
Custom CSS CSS Reference
{/* Tabs */} Edit Preview onChange?.(val)} basicSetup={{ lineNumbers: true, foldGutter: false, dropCursor: false, allowMultipleSelections: false, indentOnInput: true, }} />