summaryrefslogtreecommitdiff
path: root/frontend/src/components/document/DocumentEditor.tsx
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-04-28 17:35:08 +0100
committerGitHub <noreply@github.com>2026-04-28 17:35:08 +0100
commitd513f93c84ae985738e0f696fcb72fa1153046ef (patch)
treed169fa48ce93f1e204a80b60ca9295772bc2fa63 /frontend/src/components/document/DocumentEditor.tsx
parent5aa3fafb4acfa89c7d04e84abf7861607733e8ce (diff)
downloadsoryu-d513f93c84ae985738e0f696fcb72fa1153046ef.tar.gz
soryu-d513f93c84ae985738e0f696fcb72fa1153046ef.zip
feat: document UI with contract blocks, expandable logs, and interaction controls (#97)
* feat: soryu-co/soryu - makima: Rename tasks to contracts in directive API and types * feat: soryu-co/soryu - makima: Add contract interaction panel with comment and interrupt * feat: soryu-co/soryu - makima: Build expandable contract log feed in StepsDiagram * feat: soryu-co/soryu - makima: Rename tasks to contracts throughout document UI and add contract block support * feat: soryu-co/soryu - makima: Add comment and interrupt controls to expanded step log feed * feat: soryu-co/soryu - makima: Audit and fix Document UI feature flag visibility and missing implementations * feat: soryu-co/soryu - makima: Add expandable step rows with live log feed in StepsDiagram * WIP: heartbeat checkpoint * feat: soryu-co/soryu - makima: Integrate all document UI components and final polish
Diffstat (limited to 'frontend/src/components/document/DocumentEditor.tsx')
-rw-r--r--frontend/src/components/document/DocumentEditor.tsx7
1 files changed, 5 insertions, 2 deletions
diff --git a/frontend/src/components/document/DocumentEditor.tsx b/frontend/src/components/document/DocumentEditor.tsx
index d50c093..2ef37fe 100644
--- a/frontend/src/components/document/DocumentEditor.tsx
+++ b/frontend/src/components/document/DocumentEditor.tsx
@@ -18,11 +18,13 @@ import {
import { $createHeadingNode } from '@lexical/rich-text';
import { StepsDiagramNode, $isStepsDiagramNode, $createStepsDiagramNode } from './nodes/StepsDiagramNode';
+import { ContractBlockNode, $isContractBlockNode } from './nodes/ContractBlockNode';
import editorTheme from './EditorTheme';
import AutoSavePlugin from './AutoSavePlugin';
import ContextMenu, { type ContextMenuAction } from './ContextMenu';
import './DocumentEditor.css';
import './nodes/StepsDiagram.css';
+import './nodes/ContractBlock.css';
interface DocumentEditorProps {
directiveId: string;
@@ -97,7 +99,7 @@ export default function DocumentEditor({
namespace: `DocumentEditor-${directiveId}`,
theme: editorTheme,
editorState: buildInitialEditorState(directiveId, title, goal),
- nodes: [HeadingNode, ListNode, ListItemNode, LinkNode, StepsDiagramNode],
+ nodes: [HeadingNode, ListNode, ListItemNode, LinkNode, StepsDiagramNode, ContractBlockNode],
onError,
editable: !readOnly,
};
@@ -115,8 +117,9 @@ export default function DocumentEditor({
for (let i = 0; i < children.length; i++) {
const child = children[i];
- // Skip the steps diagram node when extracting text
+ // Skip decorator nodes (steps diagram, contract blocks) when extracting text
if ($isStepsDiagramNode(child)) continue;
+ if ($isContractBlockNode(child)) continue;
const text = child.getTextContent();