import React, { useEffect, useState } from 'react';
import ReactDOM from 'react-dom';
import { marked } from 'marked';
function JournalTab({ content, onChange }) {
const [isEditing, setIsEditing] = useState(false);
const renderedHtml = content?.trim() ? marked.parse(content) : '';
return (
{isEditing && (
Ctrl+Enter to preview
)}
{isEditing ? (
);
}
function HelpPanelManager({ tabs, activeTab, onTabSelect, onTabClose, onTabContentChange }) {
const [collapsed, setCollapsed] = useState(false);
useEffect(() => {
const handler = (e) => {
if (e.key === 'Escape' && activeTab) onTabClose(activeTab);
};
document.addEventListener('keydown', handler);
return () => document.removeEventListener('keydown', handler);
}, [activeTab, onTabClose]);
if (tabs.length === 0) return null;
const active = tabs.find((t) => t.label === activeTab) || tabs[0];
return ReactDOM.createPortal(
{/* Tab bar */}
{tabs.map((t) => (
onTabSelect(t.label)}
>
{t.label}
))}
{/* Content */}
{!collapsed && (
active.type === 'journal' ? (
onTabContentChange(active.label, val)}
/>
) : (
)
)}
,
document.body,
);
}
export default HelpPanelManager;