diff --git a/src/renderer/components/tools/ReplPanel.tsx b/src/renderer/components/tools/ReplPanel.tsx new file mode 100644 index 0000000..e474e7f --- /dev/null +++ b/src/renderer/components/tools/ReplPanel.tsx @@ -0,0 +1,57 @@ +import { useState, useEffect } from 'react'; +import { X } from 'lucide-react'; +import { Textarea } from '@/components/ui/textarea'; +import { Button } from '@/components/ui/button'; +import { useSettingsStore } from '@/stores/settings-store'; +import { renderMarkdown } from '@/lib/markdown'; + +export function ReplPanel() { + const replOpen = useSettingsStore((s) => s.replOpen); + const setSetting = useSettingsStore((s) => s.setSetting); + const [source, setSource] = useState('# Markdown preview\n\nType here…'); + const [debouncedSource, setDebouncedSource] = useState(source); + + useEffect(() => { + const t = setTimeout(() => setDebouncedSource(source), 300); + return () => clearTimeout(t); + }, [source]); + + if (!replOpen) return null; + + const html = renderMarkdown(debouncedSource); + + return ( +
+
+ REPL — Markdown snippet preview + +
+
+